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

时间:2023-03-09 06:10:33
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

    Package和namespace一般都是模块名命名(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是实现action的java类的包名.类名;

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

      2. public class LoginAction01 extends ActionSupport {

          Public Sting execute(){

        Return SUCCESS;

        }

        }

        (xwork中的源码ActionSupport)

      3. 过程图:

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

        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 %>">   在返回首页的时候