持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情
SpringMVC处理请求数据
使用Servlet处理请求数据
获取请求参数
- String param = request.getParameter();
获取请求头
- request.getHeader();
获取Cookie
- request.getCookies();
处理请求参数
- 默认情况:可以将请求参数名与入参参数名一致,会自动入参和进行类型转换。
@RequestMapping("/requestParam01")
public String requestParam01 (String stuname){
System.out.println("stuname = " + stuname);
return SUCCESS;
}
<h1>处理请求参数</h1>
<a th:href="@{/requestParam01(stuname='zs')}">测试处理请求参数</a>
-
@RequestParam注解
-
作用:如请求参数与入参参数名不一致时,可以使用@RequestParam注解设置入参参数名
-
属性
-
value/name
- 类型:String
- 作用:设置需要入参的参数名
-
required
-
类型:Boolean
-
作用:设置当前参数,是否必须入参
-
true:表示当前参数必须入参,如未入参会报如下错误
- 400【Required String parameter 'sName' is not present】
-
false:表示当前参数不必须入参,如未入参,装配null值
-
-
-
defaultValue
- 类型:String
- 作用:当装配数值为null时,指定当前defaultValue默认值
-
-
示例代码
<h1>处理请求参数</h1> <a th:href="@{/requestParam01(sName='zs')}">测试处理请求参数</a>/* 获取请求参数 */ @RequestMapping("/requestParam01") public String requestParam01 (@RequestParam(value = "sName")String stuname, @RequestParam(value = "sId",required = false,defaultValue = "1234")Integer stuId){ System.out.println("stuname = " + stuname); System.out.println("stuId = " + stuId); return SUCCESS; }
-
-
SpringMVC支持POJO入参
-
要求:请求参数名与POJO中的属性名保持一致
-
示例代码
<form th:action="@{/saveEmp}" method="POST"> id:<input type="text" name="id"><br> LastName:<input type="text" name="lastName"><br> Email:<input type="text" name="email"><br> Salary:<input type="text" name="salary"><br> <input type="submit" value="添加员工信息"> </form>/** * 获取请求参数POJO */ @RequestMapping(value = "/saveEmp",method = RequestMethod.POST) public String saveEmp(Employee employee){ System.out.println("employee = " + employee); return SUCCESS; }
-
处理请求头
-
语法: @RequestHeader注解
-
属性
-
value/name
- 类型:String
- 作用:设置需要获取请求头名称
-
required
-
类型:boolean
-
作用:【默认值true】
-
true:设置当前请求头是否为必须入参,如未入参会报如下错误
- 400【Required String parameter 'sName' is not present】
-
false:表示当前参数不必须入参,如未入参,装配null值
-
-
-
defaultValue
- 类型:String
- 作用:当装配数值为null时,指定当前defaultValue默认值
-
-
示例代码
<a th:href="@{/testGetHeader}">测试获取请求头</a>/** * 获取请求头 * @return */ @RequestMapping(value = "/testGetHeader") public String testGetHeader(@RequestHeader("Accept-Language")String al, @RequestHeader("Referer") String ref){ System.out.println("al = " + al); System.out.println("ref = " + ref); return SUCCESS; }
处理Cookie信息
服务器创建session时会创建一个特殊的cookie:JSESSIONID
-
语法: @CookieValue获取Cookie数值
-
属性
-
value/name
- 类型:String
- 作用:设置需要获取Cookie名称
-
required
-
类型:boolean
-
作用:【默认值true】
-
true:设置当前Cookie是否为必须入参,如未入参会报如下错误
- 400【Required String parameter 'sName' is not present】
-
false:表示当前Cookie不必须入参,如未入参,装配null值
-
-
-
defaultValue
- 类型:String
- 作用:当装配数值为null时,指定当前defaultValue默认值
-
-
示例代码
<a th:href="@{/setCookie}">设置Cookie信息</a><br> <a th:href="@{/getCookie}">获取Cookie信息</a><br>/** * 设置Cookie * @return */ @RequestMapping("/setCookie") public String setCookie(HttpSession session){ // Cookie cookie = new Cookie(); System.out.println("session.getId() = " + session.getId()); return SUCCESS; } /** * 获取Cookie * @return */ @RequestMapping("/getCookie") public String getCookie(@CookieValue("JSESSIONID")String cookieValue){ System.out.println("cookieValue = " + cookieValue); return SUCCESS; }
使用原生Servlet-API入参
- 将原生Servlet相关对象入参即可。之后调用相应方法。
<h1>使用原生Servlet-API</h1>
<a th:href="@{/servlet}">获取request信息</a><br>
/*
使用原生API,request入参
*/
@RequestMapping("/servlet")
public String servlet(HttpServletRequest request){
//获取Servlet上下文
ServletContext servletContext = request.getServletContext();
//获取文件真实路径
String realPath = servletContext.getRealPath("/webapp/WEB-INF/pages/index.html");
System.out.println("realPath = " + realPath);
return SUCCESS;
}
\