Spring MVC中请求和响应数据的处理

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:请求方式异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值