1.获取基本类型的参数
@RequestParam:获取请求参数。
@RequestHeader
@CookieValue
<1>不使用注解的方式。如果页面直接传入一个参数。那么直接在方法的参数上,设置一个同名的参数。即可获取到该参数。
<2>使用requestParam可以在方法的参数上注解。指定获取的参数名。这样方法上的参数可以与之同名。
<3>requestParam有三个属性。value(获取的参数名),required(boolean类型。表示参数是否必须带。true表示必须带,默认是true),defaultValue(表示默认值,如果没带参数,可以指定不带参数时的默认值)。
requestHeader和requestValue
requestHeader表示获取请求头中的参数信息。参数使用情况与requestParam类似。
CookieValue表示获取cookie中的信息。使用方式也是同上 。
2.获取引用类型的参数
<1>当页面提交的参数比较多时。可以将方法的参数直接写成一个对象。这个对象中的属性封装这些参数(属性名要与参数名相同)。然后匹配到对象的方法后,springmvc直接将这些参数值自动的封装在这个引用类型的参数中。
<2>这个对象包含其它对象的引用类型,即级联属性的封装。在页面进行提交参数的时候。可以使用引用类型名.属性名的方式进行级联封装。
3.返回请求参数
可以使用原生api,直接在方法上设置原生api参数,将参数放在request,session,application域中。
常用用的原生api:
HttpServletRequest
HttpServletResponse
HttpSession
4.获取参数乱码解决方法
<1>请求乱码:
get请求:修改server.xml。在8080端口的标签设置URIEncoding=“UTF-8”
post请求:在第一次获取请求参数的位置设置request.setCharacterEncoding(“UTF-8”),这样写麻烦。可以在web.xml中配置filter过滤器。
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决post请求乱码
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
再添加初始化的参数配置。配置响应乱码。
总的乱码过滤器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注:
字符乱码的filter一定要在其它的filter配置之前。避免其它的filter在过滤之前就获取到了参数。