2

在我的 Web 应用程序中,我必须编写 Web 应用程序的 URL 并指定home.jsp我想成为主页的页面,我想知道如何仅通过键入project's root folder名称就可以在浏览器中访问该应用程序。

我已将welcome-file-listin设置web.xmlhome.jsp每次访问应用程序时想要访问的值,但这没有帮助。可能是因为我使用的是 Struts 2 框架,如果可能的话,我应该设置welcome-file-listinstruts.xml吗?我该怎么做?

另一个问题,我到目前为止。例如在execute一个action类的方法中,我想要两个不同的结果SUCCESSERROR,如

if(message.getMessageBody() != null &&  
          message.getMessageDestinationEmail() != null &&
     message.getMessageHead() != null){
         return SUCCESS;
} else
     return ERROR;

我将错误映射到error.jsp页面并将成功映射到不同的.jsp页面struts.xml

<action name="message" class="com.mule.basik.action.PostOfficeAction" 
                                                     method="execute">
        <result name="success">/status.jsp</result>
        <result name="error">/error.jsp</result>
</action>

但是无论(在浏览器表单中)我是否填写messageHead messageBody页面success/status.jsp)都会返回。

我不确定 struts2 如何(何时)实例化objectsan 的成员ActionClass,所以我决定声明一个non parameter constructor实例化 bean message(动作类的成员)的 a,因为我认为对于每个请求都会创建一个动作类的实例,因此有动作类的新实例beans(取决于)。但它没有任何帮助,我做错了什么?我想我应该尝试使用 Log4j 并在之前return SUCCESS和之前的 execute 方法中打印一些东西return ERROR来确定该if语句是否评估为trueor false,但即使我发现它正在评估true何时输入输入,我仍然没有了解我接下来要做什么,以使执行返回ERROR除了我上面展示的测试。

4

3 回答 3

1

可以使用欢迎文件列表,您应该在web.xml用作欢迎文件的文件或 Web 服务器默认配置文件中对其进行配置。当您访问包含此文件的 web 文件夹时,该文件的内容将由 web 服务器加载,无论 struts2 是否映射此文件夹作为其操作。然后在欢迎文件中,您应该放置重定向到操作的代码。例如index.jsp是欢迎文件

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

索引.jsp

<% response.sendRedirect("showcase.action"); %> 

第二个问题已经在这里讨论过,在构造函数中初始化 bean 是一个坏主意,容器使用构造函数来实例化动作。在执行此操作时,您无法访问某些功能或服务,因为它们不可用。最好在创建操作并且功能可用之后进行延迟初始化,例如在执行操作时。如果您希望所有操作在执行之前进行初始化,那么Preparable默认情况下,您的操作应该通过ActionSupport该接口实现扩展和覆盖prepare方法。

初始化对象是您的责任。OGNL 可以创建其他提交的对象来填充您的集合。

您可以将 Log4j 与 struts2 一起使用,但它需要在项目和服务器上进行配置。出于调试目的,您可以写入System.out在大多数 IDE 中重定向到控制台的内容。

真的,我不知道您要做什么,但SUCCESS如果没有发现错误或ERROR有错误,通常会返回。

于 2013-09-14T17:38:19.917 回答
1

您也可以welcome-file-list在 web.xml 中使用 struts:

<welcome-file-list>
    <welcome-file>index.htm</welcome-file>
</welcome-file-list>
于 2013-09-14T16:40:57.807 回答
0

由于上面已经回答了您问题的第二部分,所以我不会详细说明,我将尝试为第一部分提出解决方案。

由于您希望当有人点击您的 URL 时所有事情都由 Struts2 处理,因此在这种情况下,我们需要按操作跟踪/执行完整流程,以便框架可以选择初始化其内部结构。

这是一种方法。

你总是可以在你的web.xml文件中声明 Struts2 动作名称,我假设你的第一个动作名称是welcome.action,这是我们在 web.xml 中需要的

<welcome-file-list>
   <welcome-file>welcome</welcome-file>
 </welcome-file-list>
  1. welcome现在在您的文件夹中创建一个空文件web-app
  2. 创建你的欢迎动作说`

在最后一部分中,您需要在struts.xml文件中或通过注释配置您的欢迎操作。

<action name="welcome" class="welcomeAction">
   <result>welcome.jsp</result>
 </action>

你可以定义你想要在你的内部执行的所有逻辑welcomeAction。请注意这些点

  1. 文件中的操作名称struts.xml应与欢迎文件列表中的名称相同。
  2. 不要忘记在文件夹中创建一个与您的欢迎操作名称相同的文件,web-app因为这是让容器调用您操作的技巧。

希望这会帮助你和许多其他有同样问题的人。

`

于 2013-09-14T18:17:00.877 回答