@RequestMapping 设置请求路径
@RequestParam 来接收前台中同名的键值对参数
@PathVariable 映射URL中绑定的占位符
@ModelAttribute可以类似于pojo接收多个参数,用Javabean对象存储,再和Model相配合,输出到前台。
@Controller
@RequestMapping("/test")
public class TestController {
private static final Log logger = LogFactory.getLog(TestController.class);
//url:http://localhost:8080/HelloWorld/test/modelAttForm
@RequestMapping(value="/{formName}")
public String loginForm(@PathVariable String formName){
//动态跳转页面
return formName;
}
/**
* 测试modelAttForm.jsp 中的表单提交,直接用@ModelAttribute User user接收了数据(类似于pojo)
* @param user
* @param model
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(@ModelAttribute User user,Model model) {
logger.info(user);
user.setUsername("ModelAttribute测试");
System.out.println(user);
model.addAttribute("user", user);
return "result";
}
//@RequestParam 来接收前台中loginname、password参数
@RequestMapping(value="/login2",method=RequestMethod.POST)
public String login2(@RequestParam("loginname") String loginname,
@RequestParam("password") String password,Model model) {
logger.info("login2 POST方法被调用...");
User user = new User();
user.setLoginname(loginname);
user.setPassword(password);
model.addAttribute("user", user);
return "result";
}
//pojo接收参数
@RequestMapping(value="/login3",method=RequestMethod.POST)
public String login3(User user,Model model) {
logger.info(user);
user.setUsername("pojp测试");
System.out.println(user);
model.addAttribute("user", user);
return "result";
}
}
public class User {
private String loginname;
private String password;
private String username;
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "User [loginname=" + loginname + ", password=" + password + ", username=" + username + "]";
}
}
modelAttForm.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
<h4>ModelAttribute测试</h4>
<form action="login" method="post">
loginname: <input type="text" name="loginname"><br>
password: <input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
<hr>
<h4>RequestParam测试</h4>
<form action="login2" method="post">
loginname: <input type="text" name="loginname"><br>
password: <input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
<hr>
<h4>pojo测试</h4>
<form action="login3" method="post">
loginname: <input type="text" name="loginname"><br>
password: <input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
result.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>
</head>
<body>
<h3>${requestScope.user}</h3>
<br><br>
登录名:${requestScope.user.loginname }<br>
密码:${requestScope.user.password }<br>
用户姓名:${requestScope.user.username }<br>
</body>
</html>
启动服务器后,输入地址http://localhost:8080/HelloWorld/test/modelAttForm
测试结果依次为:(跳转页面和控制台输出)
web.xml配置springmvc 的DispatcherServlet
springmvc中配置自动扫描包和视图解析器,这里就不一一列出了。在web.xml中配置了编码的filter,那么前后台就不会有乱码的问题了。