@Controller
@RequestMapping(value = "/my/user")
public class UserController {
private Log log = LogFactory.getLog(UserController.class);
@Autowired
private UserService userService;
@RequestMapping(value = "/findList")
//user 用于接收jsp 页面 form表单的属性值,model用于向jsp传返回值
public ModelAndView findList(User user,Model model){
ModelAndView mv = new ModelAndView("/page/user/list");
try {
System.out.println(user.getName());
List list = userService.findAll();
model.addAttribute("userName", user.getName());
mv.getModel().put("list", list);
mv.getModel().put("userName", "小馒头");
} catch (Exception e) {
log.error(e);
}
return mv;
}
}
jsp代码:
向后台传值的form表单:
<</span>html>
<</span>meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<</span>body>
<</span>h2>Hello World!</</span>h2>
<</span>form action="/MyProject/my/user/findList" method="post">
<</span>input type="text" name="name"/>
<</span>input type="submit" value="提交"/>
</</span>form>
</</span>body>
</</span>html>
需要注意的是,跟Struts2不一样的是,向spring mvc后台传值jsp form表单直接写对象的属性名,不用向Struts2那样需要 对象.属性名 (user.name)这样,
后台向前台传值有很多种方式,这里只列出了两种
1.使用 ModelAndView
ModelAndView mv = new ModelAndView("/page/user/list");
mv.getModel().put("list", list);
mv.getModel().put("userName", "小馒头");
2.使用 Model
model.addAttribute("userName", user.getName());
具体写法参数上面的controller代码。
接收返回值的jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %> <!-- 是否启用el表达式 -- >
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表页面</title>
</head>
<body>
这是用户列表页面${userName}
<table>
<c:forEach items="${list}" var="user">
<tr>
<td>${user.name }</td>
<td>${user.sex }</td>
<td>${user.age }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
这里要注意的是,一开始没有加这句话 <%@ page isELIgnored="false" %> el表达式不起作用,直接输出了${userName} ${user.name} ${user.sex} ${user.age},加上 这句话 el表达式才起作用
默认EL是忽略true的,所以不加EL是没法的.