SpringMVC参数传递:把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,则会注入,在这里使用注解的方式来传递参数
前提使用springmvc注解功能,相应配置请看上节JavaWeb学习之路——SSM框架之SpringMVC(七)
1.在jsp文件中设置提交动作
<form action="demo" method="post">
<input type="text" name="name"/>
<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
2.解决字符编码问题。
在web.xml中来新增字符编码过滤器
<!-- 字符过滤器 -->
<filter>
<filter-name>encoding</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>
<!-- 拦截器 ,将所有根目录下网页过滤为utf-8类型字符编码-->
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.在相应的spring控制器中执行相应动作名的适配器方法来响应
可以传递基本数据类型、对象、集合等,传递对象时要与类中参数名相对应。
(1)默认情况下参数名一样即可保证参数传递一致
package com.likui.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.filter.CharacterEncodingFilter;
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(String name,int age,HttpServletRequest res,
HttpSession session) {
System.out.println("demo"+name+" "+age);
res.setAttribute("test", "test");
return "main.jsp";
}
}
(2)对于参数名不同的情况:
只需要在Maping对应的方法中填写注解RequestParam的value值即可。下面的name值为index.jsp中对应为name2属性值
@RequestMapping("demo")
public String demo(@RequestParam(value="name2") String name,int age,HttpServletRequest res,
HttpSession session) {
System.out.println("demo"+name+" "+age);
res.setAttribute("test", "test");
return "main.jsp";
}
(3)默认值采取注解
@RequestParam(defaultValue="18")
(4)必须要填写值
@RequestParam(required=true,defaultValue="18")
4.jsp文件设置提交跳转
index.jsp文件动作为demo
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
hello springmvc!
<form action="demo" method="post">
<input type="text" name="name"/>
<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
main.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
hello main!
${test }
</body>
</html>
5.执行结果
在index.jsp中输入结果后点击提交,会交给控制器中demo适配器来解决,在这里面传递参数并返回到视图main.jsp