所需资源(servlet)不可用

时间:2012-10-17 04:44:25

标签: java jsp servlets

尝试使用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>

但是,一旦我点击提交按钮,它就会返回:

  

状态HTTP 404 - / bt / jsp / ServletValidation

     

描述所需的资源(/ bt / jsp / ServletValidation)不是   可用。

文件夹结构如下:

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

我发现的问题是它为什么要发送到该网址

3 个答案:

答案 0 :(得分:1)

有两个问题:

  • 您的servlet映射到网址/ValidationServlet,您的表单的操作设置为ServletValidation

  • 也许您的login.jsp与servlet映射的级别不同。

最好的解决方案是设置表单的操作以映射映射到servlet的完整URL。这可以使用Request#getContextPath()

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

如果您未在项目中使用JSTL,请执行此操作。你应该避免使用jsp中的scriptlet(那些在JSP中包含令人讨厌的Java代码的<% ... %>标记)。但如果你不这样做,那么你应该尝试以下方法:

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

不过,第一种方式是最好的方式。

更多信息:

答案 1 :(得分:1)

只需更改web.xml文件

即可
<url-pattern>/ServletValidation</url-pattern>

答案 2 :(得分:0)

ServletValidation与ValidationServlet不同。