一:控制器方法响应方式
在springmvc1中有介绍
设置重定向:
返回值为String时: return "redirect:http://www.baidu.com";
返回值为ModelAndView时: modelAndView.setViewName("redirect:http://www.baidu.com");
设置转发:return "forward:/result/pageByModel.do";
modelAndView.setViewName("forward:/result/pageByModel.do");
这里我们复习一些转发和重定向的区别
请求转发 服务器内部行为 重定向服务器外部行为
请求转发最多浏览器一次请求一次响应 重定向服务器外部行为至少两次响应
请求转发数据不丢失 重定向数据丢失
前端发送异步请求 发送ajax请求(重点)
这里做简单介绍
引入js文件Vue axios
axios.get("/user/testGet.do?id=1").then((res)=>{响应后执行的}).catch((err)=>{响应后异常执行的})
axios.post("/user/testPost.do", param).then((res)=>{响应后执行的}).catch((err)=>{响应后异常执行的});
json数据支持需要引入依赖:
后端接收数据@RequestBody:
可以作用在方法参数中用来接收json数据
响应数据@ResponseBody:
可以作用在类上 或方法上 用来响应json数据
前端控制器拦截
在springmvc1中有介绍后面会将*.do替换成/
*.do 只拦截 后缀为 do的请求,其他不拦截
/ 拦截所有请求,包括静态资源(img, css, js, plugins,htiml等除了.jsp)
可以通过来释放拦的请求 释放资源 在后期前后端分离不需要配置
方法一:
mvc:default-servlet-handler/
方法二:
<mvc:resources location="/js/" mapping="/js/**"/>
RESTful风格(重点)
web.xml中配置
为了安全性更高 不要展示给用户增删改查
POST(增)、DELETE(删)、PUT(改)、GET(查)
@XxxMapping替换@RequertMapping(method = RequestMethod.POST)
举例获取id值:
@DeleteMapping("/{id}")
@PathVariable("id") Integer id
前端:axios.get("/user/1").then((res)=>{console.log(res);});
SpringMVC文件上传:
表单的数据编码enctype必须是:multipart/form-data
POST请求方式
引入依赖:
配置上传文件最大值:在spring-mvc.xml中
统一异常处理:
1.自定义异常类继承RuntimeException
构造方法中调用super("传入异常信息"),
2.编写自定义异常处理器
@ControllerAdvice 修饰类
一般这个处理器中至少定义两个处理方法
@ExceptionHandler:修饰方法
@ExceptionHandler(自定义类的class文件) { modelAndView.setViewName("error"); return modelAndView};
@ExceptionHandler(Exception.class)处理其他异常的方法
3.编写测试异常的控制器 也就是controller层
可以抛出自定义异常
throw new CustomException("异常信息");
在出现异常后会调用自定义异常管理器中的代码来进行处理异常