struts2笔记总结

Struts2总结

 

简介

1)三层架构:展示层  业务逻辑层   数据持久层

2struts2框架

1-展示层框架

2-mvc框架

3-apache公司

4-并不是struts1的升级版,是webwork升级

5-核心:核心控制器  拦截器

配置

1) 配置文件:

a) Struts-default.xmlstruts的默认配置

b) Default.propertiesstruts的常量

c) Struts.xml

i. Action配置

 

ii. 常量的配置

iii. 全局result

 

iv. 全局异常

 

v. 自定义拦截器的注册

 

d) Struts.properties:常量的覆盖(可以省略)

i. 开发阶段使用

1. 

ii. 运行阶段使用

1. 

请求响应的处理

1) 请求参数处理:

a) Action属性--------简单数据

b) Model领域对象--------数据多   完整的对象

c) ModelDriven接口------一种对象

2) 响应参数处理

a) 作为action属性-------值栈

b) 获取request等对象,存放到上下文中

3) 获取request等对象

a) actionCotext------map

b) 接口RequestAware

c) Servletactioncontext----原生态的request等对象

 

Action

Struts2将控制层分为两部分:核心控制器   action

Action类的总结:

1) 简单的Javabean类,尽量继承ActionSupport

2) 非单例

3) 必须提供空构造

4) Action的属性要符合Javabean的规范

OGNL表达式

1) 全程:对象导航图语言

2) 功能:可以在工程的任何文件(struts文件)中使用

3) 搭配struts2的标签使用更合适

4) 不同文件中的语法:

a) Jsp中:

i. 标签属性时Object:直接写

ii. 标签属性是String%{ognl}

iii. 不确定:统一%{ognl}

b) Action类:getText

c) 配置文件中:${ognl}

5) #  %  $:

a) #1-获取上下文中的数据(action2-jsp上定义map

b) %:在标签属性类型为string时获取ognl

c) $:在国际化资源文件中    在xml配置文件中ognl

值栈

1) 值栈的根root:存放的是action类对象

2) 栈的contextaction  request   session  application

Struts2标签

1) 控制标签

2) Ui标签

a) 替代form

b) 主题

3) 使用:先导入

 

国际化

1) 理解国际化的原理:

a) Locale:确定一个运行环境   zh_CN

b) 资源文件的定义:

i. BaseName:前缀

ii. 命名:baseName.properties   baseName_zh_CN.properties

2) Struts2对国际化的支持:

a) 分类:

i. action级  

1. 命名:basenameactionclassname

2. 位置:action所在的包

ii. 包级

1. 命名:basenamepackage

2. 位置:对应的包中

iii. 全局

1. 命名:同Javase

2. 位置:根

3. 配置:

 

b) 加载顺序:action---》包---》全局

c) 参数:

i. 占位符  {0}   {1}       最多10

ii. 使用ognl  ${}

文件上传下载

1) 文件上传

a) 单文件上传

i. 前台:method=post  enctype   加入file

ii. Action:指定三个属性

1. Fieldname

2. FieldnameContentType

3. FieldnameFileName

iii. 文件的限制:

1. Fileupload拦截器,已经在默认的拦截器栈中

a) 单文件大小

b) 文件类型

c) 文件后缀

2. 如何设置三个属性的值:xml文件中

 

b) 多文件上传

i. 将拦截器的三个属性改为数组或者list集合的形式即可

ii. 设置文件的总大小:通过一个常量来控制:

 

c) 错误提示消息处理:

i. 拦截器中规定了集合消息的key,在国际化的资源文件中覆盖这些key即可

 

2) 文件下载

a) Stream   的一个结果类型

 

Result结果类型

1) 默认:dispatcher:请求转发到jsp

2) Redirect:重定向到jsp

3) Chain:请求转发到action

4) redirectAction:重定向到action

5) stream:文件下载或者异步ajax

类型转换

Struts2对数据类型的转换封装非常完善,重点关注类型转换失败后的消息处理。

1) 类型转换失败后的跳转:跳转到input

a) 需要给action指定一个inputresult

2) 消息的回显:

a) 如果是ui标签,主题非simple:会自动回显

b) 如果是simple主题:需要手动回显:

i. El表达式   ${fielderrors.age[0]}

ii. <s:fielderror>获取

c) 如果不是ui标签:el表达式

3) 消息定制:国际化资源文件中:imvalid.fieldvalue.fieldname = xxxxxxxxxx

数据校验

1) 分类:

a) 编程式校验

b) 声明式校验(推荐)

i. 指定一个声明式校验文件xml

1. 命名:actionclassname-validation.xml/actionclassname-actionname-validation.xml

ii. 编写:

1. 字段校验器:

a) 先指定字段后指定校验器(推荐)

 

b) 先指定校验器后指定字段

 

2. 非字段校验器:不是针对某一个字段的校验

 

2) 短路校验

a) 原理:对同一个字段的多个校验器之间,如果上一个校验器失败了则后续校验器不在执行

b) short-circuit指定为true即可

3) 校验消息的定制:

a) 将错误提示的message放到消息资源文件中

b) message标签中使用key直接指定键即可

4) 自定义校验器:

a) 定义一个类实现Validator接口

i. ValidatorSupport:非字段校验器

ii. FieldValidatorSupport:字段校验器

b) 重写validate方法

c) 注册:

i. 在跟目录上新建一个文件:validators.xml

ii. 添加代码:

 

拦截器

1) 工作原理

 

2) 配置:

a) 指定拦截器:

b) 定义拦截器栈:

 

3) 自定义拦截器:

a) 定义一个类实现Interceptor或者继承AbstractInterceptor类

b) 重写intercept方法

c) 注册拦截器:

 

Action响应ajax请求

1) servletAPI耦合方式:借助于response获取响应out流完成

 

2) 借助stream结果类型

 


3) Struts内置的json插件

 

 

Struts2的零配置(注解)

1) struts2通过一个插件:struts2-convention-plugin-2.3.20.jar

2) 该插件可以完全抛弃struts2xml配置文件,甚至连注解也不用写

a) 包名中要含有action actions struts  struts2

b) Action类:要么继承action   要么名字的后缀是Action

c) 如果不写注解:

i. 会将action actions struts  struts2包的namespace映射为   /

ii. action actions struts  struts2包中的子包的namespace映射为  

1. Com.action.user    /user

iii. Actionname映射:将action后缀去掉后的剩余部分全部小写,如果包含多个单词则单词之间使用-分割

iv. 响应试图的映射:会到web-inf中的content目录中找:

1. Actionurl-resultname.jsp

2. Actionurl.jsp

3. Resultname.jsp

d) 注解:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值