控制器参数绑定

控制器参数绑定

普通类型的参数,比如字符串、整数等,可以直接在方法的参数上获得。需要与浏览器发过来的参数名称一致,包括 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)

这就是传说中的自动装箱。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注