Struts使用用解耦合的方式获取Session

<!-- 配置文件中只要添加以下配置,那么以后修改配置文件不用重启tomcat -->

<constant name="struts.devMode" value="true" />


servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢?

    解析:将用户名放入session 两种方案

1. Servlet API解耦的访问方式

    --->01.使用ActionContext类获取ServletAPI对象对应的Map对象

    --->02.Struts2Action注入ServletAPI对象对应的Map对象

2. Servlet API耦合的访问方式

 

解耦方式:

方案一: Servlet API进行封装   ,借助ActionContext

提供了三个Map对象访问requestsessionapplication作用域

通过ActionContext类获取这三个Map对象

Object get("request")

Map getSession()

Map getApplication()

         案例:登陆成功后,记录用户名到Session中,登陆失败,跳会登陆页面

         步骤一:书写Action

 

     

     方案二:向Action中注入ServletAPI对象对应的Map对象

       步骤一:书写Action

    

   耦合方式:

      方式一:通过ActionContext的子类ServletActionContext实现

 

   

方式二:向Action实例注入Servlet API对象

 



Modeldriven     action


Struts2中,提供了另外一种直接使用域对象的方式,就是让action视线ModelDriven接口。ModelDriven让你可以直接操作程序中的领域对象,允许你在Web层和业务逻辑层使用相同的对象。

 01.Action

public class LoginAction extends ActionSupport implements SessionAware,ModelDriven<User>{

    private User user=new User();

    private Map<String, Object> map;

public String execute() throws Exception {

     if (user.getName().equals("1")&&user.getPassword().equals("1")) {

     //用session记录登录身份

     map.put("uname", user.getName());

     return SUCCESS;

}else {

return LOGIN;

}

    }

/**

 * 参数当中的就是session对象

 * @param map

 */

public void setSession(Map<String, Object> map) {

this.map=map;

}

 

    public Map<String, Object> getMap() {

return map;

}

public void setMap(Map<String, Object> map) {

this.map = map;

}

 

public User getUser() {

return user;

}

 

public void setUser(User user) {

this.user = user;

}

 

public User getModel() {

return user;

}

}

2、Login.jsp页面

  <s:form  method="post" action="login">

       请输入用户名:

       <s:textfield name="name"></s:textfield> <br/>

        <s:textfield name="password"></s:textfield><br/>

        <s:submit value="登陆"></s:submit>

     </s:form>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值