我是struts2的新手。我正在尝试一个小型的练习应用程序,但我遇到了一个问题。
我试图直接从index.jsp转发到login.jsp
。我知道我可以直接转发到login.jsp,但下面的代码也应该是有效的。我附上了我正在尝试的代码。
下面是我尝试的代码。
的index.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home</title>
</head>
<body>
<jsp:forward page="login.action" />
</body>
</html>
struts.xml中
<struts>
<include file="example.xml"/>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
<action name="login">
<result>/login.jsp</result>
</action>
</package>
</struts>
的login.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<s:form>
<s:textfield name="user" label="User Name" />
<s:password name="passwd" label="Password" />
</s:form>
</body>
</html>
在web.xml中,index.php页面设置为欢迎页面。假设XYZ是上下文名称,当我将/XYZ/login
的内容放入登录页面时,但是当我将/XYZ/
放入浏览器时,它给出了资源未找到错误。
当我再次使用<META HTTP-EQUIV="Refresh" CONTENT="0;URL=login.action">
时,它可以正常工作。
我使用tomcat7作为Web服务器。为什么会这样?
答案 0 :(得分:1)
默认情况下,并非所有容器都向非JSP资源执行FORWARD - <jsp:forward/>
- 要说容器要执行此操作,请将以下映射添加到web.xml:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>