最近在学JSP时了解到网站框架的概念。流行的网站框架可以简化开发,提高效率。过去的页面是通过Servelt进行前后台的数据交换,前端页面也镶嵌了很多JSP代码。像这样的<% //jsp脚本 %>
,这造成了页面的严重耦合,不过根据Webwork框架发展起来的Struts 2.0通过引入标签库解决了这个问题,并且实现了MVC的较好实现。
MVC(model view controller)分别表示对象,视图和控制器。在网站项目中模型是进行数据处理的,而视图就是所看到的网页,控制器是根据用户的请求而判断呈现那个视图的选择器。
Struts 2.0中对MVC的实现结构:
视图:JSP网页,freemarker…etc.
模型:一般都是javabean,就是一个普通的java类(POJO)
控制器:struts的拦截器(Interceptor)FilterDispatcher,Action代理,用户自定义Action,这里的拦截器就是拦截用户的请求的,每当你提交一个表单,拦截器就会获得你的表单申请,并且通知action代理寻找
xxx.action.
<form action="xxx.action" method="post">
<!--some information-->
</form>
Action代理机制
这个是比较好理解的,一个action有一个公司,公司有会搞互联网的,有会造石油的,这些公司都会去工商局注册,让工商局知道这个公司会干什么,当有人要去搞事情的时候,他会去工商局找有哪些公司会搞自己要搞的事情。
这里的action就是工商局,表单提交后,它会在自己的注册表单中找到xxx.action的注册信息,然后自动通知action干活,处理表单。
action的注册在struts.xml文件的注册信息:
<action name="actionName" class="action类的路径">
<result name="login">/xxx.jsp</result>
<!--.....一些选择-->
</action>
action的注册信息找到之后,struts会执行action类里的代码,这些代码会调用模型,获取数据库信息,更新前端页面。然后返回几个固定的字符串。login,success,fail..etc,然后返回struts.xml中寻找对应name等于返回值字符串的结果<result>
标签。呈现当中的视图。
用户自定义Action和javabean模型功能区别
用户自定义的Action主要功能是返回处理结果字符串,不过他也有调用
javabean职责。模型javabean负责具体的数据处理,而用户自定义的 Action负责javabean级别的调度。action代理负责用户自定义action级别的调度。action的调度工作相对简单,主要是查询action的注册信息。
如此看来,struts 2.0对MVC的实现算是很不错的