网站建设开什么名目,2019做网站必须做可信网站吗,为什么使用html5网站,网站建设发生的费用会计科目文章目录 前言一、通过ServletAPI获取二、通过控制器方法的形参获取请求参数三、注解1.RequestParam2.RequestHeader3.CookieValue前面的代码总和#xff1a;4.通过POJO获取请求参数 三、解决获取请求参数的乱码问题总结 前言
下面用到了thymeleaf#xff0c;不知道的可以看… 文章目录 前言一、通过ServletAPI获取二、通过控制器方法的形参获取请求参数三、注解1.RequestParam2.RequestHeader3.CookieValue前面的代码总和4.通过POJO获取请求参数 三、解决获取请求参数的乱码问题总结 前言
下面用到了thymeleaf不知道的可以看我同专栏里的搭建框架这篇文章。 一、通过ServletAPI获取
将HttpServletRequest作为控制器方法的形参此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象。
a th:href{/testServletAPI(usernameadmin,password123456)}测试使用servletAPI获取请求参数/abrRequestMapping(/testParam)
public String testParam(HttpServletRequest request){
String username request.getParameter(username);
String password request.getParameter(password);
System.out.println(username:username,password:password);
return success;
}二、通过控制器方法的形参获取请求参数
在控制器方法的形参位置设置和请求参数同名的形参当浏览器发送请求匹配到请求映射时在DispatcherServlet中就会将请求参数赋值给相应的形参。
在springMVC中直接在控制层里的映射方法中添加参数直接获取请求参数。
a th:href{/testParam(usernameadmin,password123456)}测试获取请求参数--
/testParam/abrRequestMapping(/testParam)
public String testParam(String username, String password){
System.out.println(username:username,password:password);
return success;
}注 1若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数。 2若使用字符串数组类型的形参此参数的数组中包含了每一个数据。 3若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果。
三、注解
1.RequestParam
RequestParam是将请求参数和控制器方法的形参创建映射关系。
RequestParam注解一共有三个属性
value指定为形参赋值的请求参数的参数名。required设置是否必须传输此请求参数默认值为true 若设置为true时则当前请求必须传输value所指定的请求参数若没有传输该请求参数且没有设置defaultValue属性则页面报错400Required String parameter ‘xxx’ is not present若设置为false则当前请求不是必须传输value所指定的请求参数若没有传输则注解所标识的形参的值为null。defaultValue不管required属性值为true或false当value所指定的请求参数没有传输或传输的值为时则使用默认值为形参赋值。
2.RequestHeader
RequestHeader是将请求头信息和控制器方法的形参创建映射关系。
RequestHeader注解一共有三个属性value、required、defaultValue用法同RequestParam。
3.CookieValue
CookieValue是将cookie数据和控制器方法的形参创建映射关系。
CookieValue注解一共有三个属性value、required、defaultValue用法同RequestParam。
前面的代码总和
h1测试请求参数/h1
a th:href{/testServletAPI(usernameadmin,password123456)}测试使用servletAPI获取请求参数/abr
a th:href{/testParam(usernameadmin,password123456)}测试使用控制器的形参获取请求参数/abr
form th:action{/testParam} methodget用户名input typetext nameuser_namebr密码input typepassword namepasswordbr爱好input typecheckbox namehobby valueaainput typecheckbox namehobby valuebbinput typecheckbox namehobby valueccbrinput typesubmit value测试使用控制器的形参获取请求参数
/formRequestMapping(/testServletAPI)public String testServletAPI(HttpServletRequest request){HttpSession sessionrequest.getSession();String usernamerequest.getParameter(username);String passwordrequest.getParameter(password);System.out.println(username:username,password:password);return success;}RequestMapping(/testParam)public String testParam(RequestParam(value user_name,required false,defaultValue hello) String username,String password,String[] hobby, RequestHeader(value sayHaha,required true,defaultValue haha) String host,CookieValue(JSESSIONID) String JSESSIONID){System.out.println(username:username,password:password,hobby: Arrays.toString(hobby));System.out.println(host:host);System.out.println(JSESSIONID:JSESSIONID);return success;}4.通过POJO获取请求参数
可以在控制器方法的形参位置设置一个实体类类型的形参此时若浏览器传输的请求参数的参数名和实体类中的属性名一致那么请求参数就会为此属性赋值。
form th:action{/testBean} methodget
用户名input typetext nameusernamebr
密码input typepassword namepasswordbr
性别input typeradio namesex value男男input typeradio
namesex value女女br
年龄input typetext nameagebr
邮箱input typetext nameemailbr
input typesubmit
/formRequestMapping(/testBean)
public String testBean(User user){
System.out.println(user);
return success;
}
//最终结果--User{idnull, username张三, password123, age23, sex男,
email123qq.com}三、解决获取请求参数的乱码问题
解决获取请求参数的乱码问题可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter但是必须在web.xml中进行注册。
!--配置springMVC的编码过滤器--
filter
filter-nameCharacterEncodingFilter/filter-name
filterclassorg.springframework.web.filter.CharacterEncodingFilter/filter-class
init-param
param-nameencoding/param-name
param-valueUTF-8/param-value
/init-param
init-param
param-nameforceResponseEncoding/param-name
param-valuetrue/param-value
/init-param
/filter
filter-mapping
filter-nameCharacterEncodingFilter/filter-name
url-pattern/*/url-pattern
/filter-mapping注SpringMVC中处理编码的过滤器一定要配置到其他过滤器之前否则无效。 总结
以上就是获取参数的讲解。