多文件上传与拦截器

Posted 土上方方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多文件上传与拦截器相关的知识,希望对你有一定的参考价值。

@Controller
public class MostFileController {                      //多文件上传
@RequestMapping("/first")
    public String doFlrat(@RequestParam MultipartFile[] upload, HttpSession session) {
        System.out.println("*******************");
        for (MultipartFile item:upload) {
            if(item.getSize()>0){
                //用户是否选择了文件
                //获取到用户上传的文件名称
String chilPath=item.getOriginalFilename(); //文件段名称
if(chilPath.endsWith(".jpg")||chilPath.endsWith("gif")||chilPath.endsWith("png")){
                    //将行对路径转换成绝对路径
String paraPath=session.getServletContext().getRealPath("/uplode");
                    //将file写入指定的路径
File  filePath=new File(paraPath,chilPath);
                    try {
                        //将文件内存运输到指定的文件中
item.transferTo(filePath);

                    } catch (IOException e) {
                        e.printStackTrace();
                        return "/Fileuplode.jsp";
                    }
                }else {
                    return "/Fileuplode.jsp";
                }
            }else {
                return "/Fileuplode.jsp";
            }
        }
        return "/index.jsp";
    }

@RequestMapping("/first2")
public String doFirst2(MultipartFile upload,HttpSession session){
    System.out.println("****************************88");
    if(upload.getSize()>0){
        //用户是否选择了文件
        //获取到用户上传的文件名称
String chilPath=upload.getOriginalFilename();  //文件短名称
if(chilPath.endsWith(".jpg")||chilPath.endsWith("gif")||chilPath.endsWith("png")){
            //将相对路径转化成绝对路径
String paratPath=session.getServletContext().getRealPath("/uplode");

            //将file写入指定的路径
File filePath=new File(paratPath,chilPath);
            try {
                //将文件内存运输到指定的文件中
upload.transferTo(filePath);
            } catch (IOException e) {
                e.printStackTrace();
                return "/index.jsp";
            }
        }else {
            return "/Fileuplode.jsp";
        }
    }else {
        return "/Fileuplode.jsp";
    }
    return "/Fileuplode.jsp";
 }
}

MostFileupdlo.xml配置:
  <!--配置包扫描器-->
<context:component-scan base-package="cn.mostFileupload"></context:component-scan>
         <!--配置文件上传的专用类-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8"></property>
    <property name="maxUploadSize" value="5000000"></property>
</bean>
<mvc:annotation-driven/>
Fileuplode.jsp页面:   
</head>
<body>
<h1>文件上传</h1>
<form action="/first" method="post" enctype="multipart/form-data">
    文件1   <input type="file" name="upload"/>
    文件2   <input type="file" name="upload"/>
    文件3   <input type="file" name="upload"/>
    <input type="submit"/>
</form>
</body>

Struts2拦截器:  exception 异常拦截器     
                params 参数拦截器
                il8n 国际化拦截器
                fileupload 文件上传拦截器
                validation 校验拦截器
Struts2中处理的请求的组件是:Action
SpringMVC中处理请求的组件是:Controller
JSP中处理请求的组件是: servlet
拦截器HandlerInterceptor的三种方法:(1)perHandle() (2)postHandle() (3)afterCompletion()
注册拦截器:   **匹配0或者更多的目录
                *匹配0或者任意的字符串

  拦截器:
创建Myhanderinter类并集成HandlerInterceptor接口中的方法:
public class Myhanderinter implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("perHandle+=========================================");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("posthandle-------------------------------------");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("afterHandle====================================");
    }
}
//在创建一个intercfeption类
@Controller
public class intercfeption {
  @RequestMapping("/first")
    public String doInter(){
      System.out.println("Handle=====================================");
        return "index.jsp";
    }
}
  HandleInter.xml配置:
   <!--配置包扫描器-->
<context:component-scan base-package="cn.Handerinter"></context:component-scan>
         <!--注册拦截器-->
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="cn.Handerinter.Myhanderinter"></bean>
    </mvc:interceptor>
</mvc:interceptors>
<mvc:annotation-driven/>

以上是关于多文件上传与拦截器的主要内容,如果未能解决你的问题,请参考以下文章

1024程序员节RestFul,mvc拦截器,SSM基本整合-学习笔记

1024程序员节RestFul,mvc拦截器,SSM基本整合-学习笔记

基于Struts2的单文件和多文件上传

SpringBoot单文件与多文件上传

拦截器与文件上传

Spring MVC 多文件上传与 HTML5 多文件表单功能