在我的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
方法中,
我想要两个不同的结果SUCCESS
或ERROR
,如
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
旁边我在上面展示的测试。
答案 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>
welcome
文件夹中创建一个空的web-app
文件。在上一部分中,您需要在struts.xml
文件中或通过注释等配置欢迎操作。
<action name="welcome" class="welcomeAction">
<result>welcome.jsp</result>
</action>
您可以在welcomeAction
中定义要执行的所有逻辑。请注意这些要点
struts.xml
文件中的操作名称应与欢迎文件列表中的操作名称相同。web-app
文件夹中创建一个与欢迎操作名称相同的文件,因为这是让容器称之为Action的技巧。希望这会对你和其他有同样问题的人有所帮助。
`