`

关于struts1.2 的跳转方法的跳转的实践

阅读更多

      最近因为工作的原因,重新接触的strut1.2,对其中的跳转很是不解。后来有机会接触到一种在后缀上加一个参数来给数据进行指定方法的调用,本来这是很好的。但是现在的项目是二次开发,就出现了一个问题,看了一个大牛的代码,让我不爽,我不明白是不是大牛就是技术狂。

 

     这位大牛是这样做的 在页面中设置这样的隐藏域 偷偷的传参数给url,真是让人崩溃,代码真是晦涩难懂啊。我想很长时间才能搞懂整个项目的框架结构了.

 

 <html:form action="tLSecuUsersAction.do" focus="${requestScope.focus == null ? 'name' : requestScope.focus}">
      <html:hidden property="action" value="login" /><!-- input type="text" name="loginName" value="22"/ -->
 </html:form>

 

<action path="/tLSecuUsersAction"
   type="com.stt.platform.admin.web.TTSecuUsersAction"
   name="TTSecuUsersLoginForm" scope="request" validate="false"
   parameter="action">
</action>

 

在action中继承一个DispatchAction,其中有一个login()的方法 ,我晕。看完这段代码我直接崩溃,就是不让人看懂是不。。。

 

下面是关于 使用DispatchAction类调用多个Action方法的收集。希望会有点帮助!

 

   在使用Struts动作时,每一个Action都需要编写一个类,并且要在struts-config.xml进行配置。这对于一个拥有很多Action的Web程序来说,工作量是非常大的。为此,Struts提供了DispatchAction类,这个类允许将一个Action作为一个方法来调用。在Web浏览器中通过请求参数来指定要调用的动作。

 

    虽然DispatchAction类是一个抽象类,但其中却没有一个抽象方法。因此,DisplatchAction的子类不用实现任何DisplatchAction类中的方法。但如果要处理Action代码,就必须根据相应的Action来编写Action方法。一个Action方法除了方法名和execute方法不一样外,其他的都和execute方法完全一样。但编写Action方法时要注意,Action方法名必须和用于指定动作的请求参数值一致(大小写也必须一致)。在下面的例子中演示了通过DispatchAction类实现方法和Action的对应。在这个例子中,有三个方法:fr、en和unspecificed.其中fr和en是两个Action方法,分别用于将当前页面转发到法文和英文页面,而当用于指定Action的请求参数不存在时,则调用unspecificed方法(在这个方法中将当前页面转发到中文页面)。在这个程序中使用的用于指定Action的请求参数为language(读者可以指定自己的请求参数)。

 

    在<samples工程目录>\src\action目录建立一个MyDispatchAction.java文件,代码如下:

  package action;
 
  import javax.servlet.RequestDispatcher;
  import javax.servlet.http.*;
  import org.apache.struts.action.*;
  import org.apache.struts.actions.*;
 
  public class MyDispatchAction extends DispatchAction
  {
      // forward到法文页面
      public ActionForward fr(ActionMapping mapping, ActionForm form,
              HttpServletRequest request, HttpServletResponse response)
      {
          try
          {
              RequestDispatcher rd = request.getRequestDispatcher("/newGlobal.jsp?language=fr");
              rd.forward(request, response);
          }
          catch (Exception e)
          {
          }
          return null;
      }
      // forward到英文页面
      public ActionForward en(ActionMapping mapping, ActionForm form,
              HttpServletRequest request, HttpServletResponse response)
      {
          try
          {
              RequestDispatcher rd = request.getRequestDispatcher("/newGlobal.jsp?language=en");
              rd.forward(request, response);
          }
          catch (Exception e)
          {
          }
          return null;
      }
      // 在未使用language=fr和language=en作为访问参数的情况时调用这个方法
      protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
              HttpServletRequest request, HttpServletResponse response)
              throws Exception
      {
          try
          {
               // forward到中文页面
              RequestDispatcher rd = request.getRequestDispatcher("/newGlobal.jsp?language=zh");
              rd.forward(request, response);
          }
          catch (Exception e)
          { 
          }
          return null;
      }
  }


    在struts-config.xml文件中加入如下的配置代码来配置MyDispatchAction:

<action path="/locale" type="action.MyDispatchAction" parameter="language"/>

 


    其中parameter参数表示用于指定Action的请求参数名。

    在启动Tomcat后,可通过如下的URL进行测试:

    显示英文页面:

    http://localhost:8080/samples/locale.do?language=en

    显示法文页面:

    http://localhost:8080/samples/locale.do?language=fr

    显示中文页面(默认页面):

    http://localhost:8080/samples/locale.do

 

    虽然上面的代码可以很好地调用相应的Action方法,但在一些情况时,如请求参数language指定的Action方法不存在时,就会抛出异常。那么如果我们想在非正常情况下都调用默认的处理Action动作的方法(也就是unspecificed方法)该怎么办呢?

 

 

 

分享到:
评论

相关推荐

    struts 1.2 跳转后css或js 无效解决方法

    ### Struts 1.2 跳转后 CSS 或 JS 无效解决方法 在使用Struts 1.2框架开发Web应用时,可能会遇到跳转到新的页面后,某些CSS样式或者JavaScript脚本失效的问题。这通常是由于资源加载路径设置不当造成的。下面将详细...

    struts、struts1.2 学习教程

    2. **Action类**:在Struts1.2中,Action类是控制器的主要实现,它处理用户的请求,执行相应的业务逻辑,并决定跳转到哪个JSP页面作为响应。 3. **配置文件**:`struts-config.xml`是Struts的核心配置文件,用于...

    STRUTS1.2中文文档

    Struts1.2是Apache软件基金会的Jakarta项目下的一个开源框架,...文档中的实例、教程和API参考可以帮助读者快速掌握Struts1.2的使用方法,提升开发效率。投入时间深入学习,无疑会为你的Java Web开发技能树添砖加瓦。

    struts1.2 from表单提交包含list的对象

    如果能访问到这个项目,可以更深入地学习Struts1.2处理包含列表对象的表单提交的实践细节。 总结来说,Struts1.2处理包含列表对象的表单提交涉及到表单设计、ActionForm的创建、Action类的编写以及Struts框架的内部...

    struts 1.2驱动包

    3. **Action**:Action类是实际执行业务逻辑的地方,它接收来自ActionForm的数据,处理后调用模型层的方法,最后根据业务结果决定跳转到哪个JSP页面。 4. **Tiles插件**:Struts 1.2集成了Tiles框架,使得布局和...

    struts1.2.jar包

    2. **Action类**:在Struts1.2中,Action类是核心组件,它接收来自用户的请求,处理业务逻辑,并决定跳转到哪个JSP页面进行响应。Action类继承自org.apache.struts.action.Action,并需要覆盖execute()方法。 3. **...

    Struts1.2

    了解这些基础知识后,可以通过阅读博文链接获取更多关于Struts1.2的实际应用和最佳实践。同时,解压文件“struts1pro”应该包含示例代码和文档,可以作为学习和实践的参考资料。通过实际操作,可以更深入理解Struts...

    struts1.2学习模型

    学习Struts1.2不仅有助于理解MVC(Model-View-Controller)设计模式,还可以提升在企业级应用开发中的实践能力。尽管Struts1.2已经相对过时,但它的许多设计理念和模式在现代框架如Spring MVC中仍然可见。因此,掌握...

    struts1.2+spring2.3+hibernate3.0

    Struts1.2、Spring2.3 和 Hibernate3.0 是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个组合在2000年代末到2010年初非常流行,它们各自解决了不同的问题,并通过相互配合,...

    Blog.rar_struts1.2

    Struts1.2是一个经典的Java Web开发框架,由Apache软件基金会开发。它是MVC(Model-View-Controller)设计模式的实现,旨在简化Java Servlet API的复杂性,提高开发效率和代码可维护性。本博客系统是基于Struts1.2...

    struts1.2 的列子

    Struts1.2 是一款基于MVC(Model-View-Controller)设计模式的Java Web框架,它由Apache软件基金会开发并维护。这个框架的主要目的是为了简化Web应用的开发过程,提高代码的可重用性和可维护性。在"struts1.2 的例子...

    Struts 1.2 API详细讲解

    Struts 1.2的Validator框架提供了一种验证用户输入的方法。通过定义验证规则,你可以确保输入的数据符合业务需求。 九、国际化与本地化 Struts 1.2支持多语言环境,通过资源包(Resource Bundle)可以实现不同地区...

    struts1.2jar 包

    Struts 1.2 是一个历史悠久的Java Web框架,由Apache软件基金会开发并维护,它在Web应用程序开发中扮演了重要角色。这个压缩包包含了Struts 1.2的完整库,包括所有必要的jar文件,使得开发者能够快速搭建基于Struts ...

    struts1.2登陆小例子

    Struts1.2是一个经典的Java Web开发框架,它在2004年由Apache软件基金会发布,主要用于构建基于MVC(Model-View-...通过实践这个例子,开发者可以深入理解Struts1.2的工作原理,并为以后的Web开发打下坚实基础。

    Struts1.2+Hibernate3.0+Spring2+DWR OA 办公自动化管理系统

    Struts1.2主要负责处理HTTP请求,管理页面跳转,并通过Action和ActionForm实现业务数据的封装与传递。 **Hibernate3.0** 是一个强大的对象关系映射(ORM)框架,它可以将数据库中的表映射为Java对象,使得开发者...

    Struts1.2标签库资料

    Struts1.2标签库是Java Web开发中的一个重要组成部分,它...通过深入理解和实践Struts1.2标签库,开发者能更好地构建MVC模式的Web应用,提高开发效率,同时也能为后续升级到Struts2或其他更现代的框架打下坚实的基础。

    struts1.2配置介绍

    Struts1.2是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个框架的主要目的是为了简化Web应用开发过程,提高开发效率,使得开发者可以更专注于业务...

    Struts1.2+Spring1.2+Hibernate2.0搭建详解

    Struts1.2、Spring1.2和Hibernate2.0是经典的Java企业级开发框架组合,它们分别负责不同的职责,共同构建了一个强大的后端架构。Struts1.2作为MVC(模型-视图-控制器)框架,主要处理前端请求并控制页面展示;Spring...

Global site tag (gtag.js) - Google Analytics