Action访问Servlet API的三种方法

一、为什么要访问Servlet API ?

    Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试。但是对于Web控制器而言,不访问action是不行的,Struts提供了一种比较简单的方式来访问Servlet API 。

二、通常我们需要访问的Servlet API 是 HttpSession、HttpservletRequest、ServletContext,分别对应了JSP内置对象 session,request,application。

三、Action访问Servlet API的三种方法

      1、使用ActionContext类访问Servlet API。将HttpSession、HttpservletRequest、ServletContext封装成了Map,用put方法赋值,用EL表达式取。

    写在Action类中代码:

public String execute() throws Exception {
        ActionContext context=ActionContext.getContext();
        Map request = (Map)context.get("request");
        Map session = (Map)context.getSession();
        Map application = (Map)context.getApplication();
        
        if("admin".equals(username) && "123".equals(password)){
            request.put("uesrname",username);
            return SUCCESS;
        }
        else{
            session.put("username", username);
            session.put("errorMsg", "您的用户名或密码有误!");
            return ERROR;
        }
  }

写在success.jsp中代码:

<body>
    登陆成功!!!
    欢迎您! ${param.username}
    
  </body>

写在error.jsp中代码:

 <body>
   对不起, 登录失败!!!<br/>
   <font color="red">${sessionScope.errorMsg}</font>
  </body>

   2、ServletActionContext类提供了3个方法,可直接得到HttpSession、HttpservletRequest、ServletContext对象。

    写在Action类中代码:

public String execute() throws Exception {
        
        
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpSession session = request.getSession();
        
        
        if("admin".equals(username) && "123".equals(password)){
            request.setAttribute("username", username);
            return SUCCESS;
        }
        else{
            
            session.setAttribute("errorMsg", "您输错了用户名或密码!");
            return ERROR;
        }
  }

jsp文件中代码不变。

   3、实现***Aware接口直接访问Servlet API

    为了使Struts2能够直接访问到Servlet API的实例,Struts2提供了ServletContextAware接口、 ServletRequest接口、 ServletResponsetAware接口。

 

转载于:https://www.cnblogs.com/iqingchen-vic/p/6964497.html

### 回答1: 在Java Web应用程序中,我们访问Servlet API有以下几种方法: 1. 在Servlet中使用内置对象request和response来访问Servlet API。 2. 在Servlet中使用getServletContext()方法来获取ServletContext对象,然后使用该对象来访问Servlet API。 3. 在JSP页面中使用内置对象request和response来访问Servlet API。 4. 在JSP页面中使用内置对象application来获取ServletContext对象,然后使用该对象来访问Servlet API。 5. 在过滤器中使用内置对象request和response来访问Servlet API。 6. 在监听器中使用内置对象servletContextEvent来获取ServletContext对象,然后使用该对象来访问Servlet API。 这些方法可以帮助我们在Java Web应用程序中访问Servlet API。 ### 回答2: 在Java中,访问Servlet API的方式有以下几种方法: 1. 继承HttpServlet类:创建一个继承自HttpServlet的类,并重写其中的doGet、doPost等方法来处理不同的HTTP请求。然后在web.xml配置文件中将该Servlet映射到相应的URL地址,当请求到达该URL时,容器会调用对应的Servlet类来处理请求。 2. 实现Servlet接口:创建一个实现Servlet接口的类,并实现其中的方法。然后通过web.xml配置文件中的servlet元素和servlet-mapping元素来将该类映射到URL地址,从而使得请求到达时,容器会调用该类来处理请求。 3. 注解方式:可以使用@WebServlet注解来定义一个Servlet类,并通过urlPatterns属性指定该Servlet要处理的URL地址。这种方式不需要在web.xml中显式配置,容器会根据注解自动进行映射。 上述三种方式都可以实现对Servlet API访问,具体选择哪种方式取决于个人偏好和项目需求。 ### 回答3: Action访问Servlet API有以下几种方法: 1. 通过继承HttpServlet类:Action可以继承HttpServlet类,从而获得访问Servlet API的能力。使用这种方式,需要重写doGet()、doPost()等方法来处理请求,并可以通过request和response对象获取请求参数和发送响应。 2. 通过实现Servlet接口:Action可以实现Servlet接口,在该接口的service()方法中处理请求,并通过ServletRequest和ServletResponse对象访问Servlet API。与继承HttpServlet类相比,这种方式需要自己处理请求的分发和HTTP请求方法的判断。 3. 通过注入Servlet API对象:Action可以通过依赖注入的方式,在构造函数或者通过属性注入ServletRequest和ServletResponse对象,从而获取访问Servlet API的能力。这种方式适合于使用框架来管理Action实例的情况,可以方便地使用Servlet API的各种方法。 4. 通过Servlet容器提供的APIAction可以通过访问ServletContext对象来获取其他Servlet的信息,包括路径、初始化参数等。此外,也可以通过访问HttpSession对象来获取或设置会话信息。 总之,Action访问Servlet API的方式主要有继承HttpServlet类、实现Servlet接口、注入Servlet API对象和通过Servlet容器提供的API。根据具体的需求和项目情况,可以选择合适的方式来访问Servlet API
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值