user1751981
user1751981

Reputation: 13

The resource required (servlet) not available

I have the following problem when trying to use the login.jsp I have the following code in the login

<%@ 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>

And the following text in the 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>

But once I click the button for submit it returns:

State HTTP 404 - /bt/jsp/ServletValidation

Description The resource required (/bt/jsp/ServletValidation) is not available.

The folder structure is the following:

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

The problem I'm finding is why is it sending to that URL

Upvotes: 1

Views: 142

Answers (3)

Luiggi Mendoza
Luiggi Mendoza

Reputation: 85809

There are two problems:

  • Your servlet maps to the URL /ValidationServlet and your form has the action set to ServletValidation.

  • Maybe your login.jsp isn't at the same level of your servlet mapping.

The best solution would be setting the action of your form to map the full URL that maps to your servlet. This can be achieved using Request#getContextPath():

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

If you don't use JSTL in your project, then do it. You should avoid scriptlets in your jsp (those <% ... %> tags that hold nasty Java code inside the JSP). But if you don't, then you should try the following:

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

Still, the first way is the best to go.

More info:

Upvotes: 1

Bhavik Shah
Bhavik Shah

Reputation: 5183

Just change the web.xml file

<url-pattern>/ServletValidation</url-pattern>

Upvotes: 1

joy
joy

Reputation: 327

ServletValidation is different from ValidationServlet.

Upvotes: 0

Related Questions