Struts2 学习1
Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。
Struts2框架的大概处理流程如下:
1、加载类(FilterDispatcher)
2、读取配置(struts配置文件中的Action)
3、派发请求(客户端发送请求)
4、调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action )
5、启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)
6、处理业务(回调Action的execute()方法)
7、返回响应(通过execute方法将信息返回到FilterDispatcher)
8、查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面)
9、响应用户(jsp--->客户浏览器端显示)
10、struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)
学习一个开源框架,我们首先可以搭建一个简单的使用案例。首先创建一个web工程,把struts2 所依赖的最小jar包拷贝到项目的/WEN-INf/lib下
struts2-core-2.2.3.jar :Struts 2框架的核心类库
xwork-core-2.2.3.jar :XWork类库,Struts 2在其上构建
commons-fileupload-1.2.2.jar :文件上传组件,2.1.6版本后必须加入此文件
commons-io-2.0.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar :日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
freemarker-2.3.16.jar :Struts 2的UI标签的模板
javassist-3.11.0.GA.jar :操作字节码的jar
ognl-3.0.1.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
以上就是struts2.2.3依赖的最小jar包,特别是最后一个上传组件的jar包,以前版本不是必须的。如果用2.1.6以后的就需要加入lib目录中。
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
在/WEB-INF/classes下创建struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
</struts>