首页 > 代码库 > Strut2中的session和servlet中的session的区别
Strut2中的session和servlet中的session的区别
在jsp中,内通过内置对象 HttpServletRequest的getSession()方法可以获取到HttpSession,比如:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@taglib uri="http://www.wyl.suneyaee" prefix="Wyl"%> 4 <!-- 引入jquery等 --> 5 <%@ include file="/WEB-INF/head.jsp"%> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 9 <head>10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">11 <script type="text/javascript">12 <!--13 $(function() {14 $(‘input‘).keydown(function(e) {15 var curKey = e.which;16 //46 是 Delete键17 if (curKey == 46) {18 clear(this);19 $(this).focus();20 }21 });22 23 $(‘#idUserName‘).keydown(function(event) {24 var curKey = event.which;25 //13 是回车键26 if (curKey == 13) {27 console.log(‘你按的是:回车‘ + ‘键‘);28 }29 30 });31 /**32 清除value值,主要是针对于input33 */34 function clear(obj) {35 $(obj).attr(‘value‘, null);36 }37 })38 </script>39 40 <title>Insert title here</title>41 </head>42 <body>43 <Wyl:getIP />44 45 <form action="doAjax"><input value="aaa" type="text"> <br>46 <input value="doAJax" type="submit"></form>47 48 <br>49 <form action="wdAjax"><input value="MyAjax.myAjax()..."50 type="text"> <br>51 <input value="wdAjax" type="submit"></form>52 53 <br>54 用户名55 <form action="toLogin"><input type="text" name="user.userName">56 <br>57 <%58 request.getSession().setAttribute("hahaAnyKey", "我是hahaAnyKey.jsp页面传入session的值");59 %>60 <input type="text" name="user.passWord"> <input type="submit">61 </form>62 63 64 <br>65 用户名2 ,模型驱动,而且这个表单对应的LoginAction2.java中封装了dto,而且可以使用Delete键清空输入框66 <form action="toLogin2"><input type="text" name="userName"67 id="idUserName"> <br>68 <input type="text" name="passWord"> <input type="submit">69 </form>70 71 -----------72 <span xmlns="http://www.w3.org/1999/xhtml"73 class="button collapse-button"></span>74 75 </body>76 </html>
中的58行,就可以获取到session,然后直接在HttpSession里存放一个值。
而在Struts2中,比如在一个action中,可以直接通过ActionContext.getContext().getSession()获取Session对象(注意:这个ActionContext是
com.opensymphony.xwork2.ActionContext类型的),实际上这里的Session是一个Mapper,只是Struts2做了封装,我们还是可以通过这个mapper类型的Mapper来获取到上面登录页面放在HttpSession中的属性。
比如在一个action中就可以通过如下代码获取到上面jsp中存放在HttpSession中的属性,
1 ActionContext atx = ActionContext.getContext();2 Map<String, Object> session = atx.getSession();3 Set<String> set = session.keySet();4 Iterator it = set.iterator();5 while(it.hasNext()){6 String key = (String) it.next();7 String val = (String) session.get(key);8 System.out.println("key:"+key+",value:"+val);9 }
打印结果:
key:hahaAnyKey,value:我是hahaAnyKey.jsp页面传入session的值
这个Action的完整代码如下:
1 package com.log; 2 3 import java.io.PrintWriter; 4 import java.util.Iterator; 5 import java.util.Map; 6 import java.util.Set; 7 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.apache.struts2.ServletActionContext;11 12 import com.log.entity.User;13 import com.log.service.UserService;14 import com.opensymphony.xwork2.ActionContext;15 import com.opensymphony.xwork2.ActionSupport;16 import com.util.UtilTime;17 18 /**19 * 普通的登陆20 * 21 * @author Wei22 * 23 */24 public class LoginAction extends ActionSupport {25 /**26 * 27 */28 private static final long serialVersionUID = 1L;29 private User user;30 private UserService uService = new UserService();31 private String error;32 33 public String getEror() {34 return error;35 }36 37 public void setEror(String error) {38 this.error = error;39 }40 41 public UserService getuService() {42 return uService;43 }44 45 public void setuService(UserService uService) {46 this.uService = uService;47 }48 49 public User getUser() {50 return user;51 }52 53 public void setUser(User user) {54 this.user = user;55 }56 57 @Override58 public String execute() throws Exception {59 /**60 * 账号密码:wyl,123461 */62 if (uService.login(user)) {63 ActionContext atx = ActionContext.getContext();64 Map<String, Object> session = atx.getSession();65 //对应于 WylInterceptor.java拦截器,这个拦截器里需要用到66 session.put("currentUser", user);67 //用来设置登录超时的参数68 session.put("lastTime", UtilTime.getCurTime());69 return SUCCESS;70 } else {71 // this.error = "error";72 // return this.error;73 HttpServletResponse resp = ServletActionContext.getResponse();74 //不加 resp.setContentType("text/html;charset=UTF-8"); 会出现页面的中文为乱码的情况75 resp.setContentType("text/html;charset=UTF-8");76 PrintWriter out = resp.getWriter();77 out.println("账号:"+user.getUserName()+",<br/>密码:"+user.getPassWord()+" 的不正确,请确认");78 // out.println("<br/><input type=\"button\" value=http://www.mamicode.com/"点我\" />");79 out.println("<a href=http://www.mamicode.com/"login.jsp\" style=\"color:orange;\">点我重新登陆</a>");80 /**81 * 下面的Map<String, Object> session = atx.getSession();为了演示获取到的session(实际上是Mapper,Struts2框架做了封装)82 */83 ActionContext atx = ActionContext.getContext();84 Map<String, Object> session = atx.getSession();85 Set<String> set = session.keySet();86 Iterator it = set.iterator();87 while(it.hasNext()){88 String key = (String) it.next();89 String val = (String) session.get(key);90 System.out.println("key:"+key+",value:"+val);91 }92 //什么都不返回,直接用HttpServletResponse在网页上写提示93 return null;94 }95 }96 }
,调试截图:
Strut2中的session和servlet中的session的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。