Struts2访问Servlet API

Struts2对ServletAPI进行了封装,提供了三个Map对象代替request,session,application


①与ServletAPI 解耦合的访问方式

 通过ActionContext类获取这三个对象

public String execute() {
        Users user = us.login(uname, upass);
        if (user != null){

           ActionContext context=ActionContext.getContext();
            Map sessionMap=context.getSession();//获得session
            Map requestMap=(Map)context.get("request");//获得request
            Map applicationMap=(Map)context.getApplication();//获得application
            requestMap.put("users", user);//实际开发中我们不推荐这样做,在后面我们会介绍到如何处理request范围       
            sessionMap.put("users",user);
            applicationMap.put("users",user);

            return "success";}

        return "error";
    }

②与ServletAPI耦合的访问方式

        通过ServletActionContext类获取ServletAPI对象

public String execute() {
        Users user = us.login(uname, upass);
        if (user != null){
               HttpServletRequest request=ServletActionContext.getRequest();//获得request
            HttpServletResponse response=ServletActionContext.getResponse();//获得response
            HttpSession session=request.getSession();//和servlet里一样,获得session
            ServletContext application=ServletActionContext.getServletContext();
//获得application  
            return "success";}
        return "error";

}

建议使用解耦合方式访问


介绍一下:后台Action属性意义:

(1)封装数据

(2)保存状态:两个范围:①ActionContext②request


实际开发中一般这样处理封装类

<body>
  <form action="/mynews/loginAction.action" method="post">
        用户名:<input type="text" name="user.uname"/><br/>
        密  &nbsp; &nbsp;码:<input type="password" name="user.upass"/><br/>
        <input type="submit" value="登录"/><input type="reset" value="重置"/>
   </form>
  </body>

上面红色字体部分将用户名和密码保存在user这个属性里

注意:Action类里属性名字和表单里的一定要一致

Action类

package com.mynews.action;

import java.util.Map;

import com.mynews.entity.Users;
import com.mynews.service.LoginService;
import com.mynews.service.UsersService;
import com.mynews.service.impl.UsersServiceImpl;
import com.opensymphony.xwork2.ActionContext;

public class LoginAction {

    private Users user;//与表单里的属性名字是一样的
   
    private LoginService ls=new LoginService();
    public String execute() {
        Users myuser = ls.login(user);
        if (myuser != null){
            ActionContext context=ActionContext.getContext();
            Map sessionMap=context.getSession();//获得session
            Map applicationMap=(Map)context.getApplication();//获得application    
            sessionMap.put("users",myuser);
            applicationMap.put("users",myuser);
            this.user=myuser;//大家看到了吧,前面所说的,实际开发中,我们是这样来处理request范围的 。这句话的作用是将myuser保存在request范围内
            return "success";}
        return "error";
    }

    public Users getUser() {
        return user;
    }

    public void setUser(Users user) {
        this.user = user;
    }


}
到这里struts2基本已经学到80%了,大家可以看到用struts2之后,大大简化了我们servlet里面的request.getParameter("")的代码

由于这里只有一个简单的登录功能,体现不出什么优势来;但是在大量表单数据面前,struts2的优势是很明显的


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值