struts2中使用serclet的session,application等内置对象

来源:互联网 发布:电脑机器人编程软件 编辑:程序博客网 时间:2024/06/07 11:14

在MVC模式中,我们对servlet、session、application三大对象并不陌生,是JSP的内置对象,对于我们在页面与servlet之间传值,交互等,有很大作用,到了Struts1中,我们依然可以建立一个**ACTION来继承Action,然后在public ActionForward execute(ActionMapping mapping,  ActionForm form, HttpServletRequest request,HttpServletResponse response){}中使用request与response等,那么在Struts2中execute()方法不需要继承任何类,那么我们如何实现以上的作用呢,在Struts2中有三个方法,可以实现上面的功能。

1、使用Struts2的ActionContext对象

Code:
  1. public String execute(){   
  2.     ActionContext context = ActionContext.getContext();   
  3.     String path=this.NONE;   
  4.     if("liping".equals(this.getUsername())&"123456".equals(this.getUserpassword())){   
  5.         path="succ";   
  6.         context.put("name"this.getUsername());   
  7.     }else{   
  8.         context.getSession().put("message""你登录失败了!");   
  9.         path="fail";   
  10.     }   
  11.     return path;   
  12. }  

2、使用Struts2的ServletActionContext对象

Code:
  1. public String execute(){   
  2.         ServletActionContext context=null;   
  3.         String path=this.NONE;   
  4.         if("liping".equals(this.getUsername())&"123456".equals(this.getUserpassword())){   
  5.             path="succ";   
  6.             //context.put("name", this.getUsername());  
  7.             context.getRequest().setAttribute("name"this.getUsername());   
  8.         }else{   
  9.             //context.getSession().put("message", "你登录失败了!");  
  10.             context.getRequest().getSession().setAttribute("message""你登录失败了!");   
  11.             path="fail";   
  12.         }   
  13.         return path;   
  14.     }  

3、需使用org.apache.struts2.interceptor org.apache.struts2.util包下的
 //ServletRequestAware,SessionAware,ServletContextAware,ServletResponseAware

Code:
  1. public class LoginAction implements Action,ServletRequestAware,SessionAware,ServletContextAware,ServletResponseAware{   
  2.     private HttpServletRequest request;   
  3.     private Map<String, Object> session;   
  4.     private ServletContext application;   
  5.     private HttpServletResponse response;   
  6.     private String username;   
  7.     private String userpassword;   
  8.     private String abc;   
  9.     public String getAbc() {   
  10.         return abc;   
  11.     }   
  12.   
  13.     public void setAbc(String abc) {   
  14.         this.abc = abc;   
  15.     }   
  16.   
  17.     public String getUsername() {   
  18.         return username;   
  19.     }   
  20.   
  21.     public void setUsername(String username) {   
  22.         this.username = username;   
  23.     }   
  24.   
  25.     public String getUserpassword() {   
  26.         return userpassword;   
  27.     }   
  28.   
  29.     public void setUserpassword(String userpassword) {   
  30.         this.userpassword = userpassword;   
  31.     }   
  32.     //使用传统的servlet session application对象   
  33.     //需使用org.apache.struts2.interceptor org.apache.struts2.util包下的  
  34.     //ServletRequestAware,SessionAware,ServletContextAware,ServletResponseAware  
  35.     public String execute1(){   
  36.         //ActionContext context = ActionContext.getContext();  
  37.         String path=this.NONE;   
  38.         if("liping".equals(this.getUsername())&"123456".equals(this.getUserpassword())){   
  39.             path="succ";   
  40.             request.setAttribute("name"this.getUsername());   
  41.             this.setAbc("欢迎你!");   
  42.         }else{   
  43.             //context.getSession().put("message", "你登录失败了!");  
  44.             session.put("message""你登录失败了!");   
  45.             path="fail";   
  46.         }   
  47.         return path;   
  48.     }   
  49.   
  50.     public void setServletRequest(HttpServletRequest request) {   
  51.         this.request=request;      
  52.     }   
  53.   
  54.     public void setSession(Map<String, Object> session) {   
  55.         this.session=session;   
  56.            
  57.     }   
  58.   
  59.     public void setServletContext(ServletContext application) {   
  60.         this.application=application;   
  61.            
  62.     }   
  63.   
  64.     public void setServletResponse(HttpServletResponse response) {   
  65.         this.response=response;   
  66.            
  67.     }   
  68. }  

这样,就可以实现了。一般第二种方法比较常用。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 化疗期间糖类抗原升高怎么办? 门面租客到期不搬怎么办 这几天老想初恋怎么办 结婚了还想初恋怎么办 九年了想初恋了怎么办 吃肥肉恶心想吐怎么办 宝宝吃了母乳不吃奶粉怎么办 母猫的奶少怎么办 鲤鱼打挺起不来怎么办 练不会鲤鱼打挺怎么办 鲤鱼打挺脖子痛怎么办 新买的沙发太高怎么办 额最后离开公司没人关灯怎么办 看到我妹妹就烦怎么办 野塘钓鱼不开口怎么办 团关系找不到接收地怎么办 两岁宝宝就是不肯说话怎么办 两岁宝宝不肯吃药怎么办 并蹄莲叶子大黄怎么办 异地恋见面来大姨妈怎么办 奶水太多宝宝老是呛到怎么办 奶水太多吃奶婴儿呛怎么办 人家不愿意交我为朋友怎么办 面对诋毁我的人怎么办 做事太细致速度太慢怎么办 高一儿子早恋了怎么办 儿子18岁谈朋友怎么办 和朋友为钱吵架怎么办 感情里总担心失去怎么办 眼石移出盲僧怎么办 打仗把小便踢肿了怎么办 腿上都是挠的疤怎么办 脚上的肉烂了怎么办 商铺门口有电杆怎么办 漏电保护器坏了怎么办 空开进线烧了怎么办 过压保护灯亮怎么办 美的热水器接地异常怎么办 欠压保护器坏了怎么办 三孔插座没地线怎么办 二胡琴筒裂缝宽怎么办