在eclipse中使用tomcat上的servlet运行此登录应用程序时出现404错误。我从2天开始研究这个问题,但这个问题仍然存在。我只是无法弄清楚究竟是什么问题。我总是得到: -
HTTP状态404 - / GiftCardWebsiteLogin /登录
输入状态报告
message / GiftCardWebsiteLogin / Login
说明请求的资源不可用。
Apache Tomcat / 8.0.32
public class Login extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String email = request.getParameter("email");
String password = request.getParameter("pass");
Validate validate=new Validate();
if(validate.checkUser(email, password))
{
request.setAttribute("attributeName",email);
RequestDispatcher result = request.getRequestDispatcher("Welcome");
result.forward(request, response);
}
else
{
out.println("Username or Password incorrect");
RequestDispatcher result = request.getRequestDispatcher("index.html");
result.include(request, response);
}
}
}
html file
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>LOGIN</title>
</head>
<body>
<form method="post" action="Login">
Email ID:<input type="text" name="email" /><br/>
Password:<input type="password" name="pass" /><br/>
<input type="submit" value="Login" />
</form>
If you are a new user you can register here.<a href="register.html">Register</a>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>/Login</servlet-class>
</servlet>
<servlet>
<servlet-name>Welcome</servlet-name>
<servlet-class>Welcome</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Welcome</servlet-name>
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/Register</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
答案 0 :(得分:1)
在声明类时,您在web.xml文件中意外添加了斜杠:
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>/Login</servlet-class>
</servlet>
正确应该没有斜杠(/):
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
您还必须添加映射:
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
答案 1 :(得分:0)
您需要映射servlet-class
,其中已映射了URL-pattern
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
答案 2 :(得分:0)
根据您发布的内容,您尚未将URL模式映射到servlet类。您的应用程序基本上无法找到Login servlet。请查看有关servlet的Java文档:
https://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/configureservlet.html
在web.xml中,您需要为servlet映射创建一个条目并将其链接到servlet,例如:
// servlet:名称必须包含限定的包名称
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.package.name.servlets.LoginServlet</servlet-class>
</servlet>
//映射
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login/*</url-pattern>
</servlet-mapping>
上述声明将包含登录的所有URL映射到指定的servlet。
我希望这会帮助你!