springmvc06

处理器方法的参数


处理器方法可以包含以下四类参数,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用。

1 HttpServletRequest 请求
2 HttpServletResponse 应答
3 HttpSession 会话
4 请求中所携带的请求参数
1
2
3
4

前三类参数使用方式

@Controller
public class MyController {
@RequestMapping(value = "/some.do")
public ModelAndView doSome(HttpServletRequest request,
HttpServletResponse response,
HttpSession session){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","欢迎使用springmvc做web开发" + request.getParameter("name"));
mv.addObject("fun","执行的是doSome方法");
mv.setViewName("show");
return mv;
}
1
2
3
4
5
6
7
8
9
10
11
12

逐个参数接收
接收用户提交的参数:处理器(控制器)方法的形参名和请求中的参数必须一致

@Controller
public class MyController {
/*
* 逐个接收请求参数:
* 要求:处理器(控制器)方法的形参名和请求中的参数必须一致
* 同名的请求参数赋值给同名的参数
*
* 框架接收请求参数:
* 1 使用request对象接收请求参数
* String strName = request.getParameter("name");
* String strAge = request.getParameter("age");
* 2 springmvc框架通过dispatcherServlet 调用MyController的doSome方法
* 调用方法时,按名称对应,把接收的参数赋值给形参 doSome(strName,Integer.valueOf(strAge))
* 框架会提供类型转换的功能,把String转换为 int ,long ,float ,double等
*
* */
@RequestMapping(value = "/some.do")
public ModelAndView doSome(String name,Integer age){
System.out.println("dosome方法的,name="+name+", age="+age);

ModelAndView mv = new ModelAndView();
mv.addObject("myname",name);
mv.addObject("myage",age);
mv.setViewName("show");
return mv;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

对应的index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<p>提交参数给Controller</p>

<form action="some.do" method="post">
姓名:<input type="text" name="name"><br/>
年龄:<input type="text" name="age"><br/>
<input type="submit" value="提交参数">
</form>

<%-- <p><a href="user/other.do">发起other.do请求</a></p>--%>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

注意:在提交请求参数的时候,get请求方式中文没有乱码;post请求方式中文有乱码,需要使用过滤器处理乱码问题。

//在web.xml配置过滤器
<!--注册声明过滤器,解决post请求乱码的问题-->
<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>

<!--强制请求对象(HttpServletRequest)使用encoding编码的值-->
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>

<!--强制应答对象(HttpServletResponse)-->
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<!--
/* : 表示强制所有的请求先通过过滤器处理
-->
<url-pattern>/rl-pattern>
</filter-mapping>

原文地址:https://www.cnblogs.com/huaobin/p/14908513.html