struts2配置
struts2核心配置文件约束
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
过滤器配置
<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>
常用常量配置
<constant name="struts.i18n.encoding" value="UTF-8" />
全局结果页面配置
<global-results>
<result name="list">/list.jsp</result>
</global-results>
局部页面配置 > 全局页面配置
type属性值
dispatcher / redirect 针对页面配置
chain (转发到action) / redirectAction (重定向到action) → 针对action跳转
数据封装
- 属性封装
(原生写法,声明属性值)
- 模型驱动
(实现ModelDriven接口)
- 表达式封装
(表单属性:| 实体类.属性 | 方式进行封装)
注(1):一个类中只能使用一种封装方式,且模型驱动优先!
注(2):表单name属性值跟实体类属性且一一对应
表达式封装和模型驱动封装
相同点:都可以将数据封装到实体类对象里面
不同点:
使用模型驱动只是把数据封装到一个实体类对象里面,在一个action里面不能使用模型驱动把数据封装到不同实体类对象里面
使用表达式封装可以不同的实体类对象中
封装数据到List集合
1、在action中声明list集合,实习其getter和setter方法
2、表单name属性值通过下标进行提交数据:list[0].username
封装数据到Map集合
1、在action中声明Mao集合,实习其getter和setter方法
2、表单name属性值通过key值进行提交数据
过滤器和拦截器的区别
过滤器:可以过滤一切文件
拦截器:只能拦截action
Servlet跟Action的区别
Servlet:默认在第一次访问的时候创建,只创建一次,是一个单实例对象
action:每次访问的时候创建,创建多次,是一个多实例对象
自定义拦截器
编写类,继承 MethodFilterInterceptor 类,通过配置文件跟action建立关系!
使用ognl表达式在JSP页面获取Session域对象的值
session.对象.属性