有什么公司是建设网站的吗,最专业的网站建设收费,杭州企业网站专业设计,网站企业推广方案1.全局异常处理 1 异常处理器 基于AOP 用户发起请求, SpringMVC接受请求, SpringMVC加载静态资源问题说明
请求过去了,但没有处理 规则说明:静态资源进入SpringMVC框架之后,没有找到要怎样处理静态资源的方法,所以他们就不解决,也就不显示 解决方法:SpringMVC基于Servlet处理…1.全局异常处理 1 异常处理器 基于AOP 用户发起请求, SpringMVC接受请求, SpringMVC加载静态资源问题说明
请求过去了,但没有处理 规则说明:静态资源进入SpringMVC框架之后,没有找到要怎样处理静态资源的方法,所以他们就不解决,也就不显示 解决方法:SpringMVC基于Servlet处理器机制,放行静态资源,交给Servlet处理
!-- 5.放行静态资源--mvc:default-servlet-handler/ 2.异常处理器操作 说明: 使用AOP解决 环绕通知 try-catch的位置: 首选Controller层, 因为Dao和Service层抛出后,最终层还是在Controller层处理
基于注解 全局异常处理
ControllerAdvice 拦截Controllre层异常
ExceptionHandler({RunTimeException.class})拦截什么类型的异常
Result包装类
Data
NoArgsConstructor
AllArgsConstructor
public class Result {private Integer code;private String msg;private Object data;public static Result fail(){return new Result(201,业务调用失败,null);}public static Result success(){return new Result(200,业务调用成功,null);}public static Result success(Object obj){return new Result(200,业务调用正确,obj);}}ControllerAdvice springmvc基于aop拦截Controller中的异常信息
ExceptionHandler 拦截什么异常 ExceptionHandler(RuntimeException.class)前后端调用时,异常的JSON串返回
//springmvc基于aop拦截Controller中的异常信息
ControllerAdvice
public class ExceptionAOP {
// //拦截什么异常
// ExceptionHandler({RuntimeException.class})
// public String exception(){
// System.out.println(全局异常处理机制工作);
// return error;
//
// }//前后端调用时,异常的JSON串返回ExceptionHandler(RuntimeException.class)public Result exception(){return Result.fail();} 2.SpringMVC动态接收Ajax请求 1.搭建前端脚手架工程 创建项目 引入axios 创建Axios请求对象
delete和get请求格式一致
put和post请求格式一致 发起Ajax请求 2.搭建后端服务器 引入jar包 jackson
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.12.1/version/dependency 解决跨域问题 核心注解: CrossOrigin 3. 接收Ajax请求
原始接收请求实在是太麻烦 ,后面有用注解简化 /*** 思考:* 1. 前端JS发起请求* 2. 后端服务器java代码实现请求* 3. 前后端交互使用JSON串* 4. 获取用户对象进行返回*/RequestMapping(/getMsg)public void getMsg(int id,String name,HttpServletResponse response) throws IOException {System.out.println(获取客户端数据:id:name);ObjectMapper objectMapper new ObjectMapper();User user new User(admin,123456);String json objectMapper.writeValueAsString(user);response.getWriter().write(json);} 4.前端返回值 RequestBody 主要接收Ajax post请求
作用:将请求体里面的JSON串转化为java对象
注解写在参数当中
注意事项:json串中的属性名称,必须与对象中的属性名称一致
//如何获取请求体中的数据 JSON串 java对象PostMapping(/login)public User login(RequestBody User user) throws IOException {System.out.println(user);user.setUsername(success!!!!);return user;}ResponseBody 将方法的返回值自动转化为JSON串 如果该注解标识在类上, 表示当前类中的所有方法 都按照JSON返回. /*** SpringMVC 为了简化Ajax调用方式* 1.RequestBody 将请求体中的json串 转化为Java对象* 2.ResposeBody 将Java对象转化为JSON串返回*/RequestMapping(/getMsg2)//ResponseBodypublic User getMsg2(int id,String name) throws IOException {System.out.println(获取参数:id:name);return new User(zhangsan,123456);}
5.统一数据返回值的说明
1.RestController 是ResponseBody和Controller注解的结合注解
当前类中的所有的方法按照JSON串返回
//ResponseBody //当前类中的所有方法 都按照JSON串返回RestController
前后端调用时,异常的json串返回 2.RestControllerAdvice是ResponseBody和ExceptionHandler的结合注解 全局异常处理机制中的 //springmvc基于aop拦截Controller中的异常信息
ControllerAdvice
public class ExceptionAOP {
// //拦截什么异常
// ExceptionHandler({RuntimeException.class})
// public String exception(){
// System.out.println(全局异常处理机制工作);
// return error;
//
// }//前后端调用时,异常的JSON串返回ExceptionHandler(RuntimeException.class)public Result exception(){return Result.fail();} package com.atguigu.controller;import com.atguigu.pojo.User;
import com.atguigu.vo.Result;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;//Controller
RequestMapping(/ajax)
//当前的所有的请求支持跨域访问!!!
//CrossOrigin(value 指定发起请求的网址是谁!!!)
CrossOrigin
//ResponseBody //当前类中的所有方法 都按照JSON串返回
RestController
public class AjaxController {/*** 思考:* 1. 前端JS发起请求* 2. 后端服务器java代码实现请求* 3. 前后端交互使用JSON串* 4. 获取用户对象进行返回*/RequestMapping(/getMsg)public void getMsg(int id,String name,HttpServletResponse response) throws IOException {System.out.println(获取客户端数据:id:name);ObjectMapper objectMapper new ObjectMapper();User user new User(admin,123456);String json objectMapper.writeValueAsString(user);response.getWriter().write(json);}/*** SpringMVC 为了简化Ajax调用方式* 1.RequestBody 将请求体中的json串 转化为Java对象* 2.ResposeBody 将Java对象转化为JSON串返回*/RequestMapping(/getMsg2)//ResponseBodypublic User getMsg2(int id,String name) throws IOException {System.out.println(获取参数:id:name);return new User(zhangsan,123456);}//如何获取请求体中的数据 JSON串 java对象PostMapping(/login)public User login(RequestBody User user) throws IOException {System.out.println(user);user.setUsername(success!!!!);return user;}/*** BufferedReader reader request.getReader();* String data null;* StringBuffer sbf new StringBuffer();* while (StringUtils.hasLength(datareader.readLine())){* sbf.append(data);* }* String json sbf.toString();* ObjectMapper objectMapper new ObjectMapper();* objectMapper.readValue(json,XXXX.class);*/GetMapping(/getResult)public Result getResult(){User user new User(zhangsan,123456);int a 1/0;return Result.success(user);}
}