使用项目名称访问主页

时间:2013-09-14 16:37:50

标签: java jsp struts2 log4j welcome-file

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

我已将welcome-file-list中的web.xml设置为我每次访问应用程序时要访问的home.jsp,但它没有帮助。可能是因为我正在使用Struts 2框架,如果有可能我应该在welcome-file-list中设置struts.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如何(何时)实例化objects的{​​{1}}成员,所以我决定声明一个ActionClass来实例化bean non parameter constructor(成员) of action class)因为我认为每个请求都创建了一个动作类的实例,因此动作类有一个新的message实例(取决于)。但它没有任何帮助,我做错了什么?我想我应该尝试使用Log4j并在beans之前和return SUCCESS之前在execute方法中打印一些内容,以确定return ERROR语句是否正在评估if或{{1但是,即使我发现在输入输入时它正在评估true,我仍然不明白我接下来要做什么,让执行返回false旁边我在上面展示的测试。

3 个答案:

答案 0 :(得分:1)

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

<welcome-file-list>
    <welcome-file>index.htm</welcome-file>
</welcome-file-list>

答案 1 :(得分:1)

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

<强>的index.jsp

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

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

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

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

真的,我不知道你要做什么,但如果没有找到错误,通常会返回SUCCESS,如果有错误,通常会返回ERROR

答案 2 :(得分:0)

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

由于你希望Struts2能够在某个人点击你的URL时处理所有内容,所以在这种情况下,我们应该按行动执行完整的流程,以便Framework能够获得初始化其内部结构的选项。 / p>

这是一种方法。

您可以随时在web.xml文件中声明Struts2操作名称,我假设您的第一个操作名称为welcome.action,这是我们在web.xml中需要的内容

<welcome-file-list>
   <welcome-file>welcome</welcome-file>
 </welcome-file-list>
  1. 现在在welcome文件夹中创建一个空的web-app文件。
  2. 创建欢迎动作说“
  3. 在上一部分中,您需要在struts.xml文件中或通过注释等配置欢迎操作。

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

    您可以在welcomeAction中定义要执行的所有逻辑。请注意这些要点

    1. struts.xml文件中的操作名称应与欢迎文件列表中的操作名称相同。
    2. 不要忘记在web-app文件夹中创建一个与欢迎操作名称相同的文件,因为这是让容器称之为Action的技巧。
    3. 希望这会对你和其他有同样问题的人有所帮助。

      `