Struts2——namespaceaction以及path问题

Posted 入坑的读书人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2——namespaceaction以及path问题相关的知识,希望对你有一定的参考价值。

  1. 简单的介绍下Struts2中的几个简单的问题(namespace、action、以及path问题)
  2. namespace(命名空间)

    Namespace决定了action的访问路径,默认为“”,意味着可以访问所有目录下的/ass/sss/ss/index;囊括了所有package处理不了的action

     

    namespace可以写成/,或是/xx/xx/yy,对应action访问路径为/index.action/xx/index.action或是/xx/yy/index.action

     

    Packagenamespace一般都是模块名命名(package为了区分相同名字的action)

     

     <constant name="struts.devMode" value="true" />

    <!-- 声明包 -->

    <package name = "user" extends = "struts-default" namespace=”/user”>

    <!-- 定义action -->

    <action name="login01" class="ab.LoginAction01">

    <result name="success">/success.jsp</result>

    </action>

    </package>

     

  3. action的使用:(具体的action的实现可以是一个普通的java类,最常使用的是从ActionSupport继承,好处就是直接使用Struts2封装好的方法);

      1. Class是实现actionjava类的包名.类名;

        <action name="login01" class="ab.LoginAction01">

         

      2. public class LoginAction01 extends ActionSupport {

          Public Sting execute(){

        Return SUCCESS;

        }

        }

        xwork中的源码ActionSupport

      3. 过程图:

         

         

        3.path问题

        Index.jsp中:<a href=path/path.action”></a>

        所以namespace=”/path”

        注意:Struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

        解决方法:就是统一使用绝对路径 建议不要用redirect方法

         指定basePath  默认加上项目的跟路径

         

        <%

        String path=request.getContextPath();

        String basePath=request.getScheme()+"://"+request.getServerNam()+":"+request.getServerPort()+path+"/";

        %>

         

        <base href="<%=basePath %>">   在返回首页的时候

以上是关于Struts2——namespaceaction以及path问题的主要内容,如果未能解决你的问题,请参考以下文章

Struts2基础篇

使用 struts2 dojo 标签填充一个下拉列表以选择其他下拉列表

struts2 和 dojo 网格

初见Struts2

Struts2

struts2初体验