springmvc的文件上传
1.导入jar包
下载地址:https://github.com/suyirulan/putao/tree/master/fileupload_jar
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="addStudent" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="name" /><br> 年龄:<input type="text" name="age" /><br> 头像:<input type="file" name="photo" /><br> <input type="submit" value="上传" /> </form> </body> </html>
注意:表单form标签的属性method="post" 必须是post提交;enctype="multipart/form-data"是必须写的,并且文件的name=" "也是必须写的
2.在springmvc配置文件中上传解析器
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="209715200"></property>
</bean>
注意:value中的单位是字节;字节计算:1M=1024k=1024*1024=1048576字节
3.在Controller控制层处理代码
package com.zhiyou100.xg.controller; import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FileUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import com.zhiyou100.xg.bean.Student; @Controller public class StudentController { //文件上传 @RequestMapping("addStudent") public String addStudent(Student stu,MultipartFile photo,HttpServletRequest request,Model model) { String path = request.getServletContext().getRealPath("/photo"); File file = new File(path); if(!file.exists()) { file.mkdirs(); } String filename = System.currentTimeMillis()+ photo.getOriginalFilename(); stu.setPhotos("photo/"+filename); File targetfile = new File(path+"/"+filename); try { FileUtils.writeByteArrayToFile(targetfile, photo.getBytes()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } model.addAttribute("stu", stu); return "index"; } }
2.springmvc的拦截器
1.创建一个类,实现接口Handlerinterceptor
2.重写接口中的方法
1 public class MyInterceptor implements HandlerInterceptor{ 2 3 @Override 4 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) 5 throws Exception { 6 // TODO Auto-generated method stub 7 8 } 9 10 @Override 11 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) 12 throws Exception { 13 // TODO Auto-generated method stub 14 15 } 16 17 @Override 18 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { 19 Object name = request.getSession().getAttribute("name"); 20 if(name!=null) { 21 return true; 22 }else { 23 System.out.println("拦截器"); 24 return false; 25 } 26 } 27 28 }
3.在springmvc配置文件中配置拦截器
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<mvc:exclude-mapping path="/user/tologin"/><!-- 不过滤login页面 -->
<mvc:exclude-mapping path="/user/login"/>
<mvc:exclude-mapping path="/user/register"/>
<bean class="com.zhiyou100.xg.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
4.在Controller控制层处理代码
package com.zhiyou100.xg.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; @Controller @RequestMapping("/user") @SessionAttributes(names= {"name","address"})//键名叫:name保存的作用域为session public class UsersController { @RequestMapping("tologin") public String tologin(){ return "login"; } @RequestMapping("login") public String login(String name,String password ,Model model) { if("admin".equals(name)&&"admin".equals(password)) { model.addAttribute("name", name); return "list"; }else{ return "login"; } } @RequestMapping("register") public String register() { return "register"; } @RequestMapping("list") //如果没有登陆,那么访问该请求地址是被返回到登录页面 public String list() { System.out.println("查询所有用户信息"); return "list"; } }
需求:index.jsp;register.jsp;login.jsp不要过滤而list页面需要登陆成功才能看见
jsp页面放置位置
1.index.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="user/tologin">登录</a> <a href="user/register">注册</a> <a href="user/list">查询</a> <a href="user/delete">删除</a> </body> </html>
2.login.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="login" method="post"> 用户名:<input type="text" name="name"/><br> 密码:<input type="text" name="password"/><br> <input type="submit" value="登录"> </form> </body> </html>
3.register.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="users/register" method="post"> 姓名:<input type="text" name="unames"/><br> 密码:<input type="text" name="password"/><br> 手机:<input type="text" name="phone"/><br> <input type="submit" value="提交"/> </form> </body> </html>
4.list.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ==========list============ </body> </html>
3.springmvc后台校验
1.引入jar包
2.在相应的实体类中加入注解
详细注解:
3.在控制层接受参数时
4.jsp页面