spring中的表单提交问题

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>

猜你喜欢

转载自blog.csdn.net/qq_39445165/article/details/86530168