RequestMapping注解
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
作用: 建立请求URL和处理方法之间的对应关系 出现位置:方法和类上 作用在类上:第一季访问目录 作用在方法上:第二级访问目录 注意:路径可以不写 / 表示应用的根目录开始 属性: path:指定请求的url value:value属性和path属性一样 mthod:指定该方法的请求方式 params:指定限制请求参数条件 headers:发送请求中必须包含的请求头
请求参数的绑定
基本数据类型和字符串类型
实体类(javabean)
集合数据类型(list、map集合等)
- 以传递用户名和密码为例,修改index.jsp页面,添加绑定参数
<html> <body> <h2>Hello World!</h2> <h1>Login</h1> <a href="/param?username=oneStar&password=123">login</a> </body> </html>
在控制层添加请求映射,以参数的形式进行传递
@RequestMapping(path = "/param")
public String user(@RequestParam("username") String username,@RequestParam("password") String password){
System.out.println(username);
System.out.println(password);
return "success";
}
实体类绑定参数
- 创建实体类
package com.pyb.pojo;
/**
* @version 1.0
* @Author 彭彦彬
* @Date 2025/1/9 21:01
* @注释
*/
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
- 修改index.jsp页面
<html>
<body>
<h1>Pojo</h1>
<form action="/saveUser" method="post">
username<input type="text" name="username"/><br>
password<input type="text" name="password"/><br>
<input type="submit" value="Button"/><br>
</form>
</body>
</html>
- 在控制层添加请求映射
@RequestMapping("/saveUser")
public String saveUser(User user) {
System.out.println(user);
return "success";
}
-
运行后在页面上输入用户名和密码点击提交即可将数据传递给服务器
-
集合绑定参数
为了方便将数据绑定到List集合和Map集合,这里设置两个用户名和密码,一个用List集合绑定,一个用Map集合绑定
- 修改index.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Collection Binding Parameters</title>
</head>
<body>
<h1>Collection and Map Binding Parameters</h1>
<form action="/mapUser" method="post">
User: <input type="text" name="list[0].username"/><br>
Password: <input type="password" name="list[0].password"/><br>
User: <input type="text" name="map['one'].username"/><br>
Password: <input type="password" name="map['one'].password"/><br>
<input type="submit" value="Submit"/><br>
</form>
</body>
</html>
- 编写集合实体类
package com.pyb.pojo;
import java.util.List;
import java.util.Map;
/**
* @version 1.0
* @Author 彭彦彬
* @Date 2025/1/9 21:13
* @注释
*/
public class mapUser {
private String username;
private String password;
List<mapUser> list;
Map<String,mapUser> map;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<mapUser> getList() {
return list;
}
public void setList(List<mapUser> list) {
this.list = list;
}
public Map<String, mapUser> getMap() {
return map;
}
public void setMap(Map<String, mapUser> map) {
this.map = map;
}
@Override
public String toString() {
return "mapUser{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", list=" + list +
", map=" + map +
'}';
}
}
- 在控制层添加请求映射
@RequestMapping(path="/mapUser") //请求映射
public String mapUser(mapUser mapuser){
System.out.println(mapuser);
return "success";
}
- 运行后在页面上输入用户名和密码点击提交即可将数据以集合形式传递给服务器
解决中文乱码
在绑定参数的时候,当有中文时会出现乱码,而SpringMVC提供了解决方法,在web.xml添加过滤器进行配置即可