0

私は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 サーバーとして使用しています。なぜこうなった?

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 に答える