转自师兄:@郑清
功能类:
-
/**
-
* 传递参数的四种方式:
-
* 1.使用Model方式(采用!!!)
-
* 2.通用ModelAndView方式
-
* 3.HttpServletRequest方式(不建议使用)
-
* 4.通过返回值传参(不建议使用)
-
* 跳转方式: 1.重定向 2.请求转发
-
* @author 郑清
-
*/
-
@Controller
-
public
class Demo{
-
/*
-
* 1.使用Model方式(采用!!!)
-
*/
-
@RequestMapping(
"/data1")
-
public String demo1(Model model){
-
model.addAttribute(
"data",
"数据:李四");
//设置数据到前台
-
User u =
new User();
-
u.setUsername(
"张三");
-
//添加模型数据,key的值为对象的类型首字母小写 ex:User-->user
-
model.addAttribute(u);
-
return
"test.jsp";
-
}
-
/*
-
* 2.通用ModelAndView方式
-
*/
-
@RequestMapping(
"/data2")
-
public ModelAndView demo2(){
-
ModelAndView mav =
new ModelAndView();
//模型和视图对象
-
mav.addObject(
"data",
"数据:张三");
//设置数据到前台
-
User u =
new User();
-
u.setUsername(
"李四");
-
//添加模型数据,key的值为对象的类型首字母小写 ex:User-->user
-
mav.addObject(u);
-
//添加跳转的路径
-
mav.setViewName(
"/test.jsp");
-
return mav;
-
}
-
/*
-
* 3.HttpServletRequest方式(不建议使用)
-
*/
-
@RequestMapping(
"/data3")
-
public void demo3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
-
request.setAttribute(
"data",
"数据:hello");
-
request.getRequestDispatcher(
"test.jsp").forward(request, response);
-
}
-
/*
-
* 4.通过返回值传参(不建议使用):
-
* SpringMVC会自动创建一个ModelAndView对象,并且调用添加模型 mav.addObject("user", user);
-
* 并且访问路径就是视图的名称 /data4 mav.setViewName("/data4");
-
* 注意:需配置视图解析器解决:ViewResolver
-
*/
-
@RequestMapping(
"/data4")
-
public User demo4(){
-
User u =
new User();
-
u.setUsername(
"王五");
-
return u;
-
}
-
/*
-
* 请求转发(forward):
-
* 上面4个案例都是转发,转发的值都是放到request请求作用域,下一个页面可以取出
-
* Url地址不会改变
-
*/
-
@RequestMapping(
"/data5")
-
public String demo5(Model model,HttpSession session){
-
model.addAttribute(
"data",
"数据:使用model传递");
//可以取出数据
-
-
User u =
new User();
-
u.setUsername(
"张三");
-
model.addAttribute(u);
-
-
session.setAttribute(
"s", u);
//可以取出数据
-
-
//return "/test.jsp";//返回路径
-
return
"forward:/test.jsp";
//-->相当于手动指定了跳转的路径
-
}
-
/*
-
* 重定向(redirect):
-
* 重定向就是发出一个全新的请求,
-
* 如果把值放到request请求,下一个页面不能取出
-
* 如果把值放到session会话请求,下一个页面可以取出
-
* url地址会改变
-
*/
-
@RequestMapping(
"/data6")
-
public String demo6(Model model,HttpSession session){
-
// model.addAttribute("data","张三");//不可以取出数据
-
session.setAttribute(
"s",
"张三session");
//可以取出数据
-
return
"redirect:/test.jsp";
-
}
-
}
SpringMVC配置视图解析器:
会自动添加到返回的路径中,针对requestMapping中的路径不会添加
SpringMVC默认:InternalResourceViewResolver : 支持默认视图,采用forward,redirect。
视图名规则:不写前缀默认为"转发"
视图名字符串前缀:
forward:/xxx.jsp ->采用转发
redirect:/xxx.jsp ->采用重定向
设置视图路径的前后缀,该配置可以让我们写视图路径的时候更简单!!!
-
class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
-
<property name="prefix" value="/WEB-INF/jsps/" />
-
<property name="suffix" value=".jsp" />
-
bean>
User类:
-
public
class User {
-
private String username;
-
private String password;
-
private Date date;
-
-
@JsonFormat(pattern=
"yyyy-MM-dd",timezone=
"GMT+8")
//日期格式化注解
-
public Date getDate() {
-
return date;
-
}
-
@DateTimeFormat(pattern=
"yyyy-MM-dd")
-
public void setDate(Date date) {
-
this.date = date;
-
}
-
public String getUsername() {
-
return username;
-
}
-
public void setUsername(String username) {
-
this.username = username;
-
}
-
public String getPassword() {
-
return password;
-
}
-
public void setPassword(String password) {
-
this.password = password;
-
}
-
@Override
-
public String toString() {
-
return
"User [username=" + username +
", password=" + password +
", date=" + date +
"]";
-
}
-
}
test.jsp页面:
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
-
pageEncoding=
"UTF-8"%>
-
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
<title>Insert title here
title>
-
head>
-
<body>
-
${requestScope.data }
<br/>
-
获取添加的默认对象中的username的值:${requestScope.user.username }
<br/>
-
获取session中user对象的username的值:${sessionScope.s.username }
-
body>
-
html>