1

login.jsp ログイン時に次のコードを使用しようとすると、次の問題が発生します

<%@ include file="/jsp/include.jsp"%>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
    function sendForm() {
        document.formLogin.submit();
    }
</script>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Example :: Spring Application</title>
</head>
<body>

    <div class="container">
        <form class="bs-docs-example form-horizontal"
            action="ServletValidation" name="formLogin" id="formLogin"
            method="post">

            <legend>Login</legend>
            <div class="control-group">
                <label for="inputUsername" class="control-label">Email</label>

                <div class="controls">
                    <input type="text" id="inputUsername">
                </div>
            </div>
            <div class="control-group">
                <label for="inputPassword" class="control-label">Password</label>
                <div class="controls">
                    <input type="password" id="inputPassword">
                </div>
            </div>
            <div class="control-group">
                <div class="controls">
                    <label class="checkbox"> <input type="checkbox">
                        Remember me
                    </label>
                    <button class="btn" type="submit" action="sendForm();">Sign
                        in</button>
                </div>
            </div>
        </form>
    </div>

</body>
</html>

そして、次のテキストはweb.xml

  <servlet>
    <description></description>
    <display-name>ValidationServlet</display-name>
    <servlet-name>ValidationServlet</servlet-name>
    <servlet-class>bt.servlet.ValidationServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ValidationServlet</servlet-name>
    <url-pattern>/ValidationServlet</url-pattern>
  </servlet-mapping>

しかし、送信ボタンをクリックすると、次のように戻ります。

状態HTTP404-/bt / jsp / ServletValidation

説明必要なリソース(/ bt / jsp / ServletValidation)が利用できません。

フォルダ構造は次のとおりです。

+bt
    -src
    -WebContent
         -jsp
         -resources
         -WEB-INF
            -classes
            *web.xml
         *index.jsp

私が見つけた問題は、なぜそれがそのURLに送信されるのかということです

4

3 に答える 3

1

2つの問題があります:

  • サーブレットはURL/ValidationServletにマップされ、フォームのアクションはに設定されていServletValidationます。

  • サーブレットlogin.jspマッピングと同じレベルではない可能性があります。

最善の解決策は、サーブレットにマップする完全なURLをマップするようにフォームのアクションを設定することです。これは、以下を使用して実現できますRequest#getContextPath()

<form action="${request.contextPath}/ValidationServlet" ...>
    <!-- content... -->
</form>

プロジェクトでJSTLを使用しない場合は、使用してください。<% ... %>jsp( JSP内に厄介なJavaコードを保持するタグ)のスクリプトレットは避けてください。ただし、そうでない場合は、次のことを試してください。

<form action="<%=request.getContextPath()%>/ValidationServlet" ...>
    <!-- content... -->
</form>

それでも、最初の方法が最善です。

より詳しい情報:

于 2012-10-17T04:50:07.433 に答える
1

web.xmlファイルを変更するだけです

<url-pattern>/ServletValidation</url-pattern>
于 2012-10-17T04:52:48.447 に答える
0

ServletValidationはValidationServletとは異なります。

于 2012-10-17T04:49:33.327 に答える