SpringMVC-设置跳转方式、自定义视图解析器以及@ResponseBody的使用

(一)设置页面跳转方式

1. 默认跳转方式请求转发

@RequestMapping("demo08")
	public String demo08() {
		//不写默认是转发
		return "mian";
	};

2. 设置返回值字符串内容

2.1 添加 redirect:资源路径重定向

@RequestMapping("demo10")
	public String demo010() {
		//设置为重定向到main.jsp页面
		return "redirect:/main.jsp";
	};

2.2 添加 forward:资源路径或省略 forward: 转发

@RequestMapping("demo09")
	public String demo09() {
		//设置为转发到main.jsp页面
		return "forward:/main.jsp" ;
	};

(二)设置自定义视图解析器

1. SpringMVC 会提供默认视图解析器.

2. 程序员自定义视图解析器(在SpringMvc配置文件中配置)

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>

3. 如果希望不执行自定义视图解析器,在方法返回值前面添加 forward:或 redirect:

@RequestMapping("demo10")
	public String demo010() {
		//设置为重定向到main.jsp页面
		return "redirect:/main.jsp";
	};

注意:如果在方法返回值前加forward:或者redirect:则SpringMVC配置文件中的自定义视图解析器无效。return "forward:/main"表示转发到映射名为main的controller,而return "forward:/main.jsp"表示转发到main.jsp页面。

(三)@ResponseBody

1. 在方法上只有@RequestMapping 时,无论方法返回值是什么认为需要跳转

2. 在方法上添加@ResponseBody(恒不跳转)

@RequestMapping("demo11")
	@ResponseBody
	public People demo11() {
		People p=new People();
		p.setAge(20);
		p.setName("张三");
		return p;
	};
public class People {
	private String name;
	private int age;
	public People() {
		super();
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "People [name=" + name + ", age=" + age + "]";
	}
	

}

 在浏览器输入:http://localhost:8080/SpringMVCLearn/demo11

返回:

{"name":"张三","age":20}

注意:@ResponseBody底层使用 Jackson 进行 json 转换,在项目中一定要导入 jackson 的 jar

Jackson的下载地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/core/

关于Jackson的功能介绍与使用,参见:https://blog.csdn.net/u011054333/article/details/80504154

2.1 如果返回值满足 key-value 形式(对象或 map) @ResponseBody的底层把响应头设置为 application/json;charset=utf-8 ,把转换后的内容输出流的形式响应给客户端。

2.2 如果返回值不满足 key-value,例如返回值为 String。底层把相应头设置为 text/html ,把方法返回值以流的形式直接输出.。

2.3 如果返回值包含中文,会出现中文乱码。此时,这样解决:

@RequestMapping(value="demo12",produces="text/html;charset=utf-8")

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城南皮卡丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值