Spring MVC中请求和响应数据的处理
1.Spring MVC中请求
1)请求路径映射
实际项目中我们要借助@RequestMapping注解定义映射路径,其注解部署如下
a:类定义处:提供初步的请求映射信息
eg:@RequestMapping("/req/")
public class a{}
说明:需要用到@ResponseBody注解
@ResponseBody注解修饰方法时假如返回的是一个字符串,就以普通字符串返回
b:方法定义处:提供进一步的细分映射信息
@RequestMapping("doRequestPath01")
浏览器访问路径为:
http://localhost:8080/CGB-SPRING-MVC-01/req/doRequestPath01.do
普通URL映射: @RequestMapping(“url1”)
多个URL映射到同一个处理器: @RequestMapping
(“url2”,“url3”)
Rest风格URL映射:@RequestMapping(“doRequestPath01/{path}”)[/后面可以是任意路径]
rest风格中URL参数的获取:@RequestMapping(“doRequestPath01/{id}”)
2) 请求方式映射
a:处理GET请求与POST请求: @RequestMapping(value="url1",method=
{RequestMethod.GET,RequestMethod.POST})
b:只处理Get请求 @GetMapping(value="url1")
c:只处理Post请求 @PostMapping(value="url2")
3)请求参数映射(重点)
a:直接量方式获取请求参数数据------八种基本类型或对象类型,String。Date
@RequestParam用于修饰方法参数
value属性用于指定要获取请求中的那个参数的值
required属性表示请求是否允许没有这个参数,默认为true
@RequestMapping("doRequestParame02")
@ResponseBody
public String doRequestParame02(@RequestParam(value="username",required=true)
String name) {
return "param's value="+name;
}
说明: http://localhost:8080/CGB-SPRING-MVC-01/req/doRequestParame02.do 这样写会出现400异常,后面必须写username,若required=false则可以没有这个参数
a.1:使用Date类型变量接受请求日期参数的值
Spring MVC 默认支持yyyy/MM/dd格式日期转换,假如日期格式不匹配会报400异常
a.2:使用Integer类型的可变参数或数组接收请求数据(Integer...ids)
b:使用值对象(VO)封装请求参数数据,方法被调用时会构建参数对象然后根据参数名找到对应的set方法(要与请求中参数名对应),实现值的封装
c:使用Map封装请求参数数据时,必须使用@RequestParam注解修饰,[不然数据就是空的]然后参数会以ket/value形式存储到map d:请求头数据,前提是借助@RequestHeader注解修饰
f:cookie中值的获取@CookieValue注解进行修饰
2.Spring MVC中响应
1)响应数据封装及输出
原生API :response.getWriter().write()
a:将数据直接封装到request中
@RequestMapping(“url01”)
public String doResponse01(HttpServletRequest request) {
request.setAttribute(“data”, “hello…”);
return “response”;
} 在response.jsp页面可以直接借助${xxx}方式获取数据。
b:ModelAndView 对象(重点)
返回视图对象,返回值会交给DispatcherServlet,DispatcherServlet调用视图解析器
对view进行解析,最后将请求转发到对应的页面
c:Model 对象(重点)--将响应数据封装到model中
@RequestMapping("doModel")
ic String doModel(Model model) {
model.addAttribute("data", "modal");
return "response";
d:将响应数据封装到Map中[//说明:假如参数使用@RequestParam修饰则不能解析]
2)数据的响应方式
a:在方法中返回一个页面—请求转发:return “response”
b:在方法中返回一个页面—请求重定向:return “redirect:doResponse04.do”
2)响应数据转换JSON(重点)
a:手动自己转
b:借助第三方API例如(Jackson,fastjson,gson)只需要添加jackson依赖,就可以直 接转换,spring 中默认支持jackson应用的
将Map对象内容转换为字符串
将JavaBean对象转换为JSON串
将Java List集合转换为JSON串。
常见错误:
400:请求数据与服务端需要的数据格式/个数异常
406:如果不存在{spring MVC 的spring-configs.xml配置文件内置的 <mvc:annotation-
driven></mvc:annotation-driven>配置的一些bean对象可将map转换为Jackson格式}
405:请求方式异常