`
vdny
  • 浏览: 789 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

转:在struts2的Action中慎起get打头的函数

阅读更多
struts2 Action里面的getter方法会在Action结束后被自动调用,例如有此情况:

<package extends="struts-default">

<action name="MyAction">

<action name="AnotherAction" method="getSomething">

...

在Action中

    public String execute(){

        System.out.println("execute");

        return SUCCESS;

    }

    public String getA() {

        System.out.println("getA");

        return SUCCESS;

    }

    public String geta() {

        System.out.println("geta");

        return SUCCESS;

    }

    public String getaa() {

        System.out.println("getaa");

        return SUCCESS;

    }

    public String getaA() {

        System.out.println("getaA");

        return SUCCESS;

    }

    public String getB() {

        System.out.println("getB");

        return SUCCESS;

    }

    public String gotA() {

        System.out.println("gotA");

        return SUCCESS;

    }

当调用MyAction的时候,输出结果为:

execute

geta

getaA

getaa

getB

也就是说,即使你没有调用AnotherAction,getSomething仍然会执行。

---------------------------------------------------------------------------

这个问题确实很恼人,这两天又被此事折腾的崩溃。

再次提醒,在struts2的Action中慎起get打头的函数!

出错的整个过程是这样的(错的花了..):

在测试程序的过程中,发现后台Hibernate不时的发生读取脏数据的情况。

为此专门编写了测试文件进行测试,并没有发现读取脏数据的现象。众所周知Session不是线程安全的,可系统是用ThreadLocal来管理Session的,按说不应该出现这个问题。

我也曾怀疑过是sf缓存出的错,可去掉缓存后还是有问题。

在打开了Session创建和销毁的Log后,发现程序在Action返回后,又创建了新的Session(没有关闭)。

注:系统在Action层对Service层做了IOC,在Service层对DAO层做了IOC。

结果就是,Action结束时调用了getXXXService函数,而又神奇的调到了当前Service所有get打头的函数。

最后的解决办法是,此处的IOC并不需要getter,把getter删除就行了。
分享到:
评论

相关推荐

    struts2的Ajax实现注册验证

    一个简单的例子是使用`$.ajax()`函数,指定URL为Struts2 Action的路径,方法为GET或POST,根据你的需求来传递参数,如待验证的用户名。 3. **服务器端验证**:在Action类中,你需要编写一个方法来检查用户名是否已...

    struts2ajax项目

    此外,为了更好地展示数据,可能还需要在Struts2中使用Interceptor(拦截器),例如,`params`拦截器用于将请求参数绑定到Action,`validation`拦截器负责验证表单数据,`workflow`拦截器管理Action的生命周期。...

    ActionContext介绍(在Struts2中)

    象,如HttpServletRequest、HttpServletResponse,或者需要访问Session和Application等信息,在Struts2框架中,我们可以利用ActionContext和ServletActionContext这两个类。ActionContext是Struts2提供的一个核心上...

    struts2 json

    Struts2 JSON是一个在Java开发中广泛使用的框架,它允许开发者在Struts2应用程序中方便地处理JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    最简单的:Struts2+JSON+JQUERY+AJAX 完整DEMO源代码

    Struts2、JSON、JQUERY和AJAX是Web开发中常用的技术栈,它们结合使用能够构建出高效、交互性强的动态网页应用。本DEMO源代码提供了这些技术的集成示例,非常适合初学者理解和实践。 **Struts2** 是一个基于MVC...

    struts中实现验证码

    在Struts2框架中,实现验证码功能主要是为了增强网站的安全性,防止自动化脚本或恶意用户进行批量、无意义的注册或登录尝试。以下将详细解释如何在Struts2环境中设置验证码并展示其核心组件: 1. **HTML 页面**: ...

    struts2实现ajax

    在Struts2中实现Ajax(Asynchronous JavaScript and XML)可以极大地提升Web应用的用户体验,因为它允许部分页面动态更新,而无需整个页面刷新。以下是对Struts2实现Ajax的详细解释: 1. **Ajax基础**: Ajax的...

    struts2如何实现弹出action返回的错误信息

    在Struts2框架中,实现弹出Action返回的错误信息是一项常见的需求,特别是在表单验证、数据处理或业务逻辑执行失败时,向用户反馈错误信息至关重要。本文将深入探讨三种在Struts2中实现这一功能的方法,并对每种方法...

    关于Struts2与Jquery实现无刷新分页的不解问题

    url: "getPagedList.action", // Struts2 Action的URL type: "POST", data: {currentPage: page}, success: function(data) { // 更新页面内容 displayData(data); } }); } }); ``` 4. **Struts2 Action...

    struts2 jqurey ajax简单实例

    1. **配置Struts2**:首先,你需要在`struts.xml`配置文件中定义Action,例如: ```xml &lt;action name="ajaxAction" class="com.example.AjaxAction"&gt; &lt;result type="json"&gt;/ajaxResult.jsp &lt;/action&gt; ``` 这里...

    Ajax与Struts2异步请求数据

    在本文中,我们将深入探讨如何将Ajax技术与Struts2框架结合,实现异步请求数据。这种方式能够提高用户体验,因为它允许后台处理数据而无需刷新整个页面。以下是对关键知识点的详细说明: 1. **Ajax(Asynchronous ...

    struts2+ajax+jquery

    在Struts2的配置文件(struts.xml)中,我们需要定义一个对应的Action,该Action将处理来自Ajax请求的数据,并返回响应。例如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action...

    struts2.2 项目搭建 以及与 struts2-json jquery 前后台进行交互

    在"Struts2.2 项目搭建 以及与 struts2-json jquery 前后台进行交互"的主题中,我们主要会探讨以下几个知识点: 1. **Struts2 项目搭建**: - **环境配置**:首先需要安装JDK,设置好环境变量,然后安装Apache ...

    struts2中action如何获取jsp页面参数1.pdf

    在Struts2框架中,Action类是业务逻辑的核心,它负责处理来自客户端(通常是JSP页面)的请求。当我们需要从JSP页面传递参数到Action类时,Struts2提供了多种方式来获取这些参数。以下是关于如何在Struts2中Action...

    Struts2+jQuery(不用JSON)实现局部刷新

    Struts2和jQuery是两种非常流行的开源技术,它们在Web开发中有着广泛的应用。Struts2作为MVC框架,主要用于处理后端业务逻辑,而jQuery则是一个强大的JavaScript库,简化了前端DOM操作、事件处理以及AJAX交互。在这...

    Jquery_Ajax_Struts2_Action_JSP_Json

    3. Struts2:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它负责处理客户端发送的请求,并将结果返回到视图层。在本案例中,Struts2 Action作为服务器端接收和处理Ajax请求的控制器。 4...

    Struts2之struts2自带插件实现异步调用案例struts015

    在本案例"Struts2之struts2自带插件实现异步调用案例struts015"中,我们将探讨如何利用Struts2的插件机制和AJAX技术来实现异步数据交互。 首先,我们要了解AJAX(Asynchronous JavaScript and XML)的核心概念,它...

    struts2等一些技术模仿当当网的一个小项目

    2. **Action类**:在Struts2中,Action类是业务逻辑的载体,处理用户的请求并返回结果到视图。 3. **配置文件**:Struts2通过struts.xml配置文件来定义Action类、Action路径、结果页面等,便于管理和扩展。 4. **...

    struts2+jquery执行ajax并返回json类型数据(源码)

    1. **创建Struts2 Action**:在Struts2中,你需要定义一个Action类,该类将处理Ajax请求。这个类通常包含一个或多个方法,每个方法对应一个特定的请求。你需要在这些方法中实现业务逻辑,并使用Struts2的`@Result`...

Global site tag (gtag.js) - Google Analytics