请求数据:请求参数,请求cookie信息,请求头信息...
javaWEB:通过HttpServletRequest request
request.getParameters(参数名),request.getParameterMap()
request.getCookie(),request.getHeader();
param.jsp
1 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true" language="java" %> 2 <html> 3 <head> 4 <title>传参</title> 5 </head> 6 <body> 7 <form action="/param" method="post"> 8 用户名:<input type="text" name="username"><br> 9 密 码:<input type="password" name="password"><br> 10 年 龄:<input type="text" name="age"><br> 11 省 份:<input type="text" name="province"><br> 12 城 市:<input type="text" name="city"><br> 13 乡 镇:<input type="text" name="country"><br> 14 <input type="submit" value="提交"> 15 </form> 16 </body> 17 </html>
ParamController.java
1 package com.iwakan.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6 7 /** 8 * 在springMVC获取客户端传递的数据的方式: 9 * 1.在处理请求的方法中,加入相应的形参,保证参数名和传递的数据参数名保持一致,就可以自动赋值 10 * value:当不满足赋值条件时(即参数名和传递的数据参数名比一致),可以使用@RequestMapping的value属性,指定映射关系 11 * required:设置形参是否必须赋值,默认为true,必须赋值,若设置为false,则不必须赋值,因此形参的值为null 12 * defaultValue:若形参所获得的值为null,则设置哟个默认值,使用场景:分页和模糊查询等。 13 * 14 */ 15 @Controller 16 public class ParamController { 17 @RequestMapping(value = "/param",method = RequestMethod.POST) 18 public String param(String username, String password, Integer age){ 19 System.out.println("username=="+username+",password=="+password+",age=="+age); 20 return "success"; 21 } 22 }
当参数名和传递的数据参数名不一致时,可以使用@RequestParam注解
param.jsp
1 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true" language="java" %> 2 <html> 3 <head> 4 <title>传参</title> 5 </head> 6 <body> 7 <form action="/param" method="post"> 8 用户名:<input type="text" name="name"><br> 9 密 码:<input type="password" name="password"><br> 10 年 龄:<input type="text" name="age"><br> 11 省 份:<input type="text" name="province"><br> 12 城 市:<input type="text" name="city"><br> 13 乡 镇:<input type="text" name="country"><br> 14 <input type="submit" value="提交"> 15 </form> 16 </body> 17 </html>
ParamController.java
1 package com.iwakan.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6 import org.springframework.web.bind.annotation.RequestParam; 7 8 /** 9 * 在springMVC获取客户端传递的数据的方式: 10 * 1.在处理请求的方法中,加入相应的形参,保证参数名和传递的数据参数名保持一致,就可以自动赋值 11 * value:当不满足赋值条件时(即参数名和传递的数据参数名不一致),可以使用@RequestMapping的value属性,指定映射关系 12 * required:设置形参是否必须赋值,默认为true,必须赋值,若设置为false,则不必须赋值,因此形参的值为null 13 * defaultValue:若形参所获得的值为null,则设置哟个默认值,使用场景:分页和模糊查询等。 14 * 15 */ 16 @Controller 17 public class ParamController { 18 @RequestMapping(value = "/param",method = RequestMethod.POST) 19 public String param(@RequestParam(value = "name",required = false,defaultValue = "admin") String username, String password, Integer age){ 20 System.out.println("username=="+username+",password=="+password+",age=="+age); 21 return "success"; 22 } 23 }
当用户名不填写实会怎样呢。
ParamController .java
1 package com.iwakan.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.*; 5 6 /** 7 * 在springMVC获取客户端传递的数据的方式: 8 * 1.在处理请求的方法中,加入相应的形参,保证参数名和传递的数据参数名保持一致,就可以自动赋值 9 * value:当不满足赋值条件时(即参数名和传递的数据参数名不一致),可以使用@RequestMapping的value属性,指定映射关系 10 * required:设置形参是否必须赋值,默认为true,必须赋值,若设置为false,则不必须赋值,因此形参的值为null 11 * defaultValue:若形参所获得的值为null,则设置哟个默认值,使用场景:分页和模糊查询等。 12 */ 13 @Controller 14 public class ParamController { 15 16 /** 17 * 18 * @RequestHeader: 在处理请求的方法上,获取请求头信息,用法和@RequestParam一致 19 */ 20 @RequestMapping(value = "/getHeader", method = RequestMethod.POST) 21 public String getHeader(@RequestHeader(value = "Accept-Language") String acceptLanguage) { 22 23 System.out.println(acceptLanguage); 24 return "success"; 25 } 26 27 /** 28 * 29 * @CookieValue: 在处理请求的方法上,获取cookie信息,用法和@RequestParam一致 30 */ 31 @RequestMapping(value = "/getCookie", method = RequestMethod.POST) 32 public String getCookie(@CookieValue(value = "JSESSIONID") String sessionId) { 33 System.out.println(sessionId); 34 return "success"; 35 } 36 }
param.jsp
1 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true" language="java" %> 2 <html> 3 <head> 4 <title>传参</title> 5 </head> 6 <body> 7 <form action="/param" method="post"> 8 用户名:<input type="text" name="name"><br> 9 密 码:<input type="password" name="password"><br> 10 年 龄:<input type="text" name="age"><br> 11 省 份:<input type="text" name="province"><br> 12 城 市:<input type="text" name="city"><br> 13 乡 镇:<input type="text" name="country"><br> 14 <input type="submit" value="提交"> 15 </form> 16 <form action="/getHeader" method="post"> 17 <input type="submit" value="@RequestHeader测试"> 18 </form> 19 <form action="/getCookie" method="post"> 20 <input type="submit" value="@CookieValue测试"> 21 </form> 22 23 </body> 24 </html>
User.java
1 package com.iwakan.pojo; 2 3 public class User { 4 private Integer id; 5 private String username; 6 private String password; 7 private Integer age; 8 private Address address; 9 10 public Integer getId() { 11 return id; 12 } 13 14 public void setId(Integer id) { 15 this.id = id; 16 } 17 18 public String getUsername() { 19 return username; 20 } 21 22 public void setUsername(String username) { 23 this.username = username; 24 } 25 26 public String getPassword() { 27 return password; 28 } 29 30 public void setPassword(String password) { 31 this.password = password; 32 } 33 34 public Integer getAge() { 35 return age; 36 } 37 38 public void setAge(Integer age) { 39 this.age = age; 40 } 41 42 public Address getAddress() { 43 return address; 44 } 45 46 public void setAddress(Address address) { 47 this.address = address; 48 } 49 50 @Override 51 public String toString() { 52 return "User{" + 53 "id=" + id + 54 ", username=‘" + username + ‘\‘‘ + 55 ", password=‘" + password + ‘\‘‘ + 56 ", age=" + age + 57 ", address=" + address + 58 ‘}‘; 59 } 60 }
Address.java
param.jsp
1 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true" language="java" %> 2 <html> 3 <head> 4 <title>传参</title> 5 </head> 6 <body> 7 <form action="/param" method="post"> 8 用户名:<input type="text" name="username"><br> 9 密 码:<input type="password" name="password"><br> 10 年 龄:<input type="text" name="age"><br> 11 省 份:<input type="text" name="address.province"><br> 12 城 市:<input type="text" name="address.city"><br> 13 乡 镇:<input type="text" name="address.country"><br> 14 <input type="submit" value="提交"> 15 </form> 16 <form action="/getHeader" method="post"> 17 <input type="submit" value="@RequestHeader测试"> 18 </form> 19 <form action="/getCookie" method="post"> 20 <input type="submit" value="@CookieValue测试"> 21 </form> 22 23 </body> 24 </html>
ParamController.java
1 package com.iwakan.controller; 2 3 import com.iwakan.pojo.User; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.*; 6 7 @Controller 8 public class ParamController { 9 10 11 /** 12 * 可以使用POJO获取客户端数据,要求实体对象中的属性名一定要和页面中表单元素的name属性值一致,且支持级联关系 13 * @param user 14 * @return 15 */ 16 @RequestMapping(value="/param",method = RequestMethod.POST) 17 public String param(User user){ 18 System.out.println(user); 19 return "success"; 20 } 21 }
问题情况:IDEA中使用HttpServletRequest不能导入
IDEA中引用不到HttpServletRequest的解决方案:
分析:这个问题实际上是引用不到servlet-api.jar,IDEA 没有导入 servlet-api.jar 这个架包,需要你手动导入支持。
解决问题。
案例:ParamController.java
1 package com.iwakan.controller; 2 3 import com.iwakan.pojo.User; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.*; 6 import org.springframework.web.multipart.support.AbstractMultipartHttpServletRequest; 7 8 import javax.servlet.http.HttpServletRequest; 9 10 11 @Controller 12 public class ParamController { 13 14 /** 15 * 可以使用POJO获取客户端数据,要求实体对象中的属性名一定要和页面中表单元素的name属性值一致,且支持级联关系
可以通过设置形参的方式,获取ServletRequest 16 * @param user 17 * @return 18 */ 19 @RequestMapping(value="/param",method = RequestMethod.POST) 20 public String param(User user, HttpServletRequest request) { 21 System.out.println(request.getParameter("username")); 22 //System.out.println(user); 23 return "success"; 24 } 25 }
原文:https://www.cnblogs.com/iwakan/p/13771927.html