Java Struts名称空间和WEB-INF文件夹

Java Struts名称空间和WEB-INF文件夹,java,jsp,tomcat,struts2,Java,Jsp,Tomcat,Struts2,我想把view.jsp文件放在WEB-INF文件夹中。它位于WEB-INF\user\view.jsp <package name="user" extends="struts-default" namespace="user"> <action name="view" class="com.example.user.ViewUserAction"> <result>/WEB-INF/user/view.jsp</r

我想把
view.jsp
文件放在WEB-INF文件夹中。它位于
WEB-INF\user\view.jsp

<package name="user" extends="struts-default"  namespace="user">
     <action name="view" class="com.example.user.ViewUserAction">
             <result>/WEB-INF/user/view.jsp</result>
     </action>
</package>

/WEB-INF/user/view.jsp
但是Struts将这个url更改为
application/user/WEB-INF/user/view.jsp


因此,据我所知,如果我的命名空间不是
“/”
,我将永远不会访问
WEB-INF中的JSP

我发现了我的错误所在

正如Alexander M在评论中指出的那样,不会生成这样的url

问题是我尝试过各种糟糕的解决方案,但大多数都有下一个概要

struts.xml
中,我写道:

<package name="product" namespace="/" extends="struts-default">
        <action name="view" class="com.example.action.product.ViewProduct">
            <result name="success">/WEB-INF/view/product/view.jsp</result>
        </action>
</package>
这是无效的

因此,我将struts.xml名称空间更改为:

  <package name="product" namespace="/product" extends="struts-default">
            <action name="view" class="com.example.action.product.ViewProduct">
                <result name="success">/WEB-INF/view/product/view.jsp</result>
            </action>
   </package>
有关包和名称空间理解的进一步参考:


  • 什么?您在哪里看到Struts将此url更改为application/user/WEB-INF/user/view.jsp?命名空间不是操作的路径,它就像是操作所在的占位符。@RomanC所以它的工作原理类似于操作将从哪个位置执行?位置是结果标记体中的位置,在代码中是绝对的。是的,使用S2标记构建url是最佳实践。
    http://localhost:8080/app/product/product/view.action
    
      <package name="product" namespace="/product" extends="struts-default">
                <action name="view" class="com.example.action.product.ViewProduct">
                    <result name="success">/WEB-INF/view/product/view.jsp</result>
                </action>
       </package>
    
    <a href="<s:url action='view' namespace="/product"/>"> View product</a>
    
    <s:a action="view" namespace="/product"> View product</s:a>