网站生鲜建设市场分析,学校网站建设哪家好,网站建设接外包流程,佛山网站建设 天博SpringMVC获取请求参数
通过ServletAPI获取
将HttpServletRequest作为控制器方法的形参#xff0c;此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象
index.html form th:action{/test/param} methodpost用户名#…SpringMVC获取请求参数
通过ServletAPI获取
将HttpServletRequest作为控制器方法的形参此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象
index.html form th:action{/test/param} methodpost用户名input typetext nameusername密码input typepassword namepasswordinput typesubmit value提交/formTestParamController.java
package com.atguigu.SpringMVC.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;Controller
public class TestParamController {RequestMapping(/test/param)public String getParamByServletAPI(HttpServletRequest request){String username request.getParameter(username);String password request.getParameter(password);System.out.println(username为usernamepassword为password);return success;}
}成功获取到表单提交的信息这是采用原生Servlet的方式获取 通过控制器方法的形参获取请求参数
在控制器方法的形参位置设置和请求参数同名的形参当浏览器发送请求匹配到请求映射时在DispatcherServlet中就会将请求参数赋值给相应的形参
index.html form th:action{/testParam} methodpost用户名input typetext nameusername密码input typepassword namepasswordinput typesubmit value提交/formTestParamController.java RequestMapping(/testParam)public String getParam(//RequestParam注解以键值对的方式获取到值并赋值给变量RequestParam(username) String name,//自动匹配String password){System.out.println(username为namepassword为password);return success;}成功获取到表单提交的信息(可以省略RequestParam注解SpringMVC匹配到请求映射时就会自动为参数赋值) RequestParam注解一共有三个属性
value指定为形参赋值的请求参数的参数名required设置是否必须传输此请求参数默认值为true表示当前请求必须传输value所指定的请求参数(只要有请求参数即可值为空都没问题)若没有传输该请求参数且没有设置defaultValue属性则会报错400Required String parameter xxx is not present为false时没有获取到请求参数时值为nulldefaultValue不管required属性值为true或false当value所指定的请求参数没有传输或传输的值为时则使用默认值为形参赋值 RequestHeader将请求头信息和控制器方法的形参创建映射关系属性和用法同RequestParam 获取来源信息RequestHeader(referer) String referer 输出结果http://localhost:8080/SpringMVC/ CookieValue将cookie数据和控制器方法的形参创建映射关系属性和用法同RequestParam因为session里面存储的数据就是cookie的形式所以获取session对象之后就有cookie数据了 获取cookie的JSESSIONID信息 xxx(HttpServletRequest request,CookieValue(JSESSIONID) String jsessionId) HttpSession session request.getSession();//获取session对象即可System.out.println(jsessionId);输出结果B096EFFCB054BC496DCD805203C49690 通过POJO获取请求参数
可以在控制器方法的形参位置设置一个实体类类型的形参此时若浏览器传输的请求参数的参数名和实体类中的属性名一致那么请求参数就会为此属性赋值
index.html !--根据映射匹配get方式和post方式都可以匹配成功--form th:action{/testPOJO}IDinput typetext nameid用户名input typetext nameusername密码input typepassword namepassword年龄input typetext nameage成绩input typetext namegender邮箱input typeemail nameemailinput typesubmit value提交/formTestPOJOController.java RequestMapping(/testPOJO)public String testPOJO(User user){System.out.println(user);//User{id6, usernameyxx, password123, age18, gender97, email156899qq.com}return success;}解决获取请求参数乱码问题
在JavaWeb中解决乱码问题采用request.setCharacterEncoding(UTF-8)的语句解决在SpringMVC中因为会在访问地址对应方法之前就自动获取了请求参数而上述语句需要在获取前设置才有效为了解决获取请求参数的乱码问题可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter使用前必须在web.xml中先进行注册 Tomcat8及以上对于以get方式提交表单的表单信息获取参数默认为UTF-8的编码方式只有post方式需要设置而Tomcat7两种方式都要设置 web.xml !--配置springMVC的编码过滤器--filterfilter-nameCharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class!--设置请求的编码--init-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param!--设置响应的编码--init-paramparam-nameforceEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mappingSpringMVC中处理编码的过滤器一定要配置到其他过滤器之前否则无效且由于配置是全局生效无论get还是post方式都不会再乱码