1. Struts2是基于请求响应模式的应用framework,由如下几个逻辑结构组成:
a) 控制器(Controller):控制整个framework组件协调工作。
b) 业务逻辑层(Business Logic):概念性组件,与具体的业务有关。
c) 数据逻辑层(Da
2. Java Web 应用结构的发展:
a) JSP独立、自主完成所有任务
b) JSP Model1:引入JavaBean
c) JSP Model2:采用MVC模式。JSP负责生成动态网页,Servlet负责流程控制,JavaBean负责业务逻辑。
3. 手工配置Struts2
a) 新建Web Project
b) 加入最小使用的jar(针对Struts2.2.0):
Commons-fileupload.jar/commons-io.jar/commons-logging.jar/ognl.jar/struts2-core.jar/xwork-core.jar/freemarker.jar/javaassist共8个。
c) 在web.xml中配置Struts2。使用一个过滤器进行处理。代码如下:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts.dispatcher.ng.filter.strutsPrepareAndExecuteFilter </filter-class> <filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
d) 在src目录下新建struts.xml配置文件。实际上是在WEB-INF中的class文件夹中创建struts.xml,但是myeclipse不支持显示WEB-INF下的class文件夹,因此在src中创建。
<?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="struts2" extends="struts-default"> <act <result name="success">/result.jsp</result> </act </package> </struts> |
e) 新建LoginAction,处理逻辑。Getter和setter方法默认调用(不要求该Act
f) 在JSP页面中,使用act
4. Struts2内置类型转换功能。Struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,Struts2 可以使用内建的类型转换器实现自动的转换;但对于自定义的对象类型来说,就需要我们自己指定类型转换的方式了。对于自定义的类型转换器来说需要提供3个信息:Act
可以使用Struts2框架自带的类型转换器StrutsTypeConverter简化类 型 转换 代 码 的 编 写 ,StrutsTypeConverter 继 承 于DefaultTypeConverter 父类,并且提供了两个抽象方法:convertFromString与convertToString,分别表示从页面的字符串转换为后台对象以及从后台对象转换为页面的字符串,我们只需实现这两个抽象方法即可实现类型转换。
全局类型转换。在src目录下新建xwork-conversion.properties,该文件的内容是待转换的类=转换器的名字,即com.shengsiyuan.bean.User=com.shengsiyuan.converter.UserConverter2
5. 编写的Act
具体执行过程:
a) 首先进行类型转换
b) 进行输入校验,执行validate方法
c) 如果出现错误,不执行execute,转向struts.xml中该act
使用addFieldError添加FieldError,在jsp中通过<s:fielderror/>显示该error。
错误与信息分为act
6. Struts2可以调用自定义方法。在Struts.xml中该act
7. Struts2校验分为两种:字段优先校验器(validate方法)和校验器优先校验器(有效的xml文件,放在待校验act
<validators> <field name=”username”> <field-validator type=”requiredstring”> <message>username can’t be blank!</message> </field-validator> <field> </validators> |
Struts2框架校验执行的先后顺序:
1. 首先执行框架校验(xml文件)
2. 执行自定义的校验方法
3. 执行validate校验方法
Struts.xml中的配置,局部优先于全局。
8. Struts2定义五个常量:
a) SUCCESS
b) FAILED
c) INPUT
d) ERROR
e) EXCEPTION
9. Struts2的分层体系架构:Act
10. Struts2分为模型驱动(将页面中属性定义成对象)和属性驱动。
a) 属性驱动灵活,准确;模型驱动不灵活;
b) 模型驱动更加符合面向对象的变成风格,使得我们获得的是对象而不是一个个离散的值。
c) 推荐使用属性驱动。
模型驱动需要在struts中调用servlet的api,例如使用ServletActionContext.getRequest获取请求对象等。
11. 采用请求转发的方式完成表单内容的添加会造成内容的重复插入(显示结果时进行刷新操作)。采用重定向的方式实现数据的添加不会导致数据的重复插入。
12. 拦截器(Intereptor):拦截器是struts2的核心,实现类似于Filter。用于在act
//拦截器定义 <interceptors> <interceptor name=”” class=””/> </interceptor> </interceptors> //在act <interceptor-ref name=””/> |
拦截器的配置步骤:
1. 编写实现Interceptor接口的类
2. 在struts.xml中定义拦截器
3. 在act
定义了自己的拦截器,将其配置到act