0

我是struts2的新手。我正在尝试一个小的练习应用程序,但我遇到了一个问题。

我试图直接从 index.jsp 转发到login.jsp. 我知道我可以直接转发到 login.jsp 但下面的代码也应该是有效的。我附上了我正在尝试的代码。下面是我正在尝试的代码。

索引.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>

登录.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 服务器。为什么会这样?

4

1 回答 1

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>
于 2013-02-11T14:40:48.170 回答