文件上传
也是请求的一部分,只不过传递的参数为多部分表单形式
具体流程
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);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("posHandle");
}
@Override
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>
</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对象来进行处理,将此类
放入容器即可