1.值栈:ValueStack,存储数据
root区【栈】:Action对象中的数据,其他数据
Context【Map结构】:
application: #application.user=>servletContext.getAttribute("user");
session
request
paramteres:#paramteres.id[0]=>request.getParamter("id");
attr[attribute]:从属性范围由小到大依次查找
action:Action对象
2.OGNL:对象图导航语言
<s:property value=""/> 显示
<s:bean var="引用" name="类的全路径">
<s:param name="属性">值</s:param>
</s:bean>
迭代处理的对象都会压入Context区域,访问迭代出来的对象必须加#
<s:iterator var="迭代出来的对象" value="集合" status="迭代状态">
...
</s:iterator>
if/else/elseif
集合的过滤
集合对象.{?#this.name=='值'}
?:符合条件的所有结果
^:符合条件的第一个结果
$:符合条件的最后一个结果
3.OGNL语句自定类型转换
Struts2.0框架不能够或者不能完整的进行自动类型转换时采用自定义类型转换
自定义类型转换器
1.开发一个类,extends StrutsTypeConverter
2.配置文件,声明自定义类型转换器
局部的类型转换器:
配置文件的名称: actionName-conversion.properties
配置文件的位置: 和Action放在同一个目录结构当中
配置文件的内容: Action中需要类型转换器的属性=自定义类型转换器的全路径
全局的类型转换器
配置文件的名称: xwork-conversion.properties
配置文件的位置: 在src目录下面
配置文件的内容: 需要进行类型转换的类型=自定义类型转换器的全路径
局部类型转换:只针对某一个Action的某一个属性进行转换
全局类型转换:对所有Action对象中该类型的属性进行转换
4.Struts2.0国际化
B/S结构中为网页提供多国语言的支持
1.B/S架构为每一个语言提供一套页面
缺点:修改页面风格,每一套都必须修改
2.B/S国际化是Struts2.0的半成品
只要提供一套页面,不同国家访问时就能看到相应的文字
1.知道用户的所在国家
浏览器使用国别码来识别地区
2.所在国家文字的提供,在一个页面中可以显示中文或者英文
e.properties{username password}
c.properties{用户名 密码}
login.jsp
占位符占位<input type="text" name="username"/>
Struts2.0国际化开发过程
1.提供文字的配置文件(资源文件)
1)位置:src目录下面
2)命名:xxx.properties
appRes_zh_CN.properties(中文的资源文件)
注意:在处理非拉丁语系的时候,要先转换成unicode编码
使用 native2ascii命令
native2ascii -encoding gbk 源文件名 目标文件名
native2ascii -encoding gbk appRes.properties appRes_zh_US.properties
appRes_en_US.properties(英文的资源文件)
2.在struts.xml文件中进行配置
<constant name="struts.custom.i18n.resources" value="appRes"></constant>
3.在jsp页面中使用占位符站位
使用Struts2.0提供的<s:text name="资源文件的key"/>进行占位
5.Struts2.0提供的数据格式校验
js校验:存在被用户篡改的风险
Struts2.0提供的校验步骤
1.获得数据:使用Action的属性进行封装
2.对获得的数据进行判断(方法)
Struts2.0的ActionSupport提供了validate方法进行数据格式校验
3.在Struts.xml中配置异常跳转
在Struts2.0体系中为异常以及错误定义了固定的result
name=input //
显示错误信息:<s:fielderror></s:fielderror>
<s:fielderror><s:param>key</s:param></s:fielderror>
数据格式校验的方法
js Struts2.0
优点: 客户端,效率高 安全
缺点: 容易被篡改 访问服务端,浪费资源
实际开发中:js+Struts2.0
6.Struts2.0拦截
拦截器:为访问Action的请求增加额外功能
保证程序的继续执行
7.如何开发一个拦截器
1.开发一个类 implements Interceptor
2.struts.xml配置文件
1 <!-- 声明拦截器 -->
<interceptors>
<interceptor name="MyInterceptor" class="zx.struts2.day3.interceptor.MyInterceptor"></interceptor>
</interceptors>
自定义了拦截器,Struts2.0提供的默认拦截器失效
2.在需要调用拦截器的action中配置
在Action中引用拦截器的顺序决定了拦截器的执行顺序
如果有多个拦截器是成组调用时,可以设置拦截器栈
Struts2学习笔记day03
最新推荐文章于 2024-09-21 10:38:43 发布