这是IOC方式,要实现相应接口
package loginAction;

import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;

public class IoCAction extends ActionSupport implements ServletRequestAware{    
    private String userName;
    private String password;
    private HttpServletRequest request;
    public String getUserName() {
        return userName;
    }

/**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

public String getPassword() {
        return password;
    }

public void setPassword(String password) {
        this.password = password;
    }

//必须实现该方法,该方法是接口中的方法
    public void setServletRequest(HttpServletRequest hsr) {
       request=hsr;
    }
    public String execute() throws Exception{
        if(getUserName().equals("QQ")&&getPassword().equals("123")){
             //通过request对象获取session对象
             HttpSession session=request.getSession();
             //把登录名传入session中
             session.setAttribute("userName", this.getUserName());
             return SUCCESS;
}
else{
            return INPUT;
}
    }

}

下面来看非IOC方式的代码

package loginAction;

import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;

public class NoIoCAction extends ActionSupport{
    private String userName;
    private String password;

/**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }

/**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

/**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

/**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }
    public String execute() throws Exception{
        if(getUserName().equals("QQ")&&getPassword().equals("123")){
            /*调用ServletActionContext的getRequest()方法获取HttpServletRequest类的对象request对象。*/
            HttpServletRequest request=ServletActionContext.getRequest();
            //调用request对象的getSession()方法获取session对象
            HttpSession session=request.getSession();
            //调用session对象的方法设置数据
            session.setAttribute("userName", this.userName);
            session.setAttribute("password", this.password);
            return SUCCESS;
}
else{
            return INPUT;
}
    } 
}

struts的action访问servlet的IOC方式与非IOC方式相关推荐

  1. Action访问Servlet API的三种方法

    一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...

  2. 算法练习day10——190328(二叉树的先序、 中序、 后序遍历, 包括递归方式和非递归方式、找到一个节点的后继节点、二叉树的序列化和反序列化)

    1.实现二叉树的先序. 中序. 后序遍历, 包括递归方式和非递归方式 1.1 访问节点的顺序 节点访问顺序如下图所示: 访问顺序:1 2 4 4 4 2 5 5 5 2 1 3 6 6 6 3 7 7 ...

  3. Struts2中Action访问Servlet API的三种方法

    Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action.但如何访问? ...

  4. Action访问Servlet API的对象

    1,Action访问ActionContext的方式:(request session application) Struts2中的Action与Servlet API完全分离,但是在实现业务逻辑处理 ...

  5. 二叉树 —— 创建二叉树 先序遍历 、中序遍历、后序遍历(递归方式、非递归方式)

    #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef char DataType; #de ...

  6. 【Spring】配置事务 注解方式与非注解方式

    Spring的事务配置非注解方式 <!--通知--><tx:advice id="txAdvice" transaction-manager="txTr ...

  7. 简述python re模块正则的贪婪方式与非贪婪方式

    贪婪方式: 默认 尽量匹配更多的满足条件的字符.正则表达式默认为贪婪匹配 st = "abc123abc" st = re.sub("([0-9]+)",&qu ...

  8. Struts(八)Strits2访问servlet API

    1.获得servlet API的两种方法 (1).ServletActionContext类(基本都是静态方法) public static HttpServletRequet getRequest( ...

  9. 快速排序的递归方式和非递归方式

    我们知道快递排序大部分的版本都是递归的方式来实现的:通过Pritation来实现划分,并递归实现前后的划分.由于同学上次百度二面面试官问起快速排序的非递归的实现方式,当时同学不会,因为我们大部分看到的 ...

最新文章

  1. 偏微分方程I PDE的例子1 一维波动与热传导方程
  2. 知识图谱前端插件_大型前端项目可持续演进开发的思考
  3. dump分析工具_iOS逆向分析和注入微信防撤回
  4. ADO.NET Entity Framework -Code Fisrt 开篇(一)
  5. php form action跳转,form表单页面跳转方式提交练习
  6. 如何评价个人在软件开发团队中的绩效
  7. jsp 页面中文乱码解决(笔记)
  8. java String.intern();
  9. iOS相同字符串保存地址唯一
  10. 跨server传输数据注意事项
  11. Android抓包方法(二) 之Tcpdump命令+Wireshark
  12. 外资对我国企业兼并控制情况的资料
  13. 数字逻辑---头歌实训作业---逻辑函数及其描述工具(Logisim)
  14. 容联云通讯php短信接口,短信查询接口_开发文档_容联云通讯
  15. 有效的回旋镖(2022-6-8)每日一练
  16. php laravel 教程,Laravel 入门到精通教程
  17. C语言入门 -- 计算两骰子之和出现概率(2021/2/2)
  18. web.xml提示the processing instruction target matching [xX][mM][lL] is not allowed
  19. 只会收藏松果的“松鼠”
  20. APICS与AX的Master Planning(四)---Time Fence时限(时界)

热门文章

  1. python函数的参数-可变参数,关键字参数
  2. 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
  3. Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载
  4. web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载
  5. pycharm——常用快捷键操作
  6. delphi 7 mdi子窗体。。。无法更改以命令对象为源的记录集对象的 ActiveConnection 属性。...
  7. 取消冒泡的兼容性写法
  8. JavaScript正则表达式补充
  9. 手把手教你Dojo入门
  10. 07.用户控件弹窗提示后页面显示不正常;