架设自己的java开发框架-控制层设计

08年03月14日

MVC的核心思想就是控制转发,将视图层的请求通过控制器转发到模型层,模型层的处理结果再通过控制器转给视图层。视图层采用JSP设计,数据提交给负责控制转发的servlet控制器。这里谈一谈控制器的设计

控制器主要作用是接受视图层请求,然后转发请求给模型层。因为视图对应一个模型或者可能对应多个模型而控制器只有一个为实现一个控制器转发到多个模型就需要使用接口,让所有模型都实现这个接口,而控制器仅对接口编程,这里定义一个接口action.java

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框架。

相关文章:

  • struts分模块开发
  • 基于Freemarker的MVC框架设计
  • java反射机制
  • struts应用
  • tomcat内存溢出检查
  • 原文链接: http://yustar.joomlar.cn/archives/253.html
  • 转载文章请注明: Yustar’s Blog
  • 分类: java

    [架设自己的java开发框架-控制层设计]共有:2 条评论

  • passerby :

    infoln–>infoIn

  • 傅v :

    我要架设泰讯N82的JAVA

  • 发表评论