尝试使用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
我发现的问题是它为什么要发送到该网址
答案 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不同。