一、回顾
1.1 如果接受的参数为日期时间类型,需要在controller中进行处理。
@InitBinder
使用实体类封装时间类型 @DateTimeFormat
1.2 如何保存数据让网页获取该数据。
ModelAndView:
Model: 默认为request作用域
Map:
HttpServletRequest:
HttpSession:
@SessionAttributes(name={})
1.3 处理静态资源。
如果DispatcherServlet处理的请求地址为/,那么它也会处理静态资源。
在配置文件中使用<mvc:default-servlet-handler> 不处理静态资源。
1.4 如何使用重定向。Redirect
1.5 Springmvc 完成ajax功能。
Ajax时服务器响应的数据类型。 html, json
响应的结果是html @ResponseBody 但是它会出现乱码。StringHttpMessageConvert.
响应的结果是Json类型。需要借助jackson的jar包以及@ResponseBody
二、文件上传
1.导入jar包
2.网页。
表单必须是post提交,编码必须是multipart/form-data 文件上传文本框必须起名。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta 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="myfile" /><br /> <input type="submit" value="上传"> </form> </body> </html>
3.在springmvc中配置文件上传解析器。
<!-- 配置文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置文件上传的大小 --> <property name="maxUploadSize" value="20971520"></property> </bean>
4.在控制层处理代码
package com.zhiyou100.klb.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.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; @Controller public class UploadController { @RequestMapping("upload") public String upload(MultipartFile myfile,HttpServletRequest request) { //1.获取文件上传的真实保存路径 String path = request.getServletContext().getRealPath("/upload"); System.out.println(path); //2.创建一个文件对象 File file = new File(path); if(!file.exists()) { file.mkdirs(); } //3.获取文件名 String name = myfile.getOriginalFilename(); System.out.println(name); File targetFile = new File(path + "/" + name); try { FileUtils.writeByteArrayToFile(targetFile, myfile.getBytes()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return "redirect:index.jsp"; } }
三、拦截器(拦截都是控制层的地址。 filter: )
1.创建一个类实现接口 HandlerInterceptor
2.重写接口的中方法
package com.zhiyou100.klb.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { System.out.println("请求处理完成后执行的方法"); } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("=========="); } @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { // TODO Auto-generated method stub System.out.println("起始点"); return true;//如果返回true表示允许通过 } }
3.把创建的类配置到springmvc文件中。
<!-- 配置拦截器 --> <mvc:interceptors> <!-- 可配置多个拦截器 --> <mvc:interceptor> <!-- **表示user下所有的子目录以及请求地址 --> <mvc:mapping path="/user/**"/> <mvc:exclude-mapping path="/user/list.do"/> <bean class="com.zhiyou100.klb.interceptor.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
四、数据校验
1.导入jar包
2.在相应的实体类中加入注解
3.在控制层接受参数时。
@RequestMapping("register") //requestMapping:表示的就是你的访问地址 public String register(@Valid Users user,BindingResult br,Model model) { if(br.hasErrors()) { List<FieldError> fieldErrors = br.getFieldErrors(); Map<String,Object> errorMsg = new HashMap<>(); for(FieldError f:fieldErrors) { errorMsg.put(f.getField(), f.getDefaultMessage()); } model.addAttribute("errorMsg", errorMsg); return "register"; } else { list.add(user); return "forward:list"; } }
4.在.jsp文件中接收错误信息
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 欢迎注册 <form action="/SpringMVC-user/user/register" method="post"> 账号:<input type="text" name="name" >${errorMsg.name }<br/> 密码:<input type="text" name="password">${errorMsg.password }<br/> 电话:<input type="text" name="phone">${errorMsg.phone }<br/> <input type="submit" value="注册"> <input onclick="location.href=‘javascript:history.go(-1)‘" type="button" value="返回"> </form> </body> </html>
5.常见注解
原文地址:https://www.cnblogs.com/kklb/p/11462419.html