9月23日Spring笔记
发布时间:
本文字数:302 字 阅读完需:约 3 分钟
springmvc文件上传
前端实现
前端使用bootstrap
file.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传</title>
<meta charset="UTF-8">
<title>日志记录</title>
<script src="../js/jquery-2.1.0.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/docs.min.js"></script>
<link link rel="stylesheet" href="../css/bootstrap.min.css">
<script>
$(()=>{
$("#import").click(function () {
let files = $('#csv_file').prop('files');
let data = new FormData();
data.append('myFile', files[0]);
$.ajax({
type: 'POST',
url: "myFile.action",
data: data,
cache: false,
processData: false,
contentType: false,
success: function (ret) {
alert(ret);
}
});
});
})
</script>
</head>
<body>
<form role="form" action="myFile.action" method="post" enctype="multipart/form-data">
<div class="form-group">
<label>选择文件</label>
<input type="file" name="myFile">
</div>
<button type="submit" class="btn btn-default">上传</button>
</form>
<div>
<h3>ajax上传文件</h3>
<div class="form-group">
<form role="form" action="myFile.action" method="post" enctype="multipart/form-data">
<p>选择文件<input type="file" id="csv_file" name="myFile"/></p>
<button id="import" type="button">上传</button>
</form>
</div>
</div>
</body>
</html>
后端
spring-mvc.xml
配置
<!-- 此处必须有id属性 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
</bean>
WorkController.java
@GetMapping("/file.action")
public String file(){
return "file";
}
@ResponseBody
@PostMapping("/myFile.action")
public String myFile(MultipartFile myFile){
System.out.println(myFile);
return myFile.getContentType();
}
拦截器
implements HandlerInterceptor
接口
preHandle: 前置拦截
spring-mvc.xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<!-- 排除不适用拦截器的路径 -->
<mvc:exclude-mapping path="/user/login.action"/>
<mvc:exclude-mapping path="/work/**"/>
<bean class="com.zr.interceptor.SessionInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
SessionInterceptor.java
package com.zr.interceptor;
import com.alibaba.fastjson.JSON;
import com.zr.utils.AjaxResult;
import com.zr.vo.User;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
public class SessionInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// System.out.println(handler);
//判断是否为ajax请求,默认不是
String header = request.getHeader("x-requested-with");
User user = (User)request.getSession().getAttribute("user");
if(user==null||user.getUserId()==null||user.getUserId().equals("")){
System.out.println("未登录");
if(StringUtils.hasLength(header) && header.equals("XMLHttpRequest")){
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter o = response.getWriter();
o.write(JSON.toJSONString(AjaxResult.fail(200, "用户未登录",null)));
}
else{
response.sendRedirect(request.getContextPath()+"/user/login.action");
}
return false;
}
return true;
}
}
web.xml :设置session失效时间
<session-config>
<!-- session失效时间:15分钟-->
<session-timeout>15</session-timeout>
</session-config>
Powerd by YlBlog(玉龙博客)