struts2上传的问题

5.    在这里我加一个struts2的一个上传验证的问题

上传时我们可以这样来验证
//判断上传的文件是否合要求
    public boolean filterType(String []types){
        //这里用的是 上传的file对象的方法length
        //上传的类型都是二进制,所以我们就自己找后缀名
        String fileType = uploadUtil.getExt();
        for(String type : types){
            if(! type.equals(fileType)){
                return false;
            }
        }
        System.out.println("go to to to");
        return true;
    }

    //判断文件的大小
    public boolean filterLength(long length){
        //length 就以字节为单位的 1024*1024*3 3M
        //这里用的是 上传的file对象的方法length
        if(uploadUtil.getUpload().length() > length){
            System.out.println("wen jian 太大");
            return false;
        }

//得到扩展名
    public  String getExt(){
        return getUploadFileName().substring(getUploadFileName().lastIndexOf(".") + 1);
    }

在action中重写这个方法,这个方法会在调用action逻辑方法时调用。
public void validate() {
        System.out.println("kai shi validate");
        // TODO Auto-generated method stub
        String[] s = new String[3];
        s[0]="gif";
        s[1]="jpg";
        s[2]="png";
        if(filterType(s) && filterLength(1024*1024*3)){
            System.out.println("ok");
        }else{
            System.out.println("err err");
            //如果验证错误,就可以用addFieldError来传递错误的信息
            //用了这个方法struts2就会自动的跳到struts.xml中配置的input对应的路径的页面,在该页面可以用<s:fieldError/>来接收信息。
            addFieldError("error", "you wen ti");
        }
    }

我在做这个上传时还出现了一个很经典的问题
    The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag
这个问题是你的web.xml中配置的sturts只过滤了.action,
可以改成
<filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

但是这样不是很好,因为这样所有的请求都要经过action.这样不好。
可以这样改
<filter-mapping>
            <filter-name>struts</filter-name>
            <url-pattern>*.action</url-pattern>
    </filter-mapping>
<filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

struts2上传的问题

时间: 2024-11-08 21:42:48

struts2上传的问题的相关文章

Struts2 上传下载

后台代码: public String getFileName() { String fileName = this.getRequest().getParameter("fileName"); String downloadFileName = fileName; try { } catch (Exception e) { e.printStackTrace(); } return downloadFileName; } // 下载的流 public InputStream getI

struts2上传

关于jsp如何实现文件上传,未来将有博主将有代码贴出来,现在讨论下struts下的文件上传及下载 struts2文件上传技术原理: 1.struts2文件上传的底层支持在struts.properties配置文件中,配置struts2上传文件时的上传解析器:struts.multipart.parser=cos指定使用cos的文件上传解析器struts.multipart.parser=pell指定使用pell的文件上传解析器struts.multipart.parser=jakarta   

struts2上传下载

struts上传下载必须引入两个jar文件: commons-fileupload-x.x.x.jar和comons-io-x.x.x.jar上传文件 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.

struts2上传文件

1.upload.java(java文件上传的读写方法) package com.OS.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import org.apache.struts2.ServletActionContext; import co

[JavaWeb基础] 009.Struts2 上传文件

在web开发中,我们经常遇到要把文件上传下载的功能,这篇文章旨在指导大家完成文件上传功能 1.首先我们需要一个上传文件的页面. <!--在进行文件上传时,表单提交方式一定要是post的方式, 因为文件上传时二进制文件可能会很大,还有就是enctype属性, 这个属性一定要写成multipart/form-data, 不然就会以二进制文本上传到服务器端 --> <form action="fileUpload.action" method="post"

struts2 上传文件

web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem

工作笔记4.struts2上传文件到server

本文介绍两种:上传文件到server的方式   一种是提交Form表单:还有一种是ajaxfileupload异步上传. 一.JSP中:     1.提交Form表单 为了能完毕文件上传,我们应该将这两个表单域所在表单的enctype属性设置为multipart/form-data. <form action="uploadFiles_fourInsuranceFirstUpload.action" method="post" enctype="mu

工作笔记4.struts2上传文件到服务器

本文介绍两种:上传文件到服务器的方式   一种是提交Form表单:另一种是ajaxfileupload异步上传. 一.JSP中:     1.提交Form表单 为了能完成文件上传,我们应该将这两个表单域所在表单的enctype属性设置为multipart/form-data. <form action="uploadFiles_fourInsuranceFirstUpload.action" method="post" enctype="multip

java struts2 上传文件范例

Struts2 default.properites属性文件相关说明 struts.i18n.encoding=UTF-8 国际化默认编码格式为UTF-8 struts.objectFactory = spring spring整合时需要使用 ### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data # struts.multipart.parser=cos # struts.