SpringMVC学习第三天--08-08
2020-08-08 15:39
246 查看
文件上传、拦截器、异常处理
文件上传
也是请求的一部分,只不过传递的参数为多部分表单形式 具体流程 1.maven导坐标 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> 2.配置上传解析器 示例 ** spring-mvc.xml 中上传解析器的配置 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> // 文件上传编码 <property name="maxUploadSize" value="50000000"/> // 文件总大小 </bean> ** form表单(主要是enctype的值) <form method="post" enctype="multipart/form-data" action="/user5"> 姓名<input type="text" name="username"/><br/> 请选择<input type="file" name="uploadFile"/><br/> 请选择<input type="file" name="uploadFile"/><br/> <input type="submit" value="提交"/> </form> ** controller类(参数名需要和表单name值对应) @RequestMapping("/user5") @ResponseBody // 如果不进行跳转,需要加,否则视图解析器抛异常 public void save5(String username, MultipartFile[] uploadFile) throws IOException { System.out.println(username); for (MultipartFile multipartFile : uploadFile) { String originalFilename = multipartFile.getOriginalFilename(); // 获取文件名 multipartFile.transferTo(new File("E:\\aa\\"+originalFilename)); // 上传文件到某个位置 } }
拦截器
类似filter,只拦截controller类中方法对应映射路径,不会拦截.js/.css等静态资源 使用流程 1.创建一个类实现HandlerInterceptor接口 2.配置拦截路径 示例 ** HandlerInterceptor实现类 public class MyInterceptor implements HandlerInterceptor { @Override // 在被拦截的方法之前执行,返回值绝对是否放行 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String name = request.getParameter("name"); return "张三".equals(name); // 如果参数name为张三即放行 } @Override // 在被拦截的方法执行之后,ModelAndView对象返回之前执行 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("posHandle"); } @Override // 在被拦截的方法执行之后,ModelAndView对象返回之后执行 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("after.."); } } ** spring-mvc.xml 拦截器配置 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="interceptor.MyInterceptor"/> </mvc:interceptor> // 可配置多个形成拦截器链,执行顺序为进去时从上到下,出来时从下到上,与filter链一致 </mvc:interceptors>
异常处理
springMVC内置的异常处理机制,发生异常只需从Dao层依次往上抛,最后由前端控制器调用异常处理器来处理 在配置文件中进行配置即可 ** 默认异常处理 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="error.jsp"/> // 默认异常跳转页面(下面都未匹配到) <property name="exceptionMappings"> // 根据异常类型进行对应页面跳转 <map> <entry key="异常类名" value="需要跳转的页面"/> </map> </property> </bean> ** 自定义异常处理 自定义一个类来实现 HandlerExceptionResolver 接口,根据接口内方法的Exception对象来进行处理,将此类 放入容器即可
相关文章推荐
- 学习springmvc的第三天(1:属性注入)
- Springmvc学习(08)-json数据交互
- 学习springmvc的第三天(2:构造方法注入)
- MyBatis学习第三天--08-11
- springmvc学习第三天
- SpringMVC学习 (五)
- 学习淘淘商城第十课(SSM框架整合之springmvc整合及父子容器的关系)
- 【SpringMVC学习06】SpringMVC中的数据校验
- 【零基础学习iOS开发】【02-C语言】08-基本运算
- 15_09-08 英语单词学习
- SpringMVC学习笔记(十)
- [四天学会ajax] 学习Ajax教程第三天,Ajax 中的高级请求和响应(下)
- [学习笔记] MyBatis_08 动态SQL
- 尚硅谷web前端工程师1000集学习笔记08
- ios学习第三天(一)浅谈ios面向对象
- SpringMVC学习
- springmvc学习笔记(七)数据传递及乱码问题
- (十四):application属性范围 (JSP学习第三天)
- 学习进度08
- springmvc学习-环境搭建(mac)