HttpServletRequest request, HttpSession session, ModelMap map 请求测试
不绑定@SessionAttributes注解
test.java:
类上添加注解@Controller
@RequestMapping("test7")
public String test7(HttpServletRequest request, HttpSession session, ModelMap modelMap){
request.setAttribute("req","这是request7");
session.setAttribute("sess","这是session7");
//未绑定注解
modelMap.put("test71","这是modelMap7");
return "show2";
}
show2.jsp:
<h1>request7:::::${requestScope.req}</h1>
<h1>request7 Mod:::::${requestScope.test71}</h1>
<h1>session7:::::${sessionScope.sess}</h1>
<h1>session Mod:::::${sessionScope.test71}</h1>
<a href="/tuichu7">退出7</a>
在show2.jsp页面点击进行二次跳转,并在控制台打印信息
退出方法的代码:
@RequestMapping("tuichu7")
public String tctest7(HttpSession session, ModelMap map, HttpServletRequest request){
session.invalidate();
System.out.println(request.getAttribute("req"));
System.out.println(session.getAttribute("sess"));
System.out.println(request.getAttribute("test71")+"....reque.modelmaptest71");
System.out.println(map.get("test71"));
return "show2";
}
运行结果为:
控制台为:
控制台输出结果
null
这是session7
null…reque.modelmaptest61
null
绑定注解且退出不消除绑定
test.java
类上添加注解
@Controller
@SessionAttributes({“test61”,“test81”})
@RequestMapping("test6")
public String test6(HttpServletRequest request, HttpSession session, ModelMap modelMap){
request.setAttribute("req","这是request6");
session.setAttribute("sess","这是session6");
//绑定注解,不消除绑定
modelMap.put("test61","这是modelMap6");
return "show2";
}
show2.jsp:
<h1>request6:::::${requestScope.req}</h1>
<h1>request6 Mod:::::${requestScope.test61}</h1>
<h1>session6:::::${sessionScope.sess}</h1>
<h1>session Mod:::::${sessionScope.test61}</h1>
<a href="/tuichu6">退出6</a>
在show2.jsp页面点击进行二次跳转,并在控制台打印信息
退出代码:
@RequestMapping("tuichu6")
public String tctest6(HttpSession session, ModelMap map, HttpServletRequest request){
System.out.println(request.getAttribute("req"));
System.out.println(session.getAttribute("sess"));
System.out.println(request.getAttribute("test61")+"....reque.modelmaptest61");
System.out.println(map.get("test61"));
return "show2";
}
结果
控制台输出结果:
null
这是session6
null…reque.modelmaptest61
这是modelMap6
页面显示结果
虽然控制台显示为requset.test6为null,但是页面依然会显示出来
**绑定注解,并在退出时消除 注解中的session **
test.java
@Controller
@SessionAttributes({“test61”,“test81”})
@RequestMapping("test8")
public String test8(HttpServletRequest request, HttpSession session, ModelMap modelMap){
request.setAttribute("req","这是request8");
session.setAttribute("sess","这是session8");
//绑定注解,然后注销注解的session
modelMap.put("test81","这是modelMap8");
return "show2";
}
show2.jsp
<h1>request8:::::${requestScope.req}</h1>
<h1>request8 Mod:::::${requestScope.test81}</h1>
<h1>session8:::::${sessionScope.sess}</h1>
<h1>session Mod:::::${sessionScope.test81}</h1>
<a href="/tuichu8">退出8</a>
在show2.jsp页面点击进行二次跳转,并在控制台打印信息
tuichu8:
HttpSession 消除session
@RequestMapping("tuichu8")
public String tctest8(HttpSession session, ModelMap map, HttpServletRequest request,SessionStatus status){
//2.消除http session
//3.消除http session和注解session
session.removeAttribute("test81");
session.invalidate();
return "show2";
}
结果
页面显示结果为
先出注解中的session 需要SessionStatus status
SessionStatus status消除session
tuichu8
@RequestMapping("tuichu8")
public String tctest8(HttpSession session, ModelMap map, HttpServletRequest request,SessionStatus status){
//2.消除http session
//3.消除http session和注解session
session.removeAttribute("test81");
//3
status.setComplete();
session.invalidate();
return "show2";
}
页面第一次退出跳转结果
再次点击退出,页面第三次跳转