1. 在jsp页面中经常要将表单中的内容提交到后台的控制器中,这个时候会出现一些问题
2. 常见的问题如下:
①jsp页面中的表单的name属性与对应的普通的JavaBean中的属性名字不一致导致在控制器中接收到的数据为空,所以需要将表单中的name属性的名字与JavaBean中的属性名字要一一对应(表单中提交的数据就是由表单中的name属性决定的)
在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="login" method="post">
<input type="text" name="username"><br><br>
<input type="password" name="password"><br><br>
<br><br>
<input type="radio" value="男" name="gender">男
<input type="radio" value="女" name="gender">女
<select name="city">
<option class="beijing" value="beijing">北京</option>
<option class="shanghai" value="shanghai">上海</option>
<option class="dongjing" value="dongjing">东京</option>
<option class="nanjing" value="nanjing">南京</option>
</select>
<br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
在JavaBean中创建一个对应的类来进行接收:
package com;
public class User {
private String username;
private String password;
private String city;
private String gender;
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 String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password
+ ", city=" + city + ", gender=" + gender + "]";
}
}
在控制器中使用对象来接收jso页面接收过来的数据:
package com;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Login{
@RequestMapping("login")
public String login(User user){
System.out.println("登录的用户为: " + user);
return "success";
}
}
②出现表单中输入的中文提交到控制台中输出的数据为乱码的情况,这个可以使用在web.xml中配置相应的过滤器来解决,并且需要注意的是在jsp页面中提交的表单中要注明method属性为post才不会导致乱码
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<form action="login" method="post">
...
</form>