`
jtlyuan
  • 浏览: 66763 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Strus2中action访问Servlet API

 
阅读更多

Struts2.0,Action已经与Servlet API完全分离,这使得Struts2.0Action具有了更加灵活和低耦合的特性,Struts1.0相比较而言是个巨大的进步。但是如果在Action访问Servlet API,可以使用一下方法:

  • 非IOC方式

          使用com.opensymphony.xwork2.ActionContext类。该类提供了以下方法:

             Object get(Object key)通过参数key来查找当前ActionContext中的值 

             Map getApplication()返回一个Application级的Map对象

             Static ActionContext getContext()获得当前线程的ActionContext对象 

             Map getParameters()返回一个包含所有HttpServletRequest参数信息的Map对象

             Map getSession()返回一个Map类型的HttpSession对象 

            Void put(Object key,Object value)向当前ActionContext对象中存入名值对信息 

            Void setApplication(Map application)设置Application上下文 

            Void setSession(Map session)设置一个Map类型的Session值 

 

      通过这些方法可以方便的访问到几个Servlet API对象,注意这些对象为Map类型。

 

      另外,可以直接使用org.apache.struts2.ServletActionContext类访问这些API:

      HttpServletRequest request = ServletActionContext.getRequest();
      HttpServletResponse response = ServletActionContext.getResponse();
      HttpSession session = request.getSession(); 

  • IOC方法

     要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。具体实现:

     publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
    private String message;
    private Map att;
    private HttpServletRequest request;
    private HttpServletResponse response;

    public String getMessage() {
    return message;
    }

    publicvoid setSession(Map att) {
    this.att = att;
    }

    publicvoid setServletRequest(HttpServletRequest request) {
    this.request = request;
    }

    publicvoid setServletResponse(HttpServletResponse response) {
    this.response = response;
    }

    @Override
    public String execute() {
    att.put("msg", "Hello World from Session!");

    HttpSession session = request.getSession();

    StringBuffer sb =new StringBuffer("Message from request: ");
    sb.append(request.getParameter("msg"));
    sb.append("
    Response Buffer Size: ");
    sb.append(response.getBufferSize());
    sb.append("
    Session ID: ");
    sb.append(session.getId());

    message = sb.toString();
    return SUCCESS;
    }
    }

 

    在struts.xml的action中配置拦截器
    <interceptor-ref name="servletConfig"></interceptor-ref>

分享到:
评论

相关推荐

    详解Struts2中Action访问Servlet API的几种方法

    详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到...

    struts2之Action访问Servlet API

    在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...

    Struts2访问ServletAPI

    本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...

    Struts2 直接访问Servlet API(二十五)

    Struts2是一个非常流行的...综上所述,了解如何在Struts2中直接访问Servlet API是非常有用的技能,它可以帮助开发者更好地控制Web应用程序的行为,并在必要时提升性能。但同时,也要注意平衡灵活性和代码的可维护性。

    Struts2中直接和间接访问ServletAPI以及动态方法调用之感叹号

    然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...

    MAX的struts2教程、struts2 API、servlet API

    3. **理解注解**:查看Struts2中的注解,了解其在代码中的作用和配置方式。 4. **深入源码**:API文档可以帮助开发者在必要时深入源码,理解框架内部的工作机制。 最后,"Servlet+API[China].chm"是Servlet API的...

    Struts2 part 3:在Action中使用ServletAPI

    在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...

    Struts2之Servlet API及单元测试初识案例struts005

    Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...

    Struts2中Servlet的配置

    在Struts2中,Servlet的配置和使用方式与标准Servlet容器中的配置有所不同,主要是为了更好地整合框架的功能。以下是关于Struts2中Servlet配置的相关知识点: 1. **实现ServletResponseAware/ServletRequestAware...

    strut2 servletapi

    这个压缩包“strut2 servletapi”显然包含了使用Struts2框架访问Servlet API的示例代码。Servlet API是Java Servlet规范的一部分,提供了一系列接口和类,允许开发者处理HTTP请求、响应以及与Web服务器交互。 在...

    Struts1 的中文和英文API

    1. **ActionServlet**:作为Servlet,它是Struts框架的入口点,负责调度请求。 2. **ActionForm**:用于封装用户表单数据,与控制器交互。 3. **Action**:实现了业务逻辑,处理请求并决定转发到哪个视图。 4. **...

    Servlet简单模拟Struts2

    3. **动态生成Action的代理**:在Struts2中,Action是业务逻辑的载体,通过动态代理,Struts2可以在调用实际Action方法之前/之后执行一些额外的操作。在Servlet中,我们可以使用Java的反射API来创建Action的代理类。...

    java上传与下载——struts2和servlet案例

    在Struts2中,我们通常会在Action类中处理这个逻辑,而在Servlet中,这将在doGet或doPost方法内完成。 现在,我们来看案例中的两个DEMO——JqUploadTest和CosUpload。JqUploadTest可能是指使用jQuery的Upload插件...

    Struts2内容整理

    Struts2 框架提供了访问 Servlet API 的功能,允许在 Action 中访问 Servlet 的各种对象。 Struts2 框架提供了一个灵活、可扩展的解决方案来构建企业级 web 应用程序,它具有强大的功能和灵活的配置方式。

    Struts2.3.4 API帮助文档chm格式

    这些jar包可能包括Struts2的核心库、额外的插件库以及其他依赖库,如Servlet API、Commons Logging等。 通过阅读Struts2.3.4 API文档,开发者可以了解到每个类、接口、方法的详细说明,包括参数类型、返回值、异常...

    Struts2之Servlet文件上传详解案例struts010

    在Struts2中,我们可以使用`CommonsFileUpload`库来处理上传的文件。首先,需要在`struts.xml`配置文件中启用`params interceptor`和`fileUpload interceptor`。这两个拦截器分别负责解析请求参数和处理文件上传。 ...

    关于struts和servlet同时用

    2. 服务器接收到请求后,Servlet容器(如Tomcat)根据web.xml中的配置找到对应的Servlet(通常是Struts的Front Controller,如.struts2Dispatcher)。 3. Struts DispatcherServlet解析请求,根据配置文件确定要调用...

Global site tag (gtag.js) - Google Analytics