Struts2重要知识点总结

1.常用 常量

  (1)<constant name="struts.i18n.encoding" value="UTF-8"></constant>
  (2)name="struts.custom.i18n.resources" value="资源文件名"
  (3)name="struts.devMode" value="true"   自动刷新XML文件
  (4)name="struts.ui.theme" value="simple"


2.redirect重定向; dispatcher转发;  chain拼接;  redirectAction重定向Action;

    interceptor拦截器; 继承:Interceptor 或 AbstractInterceptor


  (1)getProxy().getMethod()获得所拦截的方法名; invoke()放行,继续; 
     getAction()获得被拦截的Acion
  (2)继承MethodFilterInterceptor抽象类,重写doIntercept方法 --拦截器方法过滤
  (3)includeMethods拦截   excludeMethods不拦截 +方法名


3.标签库OGNL(一)

  (1)struts访问静态方法
   <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>--配置XML
   <s:property value="#attr.对象.普通方法('参数')"/>
   <s:property value="@com.web.entity.对象.静态方法('参数')"/>
  (2)%{...}转义符
  (3)生成集合
     List:  {e1,e2,e3,e...}
     Map :  {key1:e1,key2:e2,key3:e3,.....}
  (4)'?','^'和'$'
     Session中有名称是stuList的集合,集合中有多个Stu对象.Stu类中有age属性
	#session.stuList.{?#this.age>20}  取 age大于20的子集合
	#session.stuList.{^#this.age>20}  取 第一个age大于20的Stu对象
	#session.stuList.{$#this.age>20}  取 最后一个age大于20的Stu对象


  (5)常用标签库
	①数据访问标签:
	  action:在JSP页面直接调用一个Action    executeResult属性:是否将Action的处理结果包含到当前页面,默认false即不包含 namespace属性:命名空间
	  include:在JSP页面中包含其他页面资源--value
	  property:输出某个变量
	  set:设置新变量
	  text:输出国际化消息
	  url:生成一个URL地址
	  date:格式化输出日期
	②action标签
	  namespace:指定所调用action所在的命名空间
	  executeResult:是否将action的处理结果包含到当前页面中,  默认:false 不包含
	③property标签
	  value:要输出的 属性 或 OGNL表达式
	  default:当值为null时输出的内容
	  escape: 默认为true --正常输出  false--作为html代码输出
	④set标签:
	  id:变量名;value:值;scope:作用域
	⑤date标签
	  name:日期
	  formate:指定日期输出格式"yyyy-MM-dd hh:mm:ss"
	  nice:指定是否输出指定日期与当前时刻之间的时差。可以设为true或者false,
	       该标签默认是英语显示时间 如 10 minutes ago 可用国际化资源文件了配置为中文
   	⑥逻辑控制标签
	  if/elseif/else

	  generator:将一个字符串按指定分隔符拆分为一个集合
		id:指定生成的集合的name,且放入pageContext
		count:所生成的集合中元素的总数
		separator:指定分隔符
		converter:转换器 将集合中的每个字符串转化为对象

	  iterator:迭代器 迭代输出集合
	    id:别名
	    value:被迭代的集合
	    status:
		count:返回当前迭代了几个元素
		index:返回当前迭代元素在集合中的索引
		even:迭代输出下标索引为 偶数 的元素
		odd:下标索引为 奇数 的元素
		first:当前迭代是否是第一个元素
		last:当前迭代是否是最后一个元素


4.Struts2标签库(二)



  (1).表单元素的name与value属性 (name映射Action的属性)name有输出的效果,无需指定value
      例:<s:textfield name="person.name" value="${person.name}"/>等效于
	 <s:textfield name="person.name"/>

  (2).常用表单标签 
      ①.<s:form action="" namespace=""/>
      ②.<s:textfield/>文本框 <s:password/>密码框 <s:textarea name="" label="" cols="" rows=""/>文本区域
      ③.复选框:checkboxlist
	    <s:checkboxlist name="" label="你的爱好"
	    list="#{'java':'JAVA','.net':'.NET','ajax':'AJAX'}"
            listKey="key" listValue="value"/>
	    listKey:(用Map的key做)复选框的value listValue:(用Map的value做)复选框的文本
      ④.单选按钮:radio   value="按钮的值":默认选中项
      ⑤.下拉列表框:select
	     multiple="true"--多选列表框 value:指定默认选中项

  (3).非表单标签(导入:struts2-dojo-plugin-2.2.1.jar)
      ①.tree/treenode树形标签
  	jsp中引入 uri="/struts-dojo-tags"
  	<title>上面 <sdt:head parseContent="true"/> 
	<sdt:tree lable="" id="">      一级
            <sdt:treenode name id> 二级
		<sdt:treenode name id/>	三级	
		<sdt:treenode name id/>
		<sdt:treenode name id/>
            </sdt:treenode> 
	</sdt:tree>
      ②.Datetimepicker日历标签

	<sx:datetimepicker name="某个具体日期"/>
	displayFormat:指定日期的显示格式
	displayWeeks:是否显示星期
	toggleDuration:指定日期选择框出现,隐藏的时间差
	toggletype: plain/wipe/explode/fade 指定出现,隐藏的方式
	type: date/time 日期选择框的类型 日期选择框/时间选择框
	value:指定文本框的日期,时间 today:当前时间
	weekStartsOn:指定一周的第一天;0.周日; 6.周六


5.表单重复提交token

  <s:token/> <s:actionerror/> 错误信息
  资源文件名称自定义 内容:struts.message.invalid.token=自定义提示信息
  native2Ascii命令进行转换Asii码
  在XML中导入资源文件name="struts.custom.i18n.resources" value="资源文件名"
  定义token拦截器<interceptor-ref name="token"/>
  重复提交时转向的页面:<result name="invalid.token"/>
  


6.自定义类型转换器

     struts2的四种主题:simple/xhtml(默认)/css_xhtml/Ajax
  (1)转换器类必须继承StrutsTypeConverter抽象类,
     实现convertFromString()--字符串转成符合类型 与convertToString()--符合类型转为字符串
  (2)局部转换器配置
	名称:Action名-conversion.properties
	位置:与action同一个包
	内容:Action属性名=包名+转换器类名
     全局转换器配置
	名称:xwork-conversion.properties
	位置:src根目录下
	内容:Action属性所在的包名+类名=包名+转换器类名
  (3)input类型转换错误信息
	Action必须继承ActionSupport
	xml中配置input结果映射
	  局部错误信息:
		名称:与Action 同名
		位置:与Acting 同一个包
		内容:invalid.fieldvalue.操作的属性名=自定义错误信息
	  全局错误信息:
		名称:无要求
		位置:src
		内容:xwork.default.invalid.fieldvalue=字段{0}的值无效
	在xml中引入错误信息资源文件

7.自定义数据校验

        (1)Action必须继承ActionSupport (重写validate方法)
  this.addFieldError("被校验的属性名","错误信息");在JSP页面提示错误信息
(2)使用validateXxx()方法  (对某一个方法进行针对校验)
  xxx:方法名,首字母要变大写.  例:regist方法 用validateRegist方法校验
  对于方法名为doxxx的方法应去掉do后首字母大写
   
public class MathAction extends BaseAction{
	private static final long serialVersionUID = 1L;
	private Digit dig;//被除数
	//数据校验
	public void validateChu(){
		flag="index";
		if(dig.getB()==0){
			this.addFieldError("dig", "被除数不能为0");
		}
	}
}
(3)xml中配置input结果映射


未通过校验则提示错误信息并返回input结果,终止action

8.内置校验器

	(1)添加校验配置文件:
	     名称:Action类名-validation.xml
	     位置:与被校验的Action同一个包
	 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
	---------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
  <validators>
  	<field name="admin.aid"><!-- 被验证的属性名 -->
  		<field-validator type="required" short-circuit="true">
  		<message>账号不能为空</message>
  		</field-validator>
  	</field>
  	<field name="admin.pwd"><!-- 被验证的属性名 -->
  		<field-validator type="requiredstring" short-circuit="true">
  		<message>密码不能为空</message>
  		</field-validator>
  		<field-validator type="stringlength" short-circuit="true">
  			<param name="maxLength">18</param>
  			<param name="minLength">6</param>
  		<message>密码长度应在${minLength}-${maxLength}位之间</message>
  		</field-validator>
  	</field>
  </validators>
<pre>(2)无需被校验拦截的方法
		<interceptor-ref name="defaultStack">
				<param name="workflow.excludeMethods">queryAllAdmin,delAdmin</param>
		</interceptor-ref>

<!-- 登陆方法拦截器栈 -->
<interceptors>
	<interceptor name="loginInter" class="com.web.interceptor.LoginInterceptor"></interceptor>
	<interceptor-stack name="loginStack">
		<interceptor-ref name="loginInter">
			<param name="excludeMethods">adminLogin</param><!-- 无需拦截登陆方法 -->
		</interceptor-ref>
		<interceptor-ref name="defaultStack"/>
	</interceptor-stack>
</interceptors>




                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值