高版本Tomcat 传参可能出现参数不合法被拦截的可能,需要改一下tomcat的server.xml,注意写自己用的端口
<Connector port="8090" protocol="HTTP/1.1"
connectionTimeout="20000"
relaxedQueryChars="[]|{}^\`"<>"
redirectPort="8443" />
接收
<a href="test/test1">点击1</a>
<a href="test/test2">点击2</a>
<a href="test/test3?name=张三">传1参数</a>
<a href="test/test3?name=张三&age=20">传2参数</a>
<a href="test/test4?nums=1&nums=2&nums=3">传数组</a>
<a href="test/test5?books[0].name=aa&books[0].price=189&books[1].name=bb&books[1].price=88">List</a>
<a href="test/test6?books2[0].name=张三&books2[0].price=100&books2[1].name=李四&books2[1].price=98">Map(User)</a><br/>
<a href="test/test7?score['java']=100&score['数学']=99&score['語文']=0">Map</a><br/>
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/test1",method = RequestMethod.POST)
public String test1(){
// 因为配置了视图解析器 所以可以跳转到success.jsp
return "success";
}
@RequestMapping(value = "/test2",method = RequestMethod.GET)
public String test2(){
return "success";
}
/**
* @username 按name匹配
* @age 值可有可无
*/
@RequestMapping(value = "/test3")
public String test3(@RequestParam("name") String username,@RequestParam(required = false) Integer age){
System.out.println(username+" "+age);
return "success";
}
/**
* 传数组参数
* @param nums 数组
* @return
*/
@RequestMapping(value = "/test4")
public String test4(int[] nums){
for (int num:nums){
System.out.println(num);
}
return "success";
}
List list =new ArrayList();
/**
* 传列表参数
* @param user 实体用户
* @return
*/
@RequestMapping(value = "/test5")
public String test5(User user){
System.out.println(user.toString());
return "success";
}
/**
* 传map参数 (内含user)
* @param user
* @return
*/
@RequestMapping(value = "/test6")
public String test6(User user){
System.out.println(user.toString());
return "success";
}
/**
* 传map参数 (不含user)
* @param user
* @return
*/
@RequestMapping(value = "/test7")
public String test7(User user){
System.out.println(user.toString());
return "success";
}
}
响应(注意session 的pom.xml (spring需要5以上版本 session需要2.9以上版本 ))
<body>
<h2>成功</h2>
欢迎:requestScope ${requestScope.user}<br>
欢迎:sessionScope ${sessionScope.user2.name} <br>
<a href="return/out">推出登录</a>
</body>
@Controller
@RequestMapping("return")
@SessionAttributes(value = {"user2"})
public class TestReturnController {
// 转发
@RequestMapping("/forward")
public String test1(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response){
// System.out.println(modelMap.getClass().getName());
// 1. springMVC 提供的规范
// modelMap.addAttribute("user","弓长张");
// 2.javaweb 提供的规范
request.setAttribute("user","弓长张");
// session 不会随着转发和重定向丢失数据 注意修改配置
request.getSession().setAttribute("user","弓长张");
return "forward:/success.jsp";
}
// 重定向
@RequestMapping("/redirect")
public String test2(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response){
// System.out.println(modelMap.getClass().getName());
// 1. springMVC 提供的规范
// modelMap.addAttribute("user","弓长张");
// 2.javaweb 提供的规范 重定向会丢失request区域数据
request.setAttribute("user","弓长张");
// session 不会随着转发和重定向丢失数据 注意修改配置
request.getSession().setAttribute("user","弓长张");
return "redirect:/success.jsp";
}
//从一个Controller 到另一个Controller 另一个用session接收数据
@RequestMapping("/first")
public String test3(ModelMap modelMap, HttpSession session){
// 重定向 往服务器发送了两次次请求 丢失 rquest区域的数据
User user2=new User();
user2.setName("健哥哥");
modelMap.addAttribute("user2",user2);
session.setMaxInactiveInterval(5);
return "redirect:/return/second";
}
// 获取session数据
@RequestMapping("/second")
// SessionAttributes 存值 SessionAttribute 取值
public String test4(@SessionAttribute("user2") User user){
System.out.println(user.toString());
return "redirect:/success.jsp";
}
// 万能跳转
@RequestMapping("/{url}")
public String test5(@PathVariable("url") String url){
System.out.println(url);
return url;
}
// 清除session
@RequestMapping("/out")
public String test6(HttpServletRequest request, Model model, SessionStatus sessionStatus){
// 清除所有session数据
request.getSession().invalidate();
// 清除某个
request.getSession().removeAttribute("user2");
// 清除某个 第二种当时
request.getSession().setAttribute("user2",null);
model.addAttribute("user2",null);
//SpringMVC提供的
sessionStatus.setComplete();
return "index";
}
}