一、如何将模型数据传递给视图
1、1第一种方式
image.png示例代码:
package cn.smbms.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import com.sun.istack.internal.logging.Logger;
@Controller
public class IndexController {
private Logger logger = Logger.getLogger(IndexController.class);
@RequestMapping("/index")
public String index() {
logger.info("hello, springmvc");
return "index";
}
@RequestMapping(value="/welcome", method=RequestMethod.GET, params="username")
public String welcome(@RequestParam String username) {
logger.info("hello, springmvc! username:" + username);
return "index";
}
@RequestMapping("/index1")
public ModelAndView index(String username) {
ModelAndView mView = new ModelAndView();
mView.addObject("username", username);
mView.setViewName("index");
logger.info("hello, springmvc");
return mView;
}
}
jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>welcome.spring MVC!</h1>
<h1>username--> ${username }</h1>
</body>
</html>
运行结果正常。
1.2第二种方式
image.png示例代码:
package cn.smbms.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import com.sun.istack.internal.logging.Logger;
@Controller
public class IndexController {
private Logger logger = Logger.getLogger(IndexController.class);
@RequestMapping("/index")
public String index() {
logger.info("hello, springmvc");
return "index";
}
@RequestMapping(value="/welcome", method=RequestMethod.GET, params="username")
public String welcome(@RequestParam String username) {
logger.info("hello, springmvc! username:" + username);
return "index";
}
@RequestMapping("/index1")
public ModelAndView index(String username) {
ModelAndView mView = new ModelAndView();
mView.addObject("username", username);
mView.setViewName("index");
logger.info("hello, springmvc");
return mView;
}
@RequestMapping("/index2")
public String index2(String username, Model model) {
model.addAttribute("username", username);
return "index";
}
}
如果不指定key的话:
@RequestMapping("/index2")
public String index2(String username, Model model) {
model.addAttribute(username);
return "index";
}
则在前台获取数据的时候填入的key是该数据的数据类型:
<body>
<h1>welcome.spring MVC!</h1>
<h1>username--> ${string }</h1>
</body>
如果放进去的是user类型的数据:
@RequestMapping("/index2")
public String index2(String username, Model model) {
model.addAttribute(username);
User user = new User();
user.setUserName(username);
model.addAttribute(user);
return "index";
}
前台代码如下:
<body>
<h1>welcome.spring MVC!</h1>
<h1>username--> ${user.userName }</h1>
</body>
1.3使用map入参
Model其实就是一个Map的数据结构,那么是否可以使用Map入参呢?
是可以的。
示例代码:
@RequestMapping("/index3")
public String index3(String username, Map<String, Object>model) {
model.put("username", username);
return "index";
}
前台:
<body>
<h1>welcome.spring MVC!</h1>
<h1>username--> ${username }</h1>
</body>
注:作为SpringMVC的标准用法,推荐使用Model。
二、视图解析器——ViewResolver
将逻辑视图名与JSP等视图技术进行匹配。
image.png
网友评论