Struts2_day04笔记
Struts2_day04笔记
上次课内容回顾
- OGNL表达式
- OGNL的概述
- OGNL:对象图导航语言,是一门功能强大的表达式语言。
- OGNL的功能
- 调用对象的方法
- 调用对象的静态方法
- 表达式串联
- 访问ActionContext和OgnlContext数据
- OGNL独立的表达式:
- Java环境下入门
- Struts2环境下入门
- 值栈
- 值栈的概述
- ValueStack:是一个接口,实现类OgnlValueStack。是数据的中转站,贯穿了整个Action,有一个Action的实例,就会创建一个ValueStack对象。
- 值栈的内部结构
- Root :CompoundRoot,就是一个ArrayList。
- Context :OgnlContext,就是一个Map。
- ActionContext和值栈关系
- ActionContext获得值栈的引用。
- 获得值栈
- 通过ActionContext获取
- 通过request获取
- 操作值栈
- 利用Action本身在栈中的特点,Action中的属性。
- 手动操作值栈:
- 获取值栈的数据
- OGNL获取:<s:property value="…"/>
- EL获取值栈的数据
- 底层增强request.getAttribute("");
- ONGL特殊字符
- #号
- 获取context数据
- 构建map集合
- %号
- 强制解析OGNL
- $号
- 在配置文件中使用OGNL
Struts2的拦截器(*****)
拦截器概述
什么是拦截器
- Interceptor:拦截器,起到拦截Action的作用。
- Filter:过滤器,过滤从客户端向服务器发送的请求。
- Interceptor:拦截器,拦截是客户端对Action的访问。更细粒度化的拦截。(拦截Action中的具体的方法)。
- Struts2框架核心的功能都是依赖拦截器实现。
Struts2的执行流程
客户端向服务器发送一个Action的请求,执行核心过滤器(doFilter)方法。在这个方法中,调用executeAction()方法,在这个方法内部调用dispatcher.serviceAction();在这个方法内部创建一个Action代理,最终执行的是Action代理中的execute(),在代理中执行的execute方法中调用ActionInvocation的invoke方法。在这个方法内部递归执行一组拦截器(完成部分功能),如果没有下一个拦截器,就会执行目标Action,根据Action的返回的结果进行页面跳转。
拦截器入门:
搭建Struts2的环境
编写拦截器类
- 编写一个类实现Interceptor接口或者继承AbstractInterceptor类。
对拦截器进行配置
- 定义拦截器进行配置
- 定义一个拦截器栈的方式
CRM的权限拦截器
实现用户登录的功能
创建表和实体
- 创建表
CREATE TABLE `sys_user` (
`user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`user_code` varchar(32) NOT NULL COMMENT '用户账号',
`user_name` varchar(64) NOT NULL COMMENT '用户名称',
`user_password` varchar(32) NOT NULL COMMENT '用户密码',
`user_state` char(1) NOT NULL COMMENT '1:正常,0:暂停',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
- 创建实体
提交数据到Action
ActionàServiceàDAO
- 编写Service
- 编写DAO
根据结果进行页面跳转
实现权限拦截器
编写权限拦截器
配置拦截器
Struts2的标签库
通用标签库
判断标签
- <s:if>、<s:elseif>、<s:else>
- <s:iterator>
- 其他常用的标签
- <s:property/>
- <s:debug/>
- <s:date />----在页面上进行日期格式化。
UI标签库(方便数据回显)


浙公网安备 33010602011771号