`
hehebendan
  • 浏览: 82043 次
  • 性别: Icon_minigender_1
  • 来自: 伊拉克
社区版块
存档分类
最新评论

struts2方法的动态调用以及与servletAPI对象的使用

阅读更多

一)Struts2方法的动态调用:

 在struts2中没有struts1的Dispachaction,那么在struts2中又怎么来实现像dispatchAction的功能.可以通过下 面三中方法来实现: 

 1) 在配置action的时候配置method属性,也是我们最常用的方式:例如下面的配置:

<action name="login" class="com.wh.struts2.action.UserLoginAction" method="login">
<result>
 .
 .
 .
</result>
</action>

 2) struts.xml配置文件不用改变,在JSP进行配置: 如下:

<action name="login" class="com.wh.struts2.action.UserLoginAction">
<result>........</result>
</action>

 JSP页面form的action像下面这样写:

  

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

 需要解释的一下的就是form的action的这样的写法的含义是什么,感叹号前面的login代表着name为login的action来处理这个请求,叹号后面的login代表的是处理的这个请求的action的具体的方法,就是说,由login对应的action的login方法来进行请求的处理。

 3)通配符的配置方式: 如下:

<action name="*login" class="com.wh.struts2.action.UserLoginAction" method="{1}">
<result>........</result>
</action>

 Jsp页面的from的action配置如下:

<s:form action="userLogin" method="post" ></s:form>

 这个的意思就是说action处理匹配*login的处理,把*作为处理该请求的方法。 上面的配置就是说:userLogin由*login这个类来进行处理,处理该请求的方法为user。

二)struts2中servletAPI的使用:

1) ActionContext 查看API文档我们会发现:getApplication()getParameters()getSession()get(String key)put(String key, Object value)  ,这些都是返回的Map的集合,我们可以通过key取得值即可,get,put方法就想到与setAttribute()方法,而get就相当于getAttribute()方法。使用ActionContext我们看不见servletAPI的对象。这是因为struts2在底层帮我们进行了封装,而向我们提供的是集合MAP的接口。需要注意的是ActionContext不能取得response对象。

2) 使用ServletActionContext,查看API我们会发现该类直接继承与com.opensymphony.xwork2.ActionContext
它有很多静态方法:例如:getRequest()getResponse()getServletContext()getPageContext() 这些方法直接返回servlet对象。
3) 实现ServletRequestAware、ServletResponseAware 来进行得到request,response对象,使用这种方法必须实现set方法,以及一个给action添加一个HttpServletRequst/HttpServletResponse对象,这样struts2才能给我们进行注入。当然这种方法比较麻烦,建议优先使用actionContext,然后是servletActionContex,最后是实现接口的方式。

分享到:
评论

相关推荐

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

    在Struts2框架中,直接和间接访问Servlet API以及动态方法调用是两个关键概念,它们对理解和优化应用性能至关重要。 首先,让我们深入理解直接访问Servlet API。在传统的MVC模式中,Servlet扮演着控制器的角色,...

    Struts2访问ServletAPI

    在Struts2框架中,我们有时需要直接与Servlet API交互,例如处理HTTP请求、响应,或者使用Session、Cookie等。本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求...

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

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    struts2 Action 包 命名空间 servlet API

    Struts2通过FilterDispatcher这个Servlet过滤器来拦截所有到达服务器的请求,判断是否需要由Struts2框架处理,如果是,则根据配置的Action映射调用相应的execute()方法。 Struts2的包结构清晰,每个包都有其特定的...

    struts2的API耦合与动态方法调用

    本文将重点讨论Struts2中的API耦合和动态方法调用,这两种特性对于理解框架的工作原理和提高代码的灵活性至关重要。 首先,我们来看看Struts2 API耦合的几种方式: 1. **ActionContext类**:ActionContext是Struts...

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

    - 在Action方法中直接调用Servlet API的方法来完成特定任务。 4. **示例代码**: ```java public class MyAction extends ActionSupport { private HttpServletRequest request; private HttpServletResponse ...

    servlet api servlet api

    - 销毁:当Servlet不再使用或者Web应用停止时,调用`destroy()`方法释放资源。 3. **Servlet API的主要接口和类**: - `Servlet`:所有Servlet的基类,定义了`init()`, `service()`, `destroy()`等方法。 - `...

    strut2 servletapi

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

    Java Servlet API (英文版)

    - **服务**: 对每个请求,Servlet容器都会创建一个线程来调用Servlet的`service()`方法,该方法会根据请求类型转发到`doGet()`或`doPost()`。 - **销毁**: 当Servlet不再需要或者服务器关闭时,Servlet容器会调用`...

    Servlet简单模拟Struts2

    在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...

    Struts2中Servlet的配置

    3. **Struts2与Servlet共存的问题及解决**: 当一个项目同时使用了Struts2框架和直接的Servlet时,可能会遇到问题,因为Struts2有自己的请求处理流程,可能会覆盖或干扰到Servlet的正常工作。为了解决这个问题,...

    Struts2内容整理

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

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

    CosUpload可能是指使用腾讯云的对象存储服务COS(Cloud Object Storage),在这种情况下,上传和下载操作将涉及与云服务的交互,包括鉴权、对象的上传和下载API调用等。 学习这个案例,你可以了解到如何在实际项目...

    servlet与struts简介

    ### servlet与struts简介 #### 一、Servlet概述 Servlet是一种服务器端的Java技术,用于扩展Web服务器的功能。Servlet能够动态地生成Web页面,并且可以处理来自客户端的HTTP请求。Servlet是Java EE的重要组成部分...

    关于struts和servlet同时用

    Struts和Servlet是Java Web开发中的两个重要组件,它们在构建动态、交互式的Web应用程序时起着关键作用。Struts是一种基于MVC(Model-View-Controller)设计模式的开源框架,而Servlet则是Java标准库中用于处理HTTP...

    struts1和struts2的区别

    ### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    - **Struts1**执行时会调用Servlet API的相关方法,如果开发者想要自定义某些行为,则需要重写这些方法。 - 在**Struts2**中,Action类通过初始化、拦截器等机制进行配置和扩展,这使得开发者可以更加灵活地控制请求...

    Struts1与Struts2原理 区别详解汇总

    2. **Action对象**:Struts1中的Action直接与Servlet API耦合,而Struts2中的Action通过拦截器与业务逻辑分离。 3. **配置方式**:Struts1使用`struts-config.xml`文件进行配置,而Struts2主要通过`struts.xml`...

    Struts2.3.4 API帮助文档chm格式

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

Global site tag (gtag.js) - Google Analytics