企业网站手机端跳转设置,网站开发用 c php,网页设计公司经营范围,wordpress 小说插件SpringMVC提供了一个MultipartResolver接口用来实现文件上传#xff0c;并使用Commons FileUpload技术实现了一个该接口的实现类CommonsMultipartResolver。如果要在SpringMVC中实现文件上传功能#xff0c;就可以在springmvc.xml中配置MultipartResolver接口的实现类。 以下…SpringMVC提供了一个MultipartResolver接口用来实现文件上传并使用Commons FileUpload技术实现了一个该接口的实现类CommonsMultipartResolver。如果要在SpringMVC中实现文件上传功能就可以在springmvc.xml中配置MultipartResolver接口的实现类。 以下是使用SpringMVC实现文件上传的具体步骤 ①导入JAR包 使用SpringMVC实现文件上传需要额外导入以下2个JAR包 commons-fileupload-1.2.1.jarcommons-io-2.0.jar ②在SpringMVC配置文件中配置MultipartResolver接口的实现类 springmvc.xml 复制 …bean idmultipartResolverclassorg.springframework.web.multipart.commons.CommonsMultipartResolver property namedefaultEncoding valueUTF-8/property property namemaxUploadSize value1024000/property/bean 需要注意这个bean的id值必须是multipartResolver。DispatcherServlet在Web服务启动时会自动查找id”multipartResolver”的Bean并对其进行解析。如果id值不是multipartResolver DispatcherServlet就会忽略对此Bean的解析也就无法加入SpringMVC对文件上传的支持。 CommonsMultipartResolver中属性的介绍如下 属性简介defaultEncoding指定解析request请求的编码格式。uploadTempDir指定上传文件时的临时目录默认是Servlet容器的临时目录。文件上传完毕时临时目录中的临时文件会被自动清除。maxUploadSize设置上传文件的最大值单位是字节。默认是-1表示无限制。maxInMemorySize设置在文件上传时允许写到内存中的最大值单位是字节默认是10240字节。 ③编写请求处理方法实现文件上传 请求处理类SecondSpringDemo.java 复制 ControllerRequestMapping(value /SecondSpringDemo)public class SecondSpringDemo{ RequestMapping(/testFileUpload) public String testFileUpload(RequestParam(desc) String desc, RequestParam(file) MultipartFile file) throws IOException { String fileName file.getOriginalFilename(); System.out.println(desc: desc); System.out.println(OriginalFilename: fileName); System.out.println(InputStream: file.getInputStream()); InputStream input file.getInputStream(); System.out.println(D:File.separatorfileName); OutputStream out new FileOutputStream(D:File.separatorfileName); byte[] b new byte[1024]; while ((input.read(b)) ! -1) { out.write(b); } input.close(); out.close(); return success; }} 通过参数RequestParam(file) MultipartFile file获取到前端传来的File对象并通过file.getInputStream()得到File对象的输入流之后再通过输出流将文件写入到D盘即实现文件上传功能。 ④测试 index.jsp 复制 form actionSecondSpringDemo/testFileUpload methodPOST enctypemultipart/form-data 文件: input typefile namefile/ 描述: input typetext namedesc/ input typesubmit valueSubmit//form 在JSP页面中使用文件上传时除了文件的字段要使用typefile外还需要注意设置表单的提交方式以及编码类型即methodPOST enctypemultipart/form-data。 32.2 拦截器 32.2.1 拦截器简介 拦截器的实现原理和过滤器相似都可以对用户发出的请求或者对服务器做出的响应进行拦截。SpringMVC也提供了一个用于支持拦截器的HandlerInterceptor接口此接口的实现类就是一个拦截器。 HandlerInterceptor接口包含了以下方法 方法简介boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception用于拦截客户端发出的请求。此方法会在request请求到达服务器之前被调用如果拦截处理后需要将请求放行则返回true;如果拦截处理后需要结束请求即让请求不再向服务器传递则返回false。void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception用于拦截服务器发出的响应。此方法会在请求处理方法执行处理完request请求之后、服务器发出的response响应到达DispatcherServlet的渲染方法之前被调用参见下图。void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception此方法会在DispatcherServlet将response响应的视图渲染完毕之后被调用参见下图。 拦截器的执行流程如下 图32-01 32.2.2 拦截器使用步骤 以下是在SpringMVC中创建并使用拦截器的具体步骤 ①创建自定义拦截器 创建一个类并实现HandlerInterceptor接口如下 FirstInterceptor.java 复制 //import…public class FirstInterceptor implements HandlerInterceptor{ // 拦截客户端发出的请求 Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(第一个拦截器的preHandle()方法...); return true;// 将请求放行 } // 用于拦截服务器发出的响应 Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(第一个拦截器的postHandle()方法...); } // 视图渲染完毕之后被调用 Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(第一个拦截器的afterCompletion()方法...); }} ②配置拦截器 将写好的拦截器配置到SpringMVC配置文件之中 springmvc.xml 复制 …mvc:interceptors !-- 配置自定义的拦截器 -- bean classorg.lanqiao.interceptor.FirstInterceptor/bean/mvc:interceptors ③测试 默认的拦截器会拦截所有向服务器发送的请求如下 请求处理类SecondSpringDemo.java 复制 …ControllerRequestMapping(value /SecondSpringDemo)public class SecondSpringDemo{… RequestMapping(/testInterceptor) public String testInterceptor() { System.out.println(请求处理方法...); return success; }} index.jsp a hrefSecondSpringDemo/testInterceptortestInterceptor/a 执行index.jsp中的超链接控制台的运行结果 图32-02 32.2.3 拦截器的拦截配置 以上方法实现的拦截器会拦截所有请求此外我们还可以通过配置使得拦截器只拦截或不拦截某些特定请求。为此只需要将SpringMVC中对拦截器的配置修改如下 springmvc.xml 复制 …mvc:interceptors mvc:interceptor !-- 拦截的请求路径 -- mvc:mapping path/**/ !-- 不拦截的请求路径 -- mvc:exclude-mapping path/SecondSpringDemo/testFileUpload/ bean lass org.lanqiao.interceptor.FirstInterceptor /bean /mvc:interceptor/mvc:interceptors mvc:interceptor子元素的简介如下 元素简介mvc:mapping path/配置会被拦截器拦截的请求路径。mvc:exclude-mapping path/配置不会被拦截器拦截的请求路径。 最终拦截的请求路径是mapping与exclude-mapping的交集。例如上述springmvc.xml中配置的FirstInterceptor拦截器会拦截除了请求路径是/SecondSpringDemo/testFileUpload以外的所有请求。 本例中只涉及到了一个拦截器如果配置了多个拦截器则多个拦截器拦截请求/响应的顺序与使用多个过滤器拦截请求/响应的顺序是完全相同的读者可以参见“过滤器与监听器”一节。转载于:https://www.cnblogs.com/gu-bin/p/10546837.html