Spring MVC响应处理

本文详细介绍了Spring MVC中的视图解析,包括如何配置内置的InternalResourceViewResolver,以及通过HttpServletRequest传递数据。此外,还讲解了使用ModelAndView对象、Model、Map和ModelMap在控制器与视图间传输数据的方法,这些方式方便地实现了请求过程中的数据共享。

1. 内置视图解析器

Spring MVC 中的视图解析器负责解析视图,可以通过在配置文件中定义一个ViewResolver来配置视图解析器,配置如下:

<!--默认的内置视图解析器-->

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!--设置前缀-->

<property name="prefix" value="/WEB-INF/templates"/>

<!--设置后缀-->

<property name="suffix" value=".html"/>

</bean>

定义了一个id为viewResolver的视图解析器,并设置了前缀后缀,这样设置的好处就是简化方法中定义的路径。在访问视图解析器是就会自动的增加前缀和后缀。

2. 使用原生servlet的对象传递数据

HttpServletRequest:通过request对象获取请求信息

//使用servlet传递数据

@RequestMapping("/testServlet")

public String testRequestByServletAPI(HttpServletRequest request){

request.setAttribute("test","hello,servlet");

return "success";

}

3. 使用ModelAndView对象传输数据

当使用modelAndView对象的时候,返回值的类型也必须是ModelAndView,可以将要跳转的页面设置成view的名称,来完成跳转的功能,同时数据也是放到request域中。

使用方式:

创建ModelAndView对象

向模型对象中添加数据

设置逻辑视图名

返回ModelAndView对象

控制器方法:

@RequestMapping("/testModelAndView")

public ModelAndView testModelAndView(){

//创建ModelAndView对象

ModelAndView mav = new ModelAndView();

//处理模型数据,即向请求域request共享数据

mav.addObject("test","Hello ModelAndView");

//设置视图名称

mav.setViewName("success");

return mav;

}

ModelAndView对象的作用:

将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。

4. 使用Model、Map、ModelMap传输数据

在SpringMVC中除了可以使用原生servlet的对象传递数据之外,还有什么其他的方式呢?

可以在方法的参数上传入Model,ModelMap,Map类型,此时都能够将数据传送回页面。

控制器方法:

@RequestMapping("/testModel")

public String testModel(Model model){

model.addAttribute("test","Hello Model");

return "success";

}

@RequestMapping("/testMap")

public String testMap(Map<String,Object> map){

map.put("test","Hello Map");

return "success";

}

@RequestMapping("/testModelMap")

public String testModelMap(ModelMap modelMap){

modelMap.addAttribute("test","hello modelmap");

return "success";

}

如果方法的入参为Map,Model和ModelMap类型,Spring MVC会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据,作用类似于request对象的setAttribute方法的作用: 用来在一个请求过程中传递处理的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值