我理解的SpringMVC之数据响应

数据响应方式

1)页面跳转

  • 直接返回字符串
  • 通过ModelAndView对象进行返回

2)回写数据

  • 直接返回字符串
  • 返回对象或集合

页面跳转

返回字符串形式

我们进行页面跳转,最简单的一种就是如下形式,直接返回一个字符串,SpringMVC就会去找到字符串代表的页面进行跳转。

	@RequestMapping("rtest1")
	public String rtest1(){
		return "hello.jsp";
	}

注意:
1、返回的字符串是有格式要去的,需要写页面相对于根目录的地址和后缀
2、跳转的方式是转发
3、转发的关键字是"forward:",可以省略不写的,但是如果是重定向,则必须写,格式如**“redirect:hello.jsp”**
4、我们通过都会写视图解析器,返回字符串的路径和后缀通常都是配置好了的,但是要主要,转发才能进WEB-INF,因为它是受保护的,重定向的页面必须是在其他文件夹中,或者再次转发进WEB-INF

返回ModelAndView形式

我们知道ModelAndView是SpringMVC的一个组件,我们可以通过它进行返回,只需要通过setViewName设置好返回的页面即可。

	@RequestMapping("rtest2")
	public ModelAndView rtest2(){
		ModelAndView m = new ModelAndView();
		m.setViewName("hello.jsp");
		return m;
	}

当然了,我们也可以携带值进行返回,通过addObject方法即可。

	@RequestMapping("rtest2")
	public ModelAndView rtest2(){
		ModelAndView m = new ModelAndView();
		m.addObject("name","zhangsan");
		m.setViewName("hello.jsp");
		return m;
	}

扩展

除了以上方式进行数据响应,我们还可以通过其他的一些方式或写法,但是都是在上述的基础上实现的,如下。

1)ModelAndView作为形参

	@RequestMapping("rtest3")
	public ModelAndView rtest3(ModelAndView m){
		m.addObject("name","zhangsan");
		m.setViewName("hello.jsp");
		return m;
	}

2)Model作为形参

	@RequestMapping("rtest4")
	public String rtest4(Model m){
		m.addAttribute("name","zhangsan");
		return "hello.jsp";
	}

3)ModelMap作为形参

	@RequestMapping("rtest5")
	public String rtest5(ModelMap m){
		m.addAttribute("name","zhangsan");
		return "hello.jsp";
	}

4)HttpServletRequest作为形参

	@RequestMapping("rtest6")
	public String rtest6(HttpServletRequest m){
		m.setAttribute("name", "lisi");
		return "hello.jsp";
	}

5)HttpSession作为形参

	@RequestMapping("rtest7")
	public String rtest7(HttpSession m){
		m.setAttribute("name", "lisi");
		return "hello.jsp";
	}

为了和Java web阶段的知识点解耦,我们还是尽量不使用Request、session等方式,当然,作者我好像工作中用的还蛮多的…哈哈哈

回写数据

最原始的数据回写是通过response实现的,如下。

	@RequestMapping("rtest8")
	public void rtest8(HttpServletResponse resp) throws IOException{
		resp.getWriter().print("hello~");
	}

返回字符串

直接返回字符串,其实就和页面跳转的直接返回字符串一样了,SpringMVC就不清楚你到底是要跳转页面还是回写数据,因此,它会按照跳转页面的方式进行操作。
此时我们需要借助一个注解告诉SpringMVC我们是需要回写数据,而非页面跳转,这个注解就是@ResposeBody.

	@RequestMapping("rtest9")
	@ResponseBody
	public String rtest9(){
		return "hello java";
	}

返回对象或集合

我们平时直接返回字符串的方式是很少的,一般都是返回对象或集合,我们可以将对象或结合转成json格式再进行传输,这样做我们需要自己写,但是Spring其实已经集成Jackson,我们只需要配置一下就可以了,最简单的一种配置就是配置注解驱动<mvc:annotation-driven />,它底层会自动配置jackson的。
配置好后,直接使用。注意,此时虽然看着是返回地对象,但是传输时是将对象转成json对象进行传输的。

	@RequestMapping("rtest10")
	@ResponseBody
	public User rtest10(){
		User u = new User();
		u.setName("zs");
		u.setAge("18");
		return u;
	}

参考

https://www.bilibili.com/video/BV1WZ4y1P7Bp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值