Struts1的核心控制器就是Servlet,随着功能的迭代,弊端开始出现。Struts2与Struts1差别很大,因为Struts2采用的是WebWork核心设计。Struts2采用大量的拦截器处理用户请求,从而允许业务逻辑控制器与Servlet API分离。
Struts2在MVC三层架构中的位置,只是表现层的解决方案,与业务层和持久层没有关系
环境配置
从struts官网下载最新的struts的jar包,从example项目中解压struts-blank的war包拷贝所需要的一些jar。
在web.xml中配置过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:自2.1.3版本开始,ActionContextCleanUp和FilterDispatcher都由StrutsPrepareAndExecuteFilter代替。
配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="main" extends="struts-default">
<action name="helloAction" class="action.HelloAction" method="sayHello">
<result name="success">welcome.jsp</result>
</action>
</package>
</struts>
Struts2处理流程
- 浏览器发送action请求
- 核心控制器FilterDispatcher根据请求决定调用合适的Action
- WebWork的拦截器自动请求应用通用功能,例如workflow,validation或文件上传等功能
- 回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作,既可以将数据保存至数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器他会调用业务逻辑组件来处理用户的请求。
- Action的execute方法处理结果信息将被输出到浏览器中,可以是Html页面、图像,也可以说pdf文档或其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。
Struts2标签
在JSP页面我们可以通过
<%@ taglib prefix="s" uri="/struts-tags" %>
导入Struts2标签库,和JSTL标签库类似。
- form:对应一个表单元素。
- checkbox:对应一个复选框元素。
- password:对应一个密码输入框。
- radio:对应一个单选框元素。
- reset:对应一个重设按钮。
- select:对应一个下拉列表框。
- submit:对应一个提交按钮。
- textarea:对应一个多行文本域。
- textfield:对应一个单行文本框。
网友评论