Struts 2示例不起作用

时间:2013-02-08 18:16:07

标签: html jsp struts2

我是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服务器。为什么会这样?

1 个答案:

答案 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>