SpringMVC中的文件上传
1)引入common-fileupload和commons-io
2)在MVC的配置文件加:
<!--配置上传的解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
知识兔3)在form标签中添加:enctype="multipart/form-data"
4)把表单元素的name设置成和实体类属性一样,除了file文件域,文件域的name如果和实体类属性一样就出现400错误
5)编写上传方法
@RequestMapping("addUser")
public String addUser(User user,@RequestParam(value = "imgs",required = false) CommonsMultipartFile imgs){
if(imgs != null){
//获得原始文件名
String name = imgs.getOriginalFilename();
String suffix = name.substring(name.lastIndexOf("."));
//使用时间替换原来文件名,避免重复
String filename = System.currentTimeMillis() + suffix;
//创建本地文件对象
File destFile = new File("C:\\xpp\\apache-tomcat-8.0.52\\webapps\\imgs\\" + filename);
//把上传文件保存到目标文件中
try {
imgs.transferTo(destFile);
} catch (IOException e) {
e.printStackTrace();
}
user.setImg(filename);
}
ser.insert(user);
return "redirect:page?pageNo=1";
}
知识兔拦截未登录请求
1、登录成功后将用户对象保存到Session中
2、拦截所有的请求,判断Session中是否有用户,有用户就放行,没有用户就强制跳转到登录页面
注:不能拦截和登录和注册相关的请求、外部静态资源
定义拦截器:
/**
* 用户登录拦截器
* 拦截没有登录的URL请求
*/
public class UserLoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("拦截了:" + httpServletRequest.getRequestURL());
//从Session获得用户,判断用户为空,就强制登录,否则放行
User user = (User) httpServletRequest.getSession().getAttribute("user");
if(user == null){
System.out.println("未登录的请求:" + httpServletRequest.getRequestURL());
httpServletResponse.sendRedirect("http://localhost:8080/ssm/user/index");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
知识兔配置拦截器:
<mvc:interceptors>
<!--配置验证用户登录的拦截器-->
<mvc:interceptor>
<!--拦截所有URL-->
<mvc:mapping path="/**"/>
<!--不拦截和登录注册相关的URL-->
<mvc:exclude-mapping path="/**/code.do"/>
<mvc:exclude-mapping path="/**/*.css"/>
<mvc:exclude-mapping path="/**/*.js"/>
<mvc:exclude-mapping path="/**/index"/>
<mvc:exclude-mapping path="/**/login"/>
<bean class="com.qianfeng.ssm.interceptor.UserLoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
知识兔