📄 复习4.txt
字号:
#的作用:
1、显示request、session、applications值,具体实例如下:
<s:property value="#request.user.userName"/>
一个值:
<s:property value="#parameters.userName"/>
多个重名值:
<s:property value="#parameters.userName[0]"/>
2、过滤
1、取一批值
<s:iterator value="#request.users.users.{?#this.sex=='123'}" id="user" >
2、取一行的一个属性值
<s:property value="#request.users.users.{?#this.sex=='123'}.{userName}[0]"/>
3、定义hashMap
<s:set name="maps" value="#{1:'a1',2:'a2',3:'a3',4:'a4'}"/>
%的作用:相当于s:property,可以在struts2标签内显示值
<s:property value="#request.user.userName"/>
<s:set name="p_userName" value="%{#request.user.userName}"/>
或
<s:set name="p_userName" value="#request.user.userName"/>
$有两个主要的用途
用于在国际化资源文件中,引用OGNL表达式
${getText('userName')}:通过键名显示消息
${getText('birthday')}:可以取出action的属性值
${min};可以取出参数值
userName=用户名
password=密码
age=年龄
birthday=生日
userNameRequiredError=${getText('userName')}不能为空
pwdRequiredError=${getText('password')}不能为空
pwdLengthError=${getText('password')}的长度必在${minLength}和${maxLength}之间
ageValueError=${getText('age')}的长度必在${min}和${max}之间
birthdayError=${getText('birthday')}${birthday}的范围在${min}和${max}之间
${getText('userName')}是资源文件中已有的信息
${min}:是在LoginAction-validation.xml配置的参数信息
${birthday}取出单行文本<s:textfiled name="birthday">的信息
7、struts2.0与spring2.0的结合
1、在web.xml文件中指定spring的监听器,加载applicationContext.xml文件
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2、修改src根目下的struts.xml中的action标签,其class不再指向真正的Action类,而是spring的一个bean的ID名称
<action name="insert" class="insert" method="insert">
<result name="error">/error.jsp</result>
<result name="success">/succ.jsp</result>
</action>
2、在applicaitonContext.xml配置具体的action:
<bean id="insert" class="struts.MakeAction">
<property name="facade">
<ref local="facadeProxy" />
</property>
</bean>
8、在struts2中加载多个配置文件
在struts.xml中加入
<include file="struts-1.xml"/>标签
9、文件的上传与下载
1、在jsp页面中加入
<s:form method="post" action="file" enctype="multipart/form-data">
<s:file name="myFile"/>
</s:form>
2、在action中加入如下属性
public class FileAction
{
private File myFile;//及get set方法
private String myFileFileName;//及get set方法
private String myFileContentType;//及get set方法
public String execute()
{
int pos=this.myFileFileName.indexOf(".");
String last=this.myFileFileName.substring(post);
last=(new Date()).getTime()+last;
String path=ServletContextAction.getServletContext().getRealPath("/images")+"/"+last;
File out=new File(path);
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(myFile));
BufferedOutputStream bis=new BufferedOutputStream(new FileOutputStream(out));
//字节流的处理过程
}
}
7、struts2中的国际化
1、什么是国际化
不用改源代码就可以适应不同的国家语言
2、国际化实现的过程
1、在src根目下加入struts.properties文件,说明全局的properties文件名称,内容如下
struts.custom.i18n.resources=messages
2、在src根目下加入messages_语言_国家.properties文件,说明具体键名与消息
messages_en_US.properties
messages_zh_CN.properties
3、如果在properties文件中有中文,要将其转码
native2ascii -encoding utf-8 temp.txt messages_zh_CN.properties
4、在jsp页面中显示
jsp显示的处理
<s:text name="hello"/>
<s:property value="%{getText('hello')}"/>
2、代码中取值
3、国际化的参数
${getText('userName')}:通过键名显示消息
${getText('birthday')}:可以取出action的属性值
${min};可以取出参数值
8、资源文件的种类
1、全局的资源文件
文件名_语言_国家.properties
在struts.properties文件中说明资源文件的名称
2、包范围内的资源文件,在包内,包内的类可用
action类名_语言_国家.properties
3、action范围内的资源文件,只有当前Action才可以用
action类名_语言_国家.properties
4、支持继承
9、拦截器
已有拦截器:
1、加载struts-default.xml文件
<include file="struts-default.xml"/>
<package extends="struts-default">
<action>
</action>
</package>
2、在action中配置具体的拦截器
<action>
<interceptor-ref name ="timer" />
</action>
自定义拦截器:
1、必须继承于AbstractInterceptor,覆盖intercept方法
2、在struts.xml文件中说明具体的拦截器
<interceptors>
<interceptor name ="safe" class ="intercept.SafeIntercept" />
</interceptors>
3、在action中引用拦截器
<interceptor-ref name ="safe" />
10、校验框架:
自动校验:
xml校验:
1、国际化实现
1、struts.properties说明资源文件名称
2、加入资源文件
文件名_语言_国家.properties
2、在Action所在包中加入Action类名称-validation.xml文件,说明具体的校验规则。
3、在jsp页面是显示错误
<s:fieldError/>
或
<s:actionError/>
4、具体**-validation.xml文件的查找顺序:
1、类
2、实现接口
3、父类
4、包
5、全局校验
通过注解校验:在action属性get方法这前加入注解,如日期校验、
不能为空、长度校验、email。
让系统通过javsScript代码在客户端校验:
在form中加入validate="true"属性
<s:form validate="true">
</s:form>
只有下面的几种支持javaScript校验
required validator
requiredstring validator
stringlength validator
regex validator
email validator
url validator
int validator
double validator
手动校验:
1、Action继承于ActionSupport并实现Validatable接口,实现validate方法,
通过addActionError加入错误消息。
12、struts2.0的转换器(converter)
1、可以批量转化数据,可以将table中的多行信息转化为到Action中的List属性中,
命名格式是:
customer.buies[0].buyID
customer.buies[0].buyName
customer.buies[1].buyID
customer.buies[1].buyName
2、自定义转换器:可以将页面的字符串转化为自己需要的类型,具体实现如下
1、实现转化器
public class LocaleConvert extends DefaultTypeConverter
{
public Object convert(Map conext,Object value,Class toType)
{
//从客户到服务器传送的是一个字符串数组
//从服务到客户端传的是一个对象
}
}
2、说明转化器
1、全局级:在src根目录下加入xwork-conversion.xml文件,内容如下
类型=转化器类全路径
java.util.Locale=convert.LocaleConvert
2、类级:在类所在的包加入"类名-conversion.xml"文件,内容如下
属性名=转化器类全路径
loc=convert.LocaleConvert
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -