Struts2

  • 在web.xml中配置struts的过滤器

      <filter>
         <filter-name>struts2</filter-name>
         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      <filter-mapping>
    	 <filter-name>struts2</filter-name>
    	 <url-pattern>/*</url-pattern>
      </filter-mapping>
    

1:自定义日期转换器:

  1. 自定义转换器类

     public class MyDateConverter extends StrutsTypeConverter{
    		  //把字符串转换成对象类型
    		public Object convertFromString(Map content,String[] values,Class toClass){
    			   return null;
    			   }
    		  //把对象转换成字符串
    	     public String convertToString(Map content,Object o){
     			   return null;
    		       }
          }
    
  2. 在src目录下创建xwork-conversion.properties文件:

    	java.utils.Date=自定义的转换器
    

2:struts表单验证

  1. 方法一:重写validate方法

     @Override
        public void validate() {
            if(StringUtils.isEmpty(user.getUsername())){
                addFieldError("username","用户名不能为空");
            }
          }
    

    *表单一定要用struts的标签
    *该方法是全局的,action的所有方法都会生效,可以再不需要验证的方法上添加@SkipValidation

  2. 方法二:写一个方法:validate+需要验证的方法名(方法名首字母大写)

  3. 方法三:在action的目录下写一个配置文件:Action名-validation.xml(局部:Action名-方法名-validation.xml)

      <validators>
         <field name="password">//方式一
        	 <field-validator type="requiredstring">
         	   <param name="fieldName">password</param>
          	   <message>密码不能为空。。。</message>
      	     </field-validator>
    	 </field>
    	  <validator type="requiredstring">//方式二
      		  <param name="fieldName">username</param>
      		  <message>用户名不能为空...</message>
     	  </validator>
      </validators>
    

3:struts的文件上传

  1. form表单提交方式是post,表单的enctype="multipart/form-data"

  2. 上传文件的类型限制
    1:写MIME类型

    <interceptor-ref name="defaultStack">
        <param name="fileUpload.allowedTypes">image/png,image/jpeg</param>
    </interceptor-ref>
    

    2:写文件的扩展名

    <interceptor-ref name="defaultStack">
        <param name="fileUpload.allowedExtensions">png,jpeg</param>
    </interceptor-ref>
    
  3. 文件上传自定义错误显示
    1:配置一个资源文件fileuploadmessage.properties

    struts.messages.error.uploading=Error uploading: {0}
    struts.messages.error.file.too.large=The file is to large to be uploaded: {0} "{1}" "{2}" {3}
    struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}
    struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}
    	*{0}表单的字段名,{1}表示文件名,{2}表示临时文件名,{3}表示文件类型
    
  4. 文件上传大小限制

    <constant name="struts.multipart.maxSize" value="最大值(byte)"></constant>
    

4:文件下载

  1. 创建一个Action,定义一个输入流inputStream和获取该流的方法

     public class DownloadAction extends ActionSupport {
    	 private InputStream inputStream;
    	 private String fileName;
    	 public String download() throws FileNotFoundException {
    	 String path="C:\\Users\\dongdong\\Desktop\\91686673E040A9726D08203E34BCFD50.jpg";
    	 inputStream=new FileInputStream(path);
    	   return SUCCESS;
    		}
        public InputStream getInputStream() {
            return inputStream;
    	    }
    	}
    
  2. 然后配置action,inputNamecontentDispositioncontentType

    <action name="download" class="com.xdd.action.DownloadAction" method="download">
        <result name="success" type="stream">
          <param name="inputName">inputStream</param>
          <param name="contentDisposition">attachment;filename=91686673E040A9726D08203E34BCFD50.jpg</param>
          <param name="contentType">application/octet-stream</param>
        </result>
     </action>
    

5:OGNL表达式

  • 导入struts标签库

     <%@ taglib prefix="s" uri="/struts-tags" %>
    
  • 调用静态属性

     <s:property value="@java.lang.Integer@MAX_VALUE"/>
    
  • 调用静态方法
    1:先设置struts.ognl.allowStaticMethodAccess的值为true

     <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
    

    2:调用方法:

     <s:property value="@java.lang.Math@random()"/>
    
  • 封装List数据和Map数据

     <s:radio list="{'男','女'}" name="gender" label="性别"/>
     <s:radio list="#{'meal':'男','femeal':'女'}" name="gender" label="性别"/>
    
  • OGNL在xml中的使用

     <param name="contentDisposition">attachment;filename=${@java.net.URLEncoder@encode(fileName,"UTF-8")}</param>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值