springmvc有四种从前前端接收参数的方式
1、根据参数名直接接收
2、封装成对象接收
3、请求参数名映射
4、原生servlet方式
下面我一一为大家讲解:
一、根据参数名直接接收
这种方式需要前端页面的请求参数和后端接收方法的形参名一致并一一对应,举个例子:
前端页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/submit.action" method="get">
姓名:<input type="text" name="UserName">
性别:<input type="text" name="UserSex">
爱好:<input type="text" name="UserHobby">
<input type="submit" value="提交">
</form>
</body>
</html>
接收方法:
@Controller
public class UserController {
// <form action="<%=request.getContextPath()%>/submit.action" method="get">
// 姓名:<input type="text" name="UserName">
// 性别:<input type="text" name="UserSex">
// 爱好:<input type="text" name="UserHobby">
// <input type="submit" value="提交">
// </form>
@RequestMapping("/submit.action")
public String test(String UserName,int UserSex,String UserHobby){
System.out.println(UserName + UserSex + UserHobby);
return "main";
}
}
form表单中的name属性也就是参数名,必须和后端接收方法的形参列表相同,这样spring就可以自动接收参数。
二、封装成对象接收
将接收到的参数封装到一个实体类对象中,前端页面的参数名要和实体类的属性相同,后端方法的参数为实体类对象
实体类:
public class User {
private String UserName;
private Integer UserSex;
private String UserHobby;
public User(String userName, Integer userSex, String userHobby) {
UserName = userName;
UserSex = userSex;
UserHobby = userHobby;
}
@Override
public String toString() {
return "User{" +
"UserName='" + UserName + '\'' +
", UserSex=" + UserSex +
", UserHobby='" + UserHobby + '\'' +
'}';
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public Integer getUserSex() {
return UserSex;
}
public void setUserSex(Integer userSex) {
UserSex = userSex;
}
public String getUserHobby() {
return UserHobby;
}
public void setUserHobby(String userHobby) {
UserHobby = userHobby;
}
}
前端页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/submit.action" method="get">
姓名:<input type="text" name="UserName">
性别:<input type="text" name="UserSex">
爱好:<input type="text" name="UserHobby">
<input type="submit" value="提交">
</form>
</body>
</html>
后端方法:
@RequestMapping("/submit.action")
public String test(User user){
System.out.println(user);
return "main";
}
三、请求参数名映射
当前端页面传来的参数与我们后端方法的参数名不同时,可以通过@RequestParam注解的方式让两者形成映射关系从而达到参数传递的目的。
前端:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/submit.action" method="get">
姓名:<input type="text" name="UserName">
性别:<input type="text" name="UserSex">
爱好:<input type="text" name="UserHobby">
<input type="submit" value="提交">
</form>
<a href="${pageContext.request.contextPath}/小明/1/代码.action">发起请求</a>
</body>
</html>
后端:
@Controller
public class UserController {
// <form action="<%=request.getContextPath()%>/submit.action" method="get">
// 姓名:<input type="text" name="UserName">
// 性别:<input type="text" name="UserSex">
// 爱好:<input type="text" name="UserHobby">
// <input type="submit" value="提交">
// </form>
@RequestMapping("/submit.action")
public String test(
@RequestParam("UserName")
String name,
@RequestParam("UserSex")
int sex,
@RequestParam("UserHobby")
String hobby
)
{
System.out.println(name);
System.out.println(sex);
System.out.println(hobby);
return "main";
}
}
在形参上使用@RequestParam注解,注解的参数是前端发来的请求的参数名,给后端的参数上注解后就形成了映射关系,前端参数的值就自动传递给了后端的形参,我们在方法中直接使用后端的参数即可。
四、原生Servlet方式
我们虽然用了spring但是使用原生的servlet也是可以获得到参数的
前端代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/submit.action" method="get">
姓名:<input type="text" name="UserName">
性别:<input type="text" name="UserSex">
爱好:<input type="text" name="UserHobby">
<input type="submit" value="提交">
</form>
<a href="${pageContext.request.contextPath}/小明/1/代码.action">发起请求</a>
</body>
</html>
后端:
@Controller
public class UserController {
// <form action="<%=request.getContextPath()%>/submit.action" method="get">
// 姓名:<input type="text" name="UserName">
// 性别:<input type="text" name="UserSex">
// 爱好:<input type="text" name="UserHobby">
// <input type="submit" value="提交">
// </form>
@RequestMapping("/submit.action")
public String test(HttpServletRequest request)
{
String userName = request.getParameter("UserName");
String userSex = request.getParameter("UserSex");
String userHobby = request.getParameter("UserHobby");
System.out.println(userName + userSex + userHobby);
return "main";
}
}
以上就是springMVC接收前端参数常见的几种方式,如果大家有其他好的可以获取前端参数的方式欢迎评论和留言。如果感觉对你有帮助请帮我点点关注和小星星吧!谢谢支持!