Struts笔记.docx
- 文档编号:4958865
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:30
- 大小:945.88KB
Struts笔记.docx
《Struts笔记.docx》由会员分享,可在线阅读,更多相关《Struts笔记.docx(30页珍藏版)》请在冰豆网上搜索。
Struts笔记
Struts2
Struts21
1.Struts2是什么?
3
2.导入Struts2的框架包4
3.核心过滤器:
5
4.配置struts.xml5
4.struts2整个过程6
5.自定义Action6
5.1.定义action的步骤6
5.2.请求参数三种方式6
6.constant常用配置9
7.常见错误10
8.配置多个xml10
9.通配符*11
10.result的type11
11.result的type到action13
12.获取web对象的三种方式13
13.拦截器14
14.拦截器和过滤器的区别?
16
15.转换器Converter16
16.国际化:
切换不同的语言显示17
17.上传文件18
18.下载文件流程20
19.验证validation21
20.Token26
21.json的支持26
22.OGNL27
23.struts2的标签的学习28
23.1.Struts2标签的作用28
23.2.Struts标签分类28
23.3.Struts标签的使用28
23.3.1.在要使用标签的jsp页面引入标签库28
<%@tagliburi="/struts-tags"prefix="s"%>28
23.3.2.标签的讲解28
24.异常29
1.Struts2是什么?
是一个MVC的框架,Struts2是在控制器上controller
Struts2=Servlet
请求的流程
2.导入Struts2的框架包
3.核心过滤器:
4.配置struts.xml
标记和属性解释
--package
naem:
唯一标识符
namespace:
作为路径的一部分
extends:
必须直接或者间接继承struts-default这个包-->
--action真的请求的一个文件配置
name:
访问进行配置的一个字符串
class:
访问的类对象属于哪个类类的路径
method:
要执行的方法
-->
--作为响应的
name:
与方法返回的字符串进行匹配配置一致的执行result中的路径
type:
响应的方式(重定向,转发)这里默认请求转发
-->
4.struts2整个过程
见图
5.自定义Action
5.1.定义action的步骤
(1)继承ActionSupport
(2)定义的方法publicString方法名()throwsException{}
(3)属性要与页面请求提交的数据一致,必须要有set方法
5.2.请求参数三种方式
(1)与请求的表单一致
(2)在struts.xml中配置固定的参数
(3)页面中传一个对象
reslut的配置
6.constant常用配置
--只要是action的请求或者其他请求都会被struts过滤.后面的请求的命名方式-->
--当struts.xml文件改变时自动刷新-->
--开发者模式-->
开发者的错误信息都会总结在页面上
例如:
7.常见错误
(1)没继承struts-default
(2)package的name属性重复
8.配置多个xml
在开发中配置多个xml文件,核心空难呢过过滤器只读取struts.xml,所有需要在struts.xml引入其他的xml配置文件
9.通配符*
注意:
在一个package中通配符如果第一个匹配成功
10.result的type
结果页面的类型
结果页面使用
name --逻辑视图的名称
type --跳转的类型,值一些,需要掌握一些常用的类型。
常见的结果类型去struts-default.xml中查找。
*dispatcher --转发.type的默认值.Action--->JSP
*redirect --重定向.Action--->JSP
*chain --多个action之间跳转.从一个Action转发到另一个Action. Action---Action
*redirectAction --多个action之间跳转.从一个Action重定向到另一个Action.Action---Action
*stream --文件下载时候使用的.
a)响应到页面
转发和重定向区别?
转发显示上一次的url地址,共享上一次的请求(action)
重定向当前页面的url地址,不共享请求信息
11.result的type到action
转发action那么该页面存储所有的转发信息(action)
Servlet与action的区别?
Servlet只会初始化一次,线程不安全,也就是说Servlet只有对应的一个对象,是单例模式.
一般在Servlet中一般不定义的成员变量,在方法定义变量
action每次请求都是一个新的对象,线程时安全的,是多例模式.
12.获取web对象的三种方式
a.action获取web对象
b.servlet获取web对象
c.实现接口ServletRequestAware,ServletContextAware
13.拦截器
Struts2中核心功能就是使用拦截器实现的.拦截器原理是使用动态代理的实现的
自定义拦截器
(1)定义拦截器实现接口Interceptor
(2)实现接口的方法,在Intercept中写业务逻辑
(3)返回与result的name值相同或者到本应指向的目的invocation.invoke()
(4)在Struts.xml中配置信息
i.package中配置
ii.在action之中引用
iii.拦截器栈
14.拦截器和过滤器的区别?
a)语法:
拦截器实现的是Interceptor接口过滤器实现Filter接口
b)拦截方式:
过滤器是拦截根据url拦截的,拦截器是通过action自己配置的拦截
拦截器与过滤器的区别:
1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
6.配置文件,拦截器实现的是Interceptor接口过滤器实现Filter接口
15.转换器Converter
对页面数据到action之间的数据类型的转换,通常我们在项目定义的日期转换较多
错误:
404resultinput
如果格式与action格式不能进行转换会自动返回input值,所以在struts.xml的action配置中定义一个result的name等于input来响应该错误
自定转换器
(1)继承StrutsTypeConverter
(2)重写该接口的方法
(3)配置
a)全局:
对所有的日期类型都有效
在跟目录(src)创建一个新的properties文件
文件名为:
xwork-conversion.properties
b)局部:
配置文件在该action的包建立与该action名字相同的文件
16.国际化:
切换不同的语言显示
1.语言配置文件
a)每种配置文件显示不同的语言
文件起名规则:
基名_语言.properties
要求所有语言配置文件的基名相同并且所有的键名一致
2.在struts.xml中添加配置
3.在action中会自动获取客户端默认的一个语言环境
4.动态切换在访问请求后面添加
request_locale=语言编码
例如:
注意:
因为Struts2有一个
国际化的拦截器,会读取请求中的语言格式,如果请求中没有该格式,那么就读取客户端浏览器中语言配置中的第一个语言,查找与该语言相匹配的语言配置文件,读取该文件中的内容,如果第一个不匹配,那么就继续往下查找直到最后都没有,以项目的显示环境为主.
17.上传文件
1)表单中类型=enctype=”multiport/form-data”
2)在action设置对应的变量
(1)与页面相对应的File文件变量名:
例如:
Fileimage
(2)获取文件的名:
file变量名FileName例如:
StringimageFileName
(3)定义当前的上传的的路径:
一般配置Struts.xml中
3)获得真实路径:
判断路径是否存在,不存在创建
4)拷贝
FileUtils.copyFile(源文件,目标文件);
5)获得文件的新名字
6)设置图片的上传大小
18.下载文件流程
action中的属性:
Struts.xml配置:
19.验证validation
strusts2中的服务器端验证,为了提高安全性,在服务端也做了验证.
一般在开发中,使用前端js验证,因为这样如果不符合要求,不会提交到服务器,这样可以减免一部分服务器的压力.
xml配置验证
1、全局验证(验证所有与execute签名相同的方法)
在验证的action所在包下,建立一个xml文件格式:
action类的名字-validation.xml
2、部分验证(选择性的验证某些与execute签名相同的方法)
在验证的action所在包下,建立一个xml文件格式:
action类的名字-action的名字-validation.xml
注意:
文件名:
要将此文件放于Class文件相同的目录。
如果在Action类在struts配置中有多个action实例(actionname),那么对应某个action的验证文件名规则如下:
文件名:
例如:
UserAction-login-validation.xml
(注意:
上面的
使用validate方法验证
1、全局验证(验证所有与execute签名相同的方法-struts2的功能方法)
1、重写ActionSupport的validate()方法,这个方法会验证所有与execute方法签名相同(publicStringmethodName(){})的方法
2、如果不符合要求,调用addFiledError(错误的名字,错误的具体描述)
3、如果错误集合不为空(验证失败),会返回input视图
4、在要显示的页面使用EL表达式获取错误信息
2、部分验证(选择性的验证某些与execute签名相同的方法)
1、定义如下格式方法(其中的validateLogin是需要验证的publicStringlogin(){}方法)
publicvoidvalidateLogin(){
}
2,3,4步骤同上
null和""区别?
null对于字符来说,没有地址
""有地址,只是通过这个地址找到的值,""
验证器
[CDATA[具有特殊符号的字符串]]
--找到要验证的字段-->
--15验证器之一-->
--验证器的参数-->
--验证不通过的时候,错误信息字符串-->
以下是各类现场级和非现场验证在Struts2的列表:
日期验证器:
Birthdaymustbewithin${min}and${max}
double验证器:
Percentageneedstobebetween${minExclusive}
${maxExclusive}(exclusive)
email验证器:
Mustprovideavalidemail
表达式验证器:
ANon-FieldLevelvalidatorthatvalidatesbasedonregularexpressionsupplied.
FailedtomeetOgnlExpression....
int验证器:
Ageneedstobebetween${min}and${max}
正则验证器:
[CDATA[([aAbBcCdD][123][eEfFgG][456])]]>
中文正则表达式:
[\u4e00-\u9fa5]
必须验证器:
usernamemustnotbenull
requiredstringvalidator:
usernamemustnotbenull
stringlength验证器:
Yourusernameneedstobe10characterslong
url验证器:
Invalidhomepageurl
20.Token
1)在界面的form表单中任意位置添加
token/> 2)在Struts.xml添加拦截器 21.json的支持 json: 符合JavaScript标准以键值对表示,作为数据交换的介质. 1.之前的java中将需要的数数据转换成json传递页面,而现在只要action只要继承json-default JSON的注解 放在get属性名()放之上 22.OGNL OGNL是Object-GraphNavigationLanguage的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。 它使用相同的表达式去存取对象的属性。 简而言之,就是通过键获取值 1.ognl表达式写在struts2中: ${名字} 2.ognl表达式写在jsp中: %{名字},%大部分可以省略,跟url标签结合的时候不能省略 23.struts2的标签的学习 23.1.Struts2标签的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。 实现了更好的代码复用。 Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。 包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用 23.2.Struts标签分类 1.UI标签: (UserInterface,用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签 2.非UI标签,主要用于数据访问,逻辑控制等的标签。 非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的) 3.ajax标签 23.3.Struts标签的使用 23.3.1.在要使用标签的jsp页面引入标签库 <%@tagliburi="/struts-tags"prefix="s"%> 23.3.2.标签的讲解 debug>调试模式 token>在表单中放置重复提交 Struts2的标签简化开发,其实相对来说他就是EL表达式和JSTL表达式以及HTML,效率有所降低. 24.异常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)