MVC的核心思想就是控制转发,将视图层的请求通过控制器转发到模型层,模型层的处理结果再通过控制器转给视图层。视图层采用JSP设计,数据提交给负责控制转发的servlet控制器。这里谈一谈控制器的设计
1 2 3 4 5 | package com.gd; import java.util.*; public interface Action{ public HashMap doAction(HashMap infoln); } |
然后在控制器中针对接口进行处理:
1 2 | Action action = (Action) Class.forName(getActionName(systemName,logicName)).newInstance(); HashMap infoOut = action.doAction(infoln); |
其中getActionName为实现接口的类以及所在的包名
1 2 3 4 | private String getActionName(String systemName,String actionName) throws IOException Exception{ return "com."+systemName+".action"+actionName; } |
最后一步是返回到视图层:
1 2 3 | req.setAttribute("infoOut",infoOut); ResquestDispatcher rd = req.getRequestDispatcher("/"+systemName+"/jsp/"+forwardJsp+".jsp"); rd.forward(req,res); |
最后一步定义web.xml,让所有do为后缀的请求都转入控制器进行分派
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?xml version="1.0" encoding="gbk"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>web.xml的示例</display-name> <description>控制器示例</description> <!--定义控制器--> <servlet> <servlet-name>gdServlet</servlet-name> <servlet-class>com.gd.action.GdServlet</servlet-class> </servlet> <!--拦截所有以do为后缀的请求--> <servlet-mapping> <servlet-name>gdServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> |
其实struts框架实现的控制转发原理就是上述原理,不过是做的更完善一点,结合自己的项目通过这样的设计完全可以设计一个更简便的web框架。
相关文章:
分类: java
【上篇】google 笔记本工具
【下篇】Joomla中看互联网的分层开发


infoln–>infoIn
我要架设泰讯N82的JAVA