首页 > 代码库 > Struts2——namespace、action、以及path问题

Struts2——namespace、action、以及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=http://www.mamicode.com/"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=http://www.mamicode.com/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=http://www.mamicode.com/"<%=basePath %>">   在返回首页的时候

Struts2——namespace、action、以及path问题