自己写个小的MVC框架吧,复习下基础知识。

自己写个小的MVC框架吧,复习下基础知识。_第1张图片


1. 页面提交数据

<form name="form1" action="/myApp/do" method="post">

<input type="input" name="name" value="nihao">
<input type="password" name="password" value="1234">

</form>

2. 获取浏览器提交的数据,封装为一个hashMap
private HashMap getRequestToMap(HttpServletRequest req) throws Exception {
req.setCharacterEncoding("utf-8");
HashMap infoIn = new HashMap();
for (Enumeration e = req.getParameterNames(); e.hasMoreElements ();)
{//获取页面中所有元素名
String strName = (String)e.nextElement();
String[] values = (String[]) req.getParameterValues (strName);
//根据名称获取对应的值
if (values == null) {//假如没有值
infoIn.put(strName, "");
} else if (values.length == 1) {//假如只有一个值
infoIn.put(strName, values[0]);
} else {//假如有多个值
infoIn.put(strName, values);
}
}
return infoIn;
}

3.  定义一个接口,让一个请求可以对应到多个模型,那么在控制器中就可以只针对这个接口进行调用。

3.1 public interface Action{
    public HashMap doAction(HashMap infoIn);
}

3.2 Action action = (Action) Class.forName(getActionName(systemName,logicName)).newInstance();
    HashMap infoOut = action.doAction(infoIn);

4. 返回视图

req.setAttribute("infoOut", infoOut);
RequestDispatcher rd = req.getRequestDispatcher("/"+ systemName +"/jsp/" + forwardJsp+ ".jsp");
rd.forward(req, res);

5. 配置web.xml

<servlet>
<servlet-name>xxxServlet</servlet-name>
<servlet-class>xxx.action.xxxServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>xxxServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

ok,这样一个最最简单的web框架就有了,只是一种简单的想法而已。总结,其实所有的web框架都是对servlet的封装,便于开发,便于web应用程序的维护,我们也可以吸取各种web框架的优点,自己实现一个web框架,权当学习吧。



你可能感兴趣的:(自己写个小的MVC框架吧,复习下基础知识。)