控制器参数绑定
普通类型的参数,比如字符串、整数等,可以直接在方法的参数上获得。需要与浏览器发过来的参数名称一致,包括 POST 和 GET 方式均可。
@RequestMapping("/search")
public String search(String key){
System.out.println("查询关键字是:"+ key);
return "index";
}Code language: JavaScript (javascript)
访问地址:http://localhost:8080/SpringDemo/home/search?key=bamn
实体类参数绑定(自动装箱)
参数还可以是一个实体类对象。
package cn.bamn.model;
public class AccountRegister {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String name;
private String password;
}Code language: JavaScript (javascript)
在控制器方法参数中直接使用该类型对象:
@RequestMapping(value="/register",method=RequestMethod.GET)
public String register(){
return "register";
}
@RequestMapping(value="/register",method=RequestMethod.POST)
public String register(AccountRegister account){
System.out.println("会员名:"+account.getName());
return "welcome";
}Code language: JavaScript (javascript)
一个处理 POST,一个处理 GET。
注册页面表单视图(register.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>Insert title here</title>
</head>
<body>
<form action="/SpringDemo/home/register" method="post" >
<div>
账号:<input type="text" name="name"/>
</div>
<div>
密码:<input type="text" name="password"/>
</div>
<div>
<input type="submit" value="提交"/>
</div>
</form>
</body>
</html>Code language: HTML, XML (xml)
欢迎信息视图(welcome.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>Insert title here</title>
</head>
<body>
欢迎
</body>
</html>Code language: HTML, XML (xml)
中文问题处理
在 web.xml 中增加过滤器:
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>Code language: HTML, XML (xml)
这就是传说中的自动装箱。
Previous: Spring MVC 请求分发与配置
Next: 使用 Model 向视图传递数据