【问题标题】:Struts2 URL unreachableStruts2 URL 无法访问
【发布时间】:2014-08-19 01:21:31
【问题描述】:

我真的在用 Struts2 绞尽脑汁——我可以通过省略部分路径来访问 JSP 页面。注意路径假设包括pages/welcome_user.jsp。关键是看路径中的pages这个词。

这是struts.xml 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="default" namespace="/User" extends="struts-default">
        <action name="Login">
            <result>pages/login.jsp</result>
        </action>
        <action name="Welcome" class="com.mkyong.user.action.WelcomeUserAction">
            <result name="SUCCESS">pages/welcome_user.jsp</result>
        </action>
    </package>
</struts>

我可以通过http://localhost/Struts2Example/User/Login访问login.jsp
welcome_user.jsp 通过:http://localhost/Struts2Example/User/Welcome
请注意,在这两个 URL 中,我都可以删除 pages,为什么?

来源: http://www.mkyong.com/misc/how-to-use-mkyong-tutorial/

有人可以通过上面的教程告诉我有什么问题吗?

【问题讨论】:

  • 没有错。您应该通过操作而不是直接访问页面。
  • 您不是在“访问 JSP 页面”,而是在访问碰巧使用 JSP 作为其结果的操作。这与访问转发到 JSP 的 servlet 或从文件系统流回文件的方式相同——从客户端的角度来看,它只是一个 URL。

标签: java struts2 actionresult xml-configuration struts2-namespace


【解决方案1】:

首先,您使用了映射到struts.xml 中的操作的 URL。

action 方法被执行并返回结果代码SUCCESS。您可以在操作配置中找到此结果。然后执行结果,如果没有设置结果类型默认为dispatcher,请求被转发到结果配置中指定的位置。

如果位置是相对的,则最终的绝对位置将由用于此操作的包的名称空间确定。

您可以在示例Struts 2 Namespace configuration example and explanation 中找到更详细的命名空间用法示例和说明。

如果您使用转发到 JSP 的 dispatcher 结果,则不能删除页面。在这种情况下,URL 已被重写,您无法看到最终 URL。

【讨论】:

  • 唯一能帮助我找出问题的方法是通过 Roman C. 提供的链接:mkyong.com/struts2/… 非常有帮助,现在我明白了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
相关资源
最近更新 更多