struts2笔记总结

来源:互联网 发布:创意个人域名 编辑:程序博客网 时间:2024/06/05 20:12

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) 注解:

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信而富逾期3个月怎么办 苹果6锁屏密码忘了怎么办 孕8个月咳嗽有痰怎么办 微信红包输了6万怎么办 红米3s开不了机怎么办 核载5人载了6人怎么办 我欠支付宝2万6怎么办 我47岁这个月经不来怎么办 两个月不来月经了也没怀孕怎么办 婴儿不吃奶粉母乳又不够吃怎么办 怀孕39周了还没反应怎么办 脸过敏了又红又痒怎么办 刚开的淘宝店没生意怎么办 我22岁长得显老怎么办 卡的钱被qq转走怎么办 招行u盾密码忘了怎么办 孩子上五年级了成绩非常差怎么办 红米3s开不开机怎么办 皮肤被虫子咬了红肿痒怎么办 微信被骗了1万多怎么办 6个月宝宝吃了纸怎么办 农行k宝扣了50块怎么办 4g流量用的太快怎么办 怀疑老公有外遇最明智的怎么办 咽喉疼怎么办最简单的方法如下 生完孩子后腰疼的厉害怎么办 眼睛进东西了弄不出来怎么办 18k金不给换黄金怎么办 我22岁欠了10万怎么办 1岁宝宝又吐又拉怎么办 月经10天了还没干净怎么办 舌头有异味怎么办是有口臭吗 快8个月羊水破了怎么办 25岁欠了50万债怎么办 28岁血压高150低压110怎么办 苹果6的4g网络慢怎么办 一个月染了6次头怎么办 五0二干在衣服上怎么办 刚怀孕见红了肚子不痛怎么办 我有外遇了老婆不离婚怎么办 套了牙套的牙疼怎么办