springmvc 响应封装_Spring MVC 响应处理

本文详细介绍了Spring MVC中响应数据的封装方法,包括Servlet API对象、ModelAndView对象和Map对象的使用,以及如何将数据传递到前端页面。通过示例代码展示了如何将数据封装到request、session及ModelAndView中,并结合视图解析器实现响应数据的处理。
摘要由CSDN通过智能技术生成

1.1. 响应数据封装

1.1.1. Servlet API 对象(了解)

重定向

转发

将请求数据直接封装到Request 对象

/spring-mvc-v1/src/main/webapp/WEB-INF/pages/response.jsp

pageEncoding="UTF-8"%>

响应页面

response page

${data}

package controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/resp/")

@Controller

public class ResponseHandleController {

//响应数据的封装

@RequestMapping("doRespData01")

public String doRespData01(HttpServletRequest request){

//直接将数据封装到标准servlet api对象中

request.setAttribute("data", "sys log message");

return "response";//view name

//返回的view会通过视图解析器进行解析

//前端控制器基于视图解析器返回的页面,进行请求转发

}

}

response page

sys log message

pageEncoding="UTF-8"%>

响应页面

response page

${data1}

${data2}

package controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/resp/")

@Controller

public class ResponseHandleController {

//响应数据的封装

@RequestMapping("doRespData01")

public String doRespData01(HttpServletRequest request){

//直接将数据封装到标准servlet api对象中

request.setAttribute("data1", "sys log message");

return "response";//view name

//返回的view会通过视图解析器进行解析

//前端控制器基于视图解析器返回的页面,进行请求转发

}

@RequestMapping("doRespData02")

public String doRespData02(HttpServletRequest request){

//直接将数据封装到标准servlet api对象中

request.setAttribute("data2", "request redirect message");

//当需要重定向到某个url时,需要添加redirect前缀

return "redirect:doRespData01.do";//view name

}

}

localhost/spring-mvc-v1/resp/doRespData02.do

data2的数据没拿到

response page

sys log message

pageEncoding="UTF-8"%>

响应页面

response page

${data1}

${data2}

package controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/resp/")

@Controller

public class ResponseHandleController {

//响应数据的封装

@RequestMapping("doRespData01")

public String doRespData01(HttpServletRequest request){

//直接将数据封装到标准servlet api对象中

request.setAttribute("data1", "sys log message");

return "response";//view name

//返回的view会通过视图解析器进行解析

//前端控制器基于视图解析器返回的页面,进行请求转发

}

@RequestMapping("doRespData02")

public String doRespData02(HttpServletRequest request){

//直接将数据封装到标准servlet api对象中

request.getSession().setAttribute("data2", "request redirect message");

//当需要重定向到某个url时,需要添加redirect前缀

return "redirect:doRespData01.do";//view name

//返回此方法时客户端向服务器端底层发起了两次请求

}

}

localhost/spring-mvc-v1/resp/doRespData02.do

response page

sys log message

request redirect message

1.1.2. ModelAndView 对象(重点)

在对服务端响应数据进行封装时,可以直接在方法参数中定义一个ModelAndView类型的参数,借助ModelAndView对象封装响应数据。

前端控制器接着对mv进行视图解析

前端控制器会调用视图解析器对mv中的view进行解析,前端控制器会将请求数据转发到视图解析器的view页面

public class ModelMap extends LinkedHashMap {

}

package controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

@RequestMapping("/resp/")

@Controller

public class ResponseHandleController {

@RequestMapping("doRespData03")

public ModelAndView doRespData03(ModelAndView mv)

{

//系统底层会将数据存储到request作用域

mv.addObject("data1","model and view data");

//当系统返回mv时,经过视图解析获取view页面,并将请求转发到此页面

mv.setViewName("response");

return mv;//此方法的返回值返回给调用方:前端控制器DispatcherServlet,前端控制器会调用视图解析器对mv中的view进行解析,前端控制器会将请求数据转发到视图解析器的view页面

}

}

response page

model and view data

下面的配置叫视图解析器

/spring-mvc-v1/src/main/resources/spring-configs.xml

@RequestMapping("doRespData04")

public String doRespData04(Model m)

{

System.out.println(m.getClass().getName());

m.addAttribute("data1","model message");

System.out.println(m.getClass().getName());

return "response";//此方法的返回值返回给调用方:前端控制器

}

response page

model message

控制台

org.springframework.validation.support.BindingAwareModelMap

org.springframework.validation.support.BindingAwareModelMap

1.1.3. Map对象(了解)

将响应数据封装到Map中(我建议假如使用map对数据进行封装,可直接采用model对象)。

@RequestMapping("doRespData05")

public String doRespData05(Map map)

{

map.put("data1", "map..");

return "response";

}

response page

map..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值