Java 使用项目';访问主页的用户名
在我的web应用程序中,我必须编写web应用程序的URL,并指定要作为主页的Java 使用项目';访问主页的用户名,java,jsp,struts2,log4j,welcome-file,Java,Jsp,Struts2,Log4j,Welcome File,在我的web应用程序中,我必须编写web应用程序的URL,并指定要作为主页的home.jsp页面,我想知道如何在浏览器中通过键入项目的根文件夹名称来访问应用程序 我已将web.xml中的欢迎文件列表设置为每次访问应用程序时都要访问的home.jsp,但这没有帮助。可能是因为我使用的是Struts 2框架,如果可能的话,我应该在Struts.xml中设置welcome file list?我该怎么做 另一个问题,我到目前为止还没有回答。例如,在一个action类的execute方法中, 我想要两个
home.jsp
页面,我想知道如何在浏览器中通过键入项目的根文件夹
名称来访问应用程序
我已将web.xml
中的欢迎文件列表设置为每次访问应用程序时都要访问的home.jsp
,但这没有帮助。可能是因为我使用的是Struts 2框架,如果可能的话,我应该在Struts.xml
中设置welcome file list
?我该怎么做
另一个问题,我到目前为止还没有回答。例如,在一个action
类的execute
方法中,
我想要两个不同的结果成功
或错误
,如下所示
if(message.getMessageBody() != null &&
message.getMessageDestinationEmail() != null &&
message.getMessageHead() != null){
return SUCCESS;
} else
return ERROR;
我将错误映射到error.jsp
页面,并将success映射到struts.xml
中的另一个.jsp
页面
<action name="message" class="com.mule.basik.action.PostOfficeAction"
method="execute">
<result name="success">/status.jsp</result>
<result name="error">/error.jsp</result>
</action>
/status.jsp
/error.jsp
但是,无论(在浏览器表单中)我是否填写消息头消息体,都会返回成功页面(/status.jsp
)
我不确定struts2如何(何时)实例化ActionClass的对象
成员,因此我决定声明一个非参数构造函数
,该构造函数实例化bean消息
(action类的成员)因为我认为每个请求都会创建一个action类的实例,因此会有一个action类所拥有的bean
的新实例(取决于)。但这没有任何帮助,我做错了什么?我想我应该尝试使用Log4j,在返回成功
和返回错误
之前,在execute方法中打印一些内容,以确定if
语句的计算结果是true
还是false
,但即使输入时我发现它的计算结果是true
,我仍然不明白下一步要做什么,让execute返回上面显示的测试旁边的ERROR
您也可以在web.xml中对struts使用欢迎文件列表
:
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
index.htm
可以使用欢迎文件列表,您应该在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
default.jsp
index.html
index.jsp
<% response.sendRedirect("showcase.action"); %>
这里已经讨论过的第二个问题是,在构造函数中初始化bean是个坏主意,容器使用构造函数来实例化操作。在它运行时,您无法访问某些功能或服务,因为它们不可用。最好在创建操作并且功能可用后(例如,在执行操作时)进行延迟初始化。如果您希望所有操作在执行之前初始化,则有一个Preparable
接口,默认情况下由ActionSupport
实现,您的操作应该扩展并覆盖prepare
方法
初始化对象是您的责任。提交的其他对象可以由OGNL创建以填充您的集合
您可以将Log4j与struts2一起使用,但它需要在项目和服务器上进行配置。出于调试目的,您可以写入System.out
,它在most IDE中被重定向到控制台
真的,我不知道你想做什么,但如果没有发现错误,通常会返回SUCCESS
,如果有错误,则返回ERROR
由于您问题的第二部分已在上文中得到回答,因此我将不详细介绍,我将尝试为第一部分提出解决方案
因为您希望当有人点击您的URL时,一切都由Struts2处理,所以在这种情况下,我们应该通过操作遵循/执行完整的流,以便框架应该获得初始化其内部结构的选项
这里有一种方法可以做到这一点
您总是可以在web.xml
文件中声明Struts2操作名称,我假设您的第一个操作名称是welcome.action
,下面是我们在web.xml中需要的内容
<welcome-file-list>
<welcome-file>welcome</welcome-file>
</welcome-file-list>
您可以在welcomeAction
中定义要执行的所有逻辑。请注意以下几点
struts.xml
文件中的操作名称应与欢迎文件列表中的名称相同
不要忘记在webapp
文件夹中创建一个与欢迎操作名称同名的文件,因为这是一个让容器调用您操作的技巧
希望这能帮助你和其他有同样问题的人
`无法返回错误的问题是由于未指定的输入默认为空
字符串
,因此我不仅要检查是否有非空
,还要检查是否有空。我也会验证的,谢谢你的支持TRICK@user976095验证比手动检查更好,因为它没有像您这样的错误,并且是框架的一个组成部分;因此,我不仅要检查是否有空的,而且还要检查是否有空的。谢天谢地,事实上我就是这么做的。因为打字错误,第二个问题,它根本不起作用
<action name="welcome" class="welcomeAction">
<result>welcome.jsp</result>
</action>