3.跳转方式
1.默认跳转方式是请求转发(servlet有两种跳转方式包括:请求转发和重定向)
2.设置返回值字符串内容
2.1添加redirect:资源路径 重定向
return "redirect:/main.jsp";
2.2添加forward: 资源路径或省略不写forword 请求转发
return "forword:/main.jsp";
4.视图解析器
1.Springmvc会提供默认视图解析器
2.程序员也可以自定义视图解析器(springmvc.xml中配置)
<!-- 配置ViewResovler:视图解析器,解析结果,准备跳转到具体的物理视图 -->
<!-- 一般不使用,一般使用默认的就行,使用情况是这样的,当要把jsp等视图文件放在其他文件目录下的时候就用这个 -->
<bean id="viewresovler" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"></property><!-- 在之前加/ -->
<property name="suffix" value=".jsp"></property><!-- 在之后加.jsp -->
</bean>
3.如果希望不执行自定义的视图解析器,就在返回前添加redirect:或者forward:
5.@ResponseBody
1.当在方法上只有@RequestMapping()时,无论方法值是什么都认为是需要跳转的
2.在方法上添加@ResponseBody时恒不跳转
2.1如果返回值满足key-value形式(对象或map)
2.1.1把响应头设置为application/json:charset=utf-8
2.1.2把转换后的内容输出流的形式响应给客户端
@RequestMapping("demo4")
@ResponseBody
public People demo4() {
People p=new People();
p.setUsername("张三");
p.setAge(12);
p.setPassword("123454");
return p;
}
2.2如果返回值不满足key-value,例如返回值为String
2.2.1把响应头设置为text/html
2.2.2把方法返回值以流的形式直接输出
2.2.3如果返回值是中文,就会出现中文乱码,解决办法是:
produces =“text/html;charset=utf-8”
@RequestMapping(value="demo5",produces ="text/html;charset=utf-8" )
@ResponseBody
public String demo5() {
return "张三";
}
6.springmvc中作用域传值
- 具体项目代码看springmvc03
- 使用原生Servlet
1.1在HanderMethod(也就是控制器中负责处理请求的函数)参数中添加作用域对象
//使用作用域进行传值
@RequestMapping("demo1")
public String demo1(HttpServletRequest req,HttpSession sessionParam) {
//request作用域
req.setAttribute("request","request的值");
HttpSession session=req.getSession();
//session作用域
session.setAttribute("session", "session的值");
sessionParam.setAttribute("sessionParam", "sessionParam的值");
//application作用域
ServletContext application=req.getServletContext();
application.setAttribute("application", "application的值");
return "/main.jsp";
}
2使用Map集合
2.1把map中内容放在request作用域中
2.2spring会对map集合通过BindingAwareModelMap进行实例化(其本质是request)
@RequestMapping("demo2")
public String demo2(Map<String,Object>map) {
map.put("map", "map的值");
return "/main.jsp";
}
3.使用SpringMVC中的Model接口
3.1把内容最终存放在request作用域中
//使用Modle
@RequestMapping("demo3")
public String demo3(Model mod) {
mod.addAttribute("model","model的值");
return "/main.jsp";
}
4.使用springmvc中的ModleAndView
//使用ModelAndView
@RequestMapping("demo4")
public ModelAndView demo4() {
ModelAndView mod=new ModelAndView("/main.jsp");
mod.addObject("mav", "ModelAndView");
return mod;
}
%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
使用作用域传值<br/>
request:${requestScope.request}<br/>
session:${sessionScope.session}<br/>
sessionParam:${sessionScope.sessionParam}<br/>
application:${applicationScope.application}<br/>
<hr/>
使用map传值<br/>
map:${requestScope.map}<br/>
<hr/>
使用model<br/>
model:${requestScope.model}<br/>
<hr/>
使用ModelAndView<br/>
model:${requestScope.mav}<br/>
</body>
</html>