我是servlet的新手。我正在尝试调用Servlet来验证用户名和密码。 但是当执行时,tomcat会给出错误“请求的资源不可用”
以下是代码。
RequestServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RequestServlet
*/
@WebServlet("/RequestServlet")
public class RequestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
PrintWriter out;
/**
* @see HttpServlet#HttpServlet()
*/
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
{
((ServletResponse) res).setContentType("text/html");
out=((ServletResponse) res).getWriter();
out.println("<html><body>");
out.println(req.getMethod());
String name=req.getParameter("name");
String pass=req.getParameter("pass");
if(name.equals("asad")&&pass.equals("123"))
out.println("user is valid");
else
out.println("not valid");
out.println("</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" id="WebApp_ID" version="3.0">
<display-name>Learnserv</display-name>
<servlet>
<servlet-name>RequestServlet</servlet-name>
<servlet-class>RequestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RequestServlet</servlet-name>
<url-pattern>/RequestServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>asd.html</welcome-file>
</welcome-file-list>
</web-app>
asd.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="/RequestServlet" method="GET">
<input type="text" name="name">
<input type="password" name="pass">
<input type="submit" value="ok">
</form>
</body>
答案 0 :(得分:1)
尝试更改<form action="/RequestServlet" method="GET">
到<form action="RequestServlet" method="post">
我认为/RequestServlet
已替换为localhost:port/RequestServlet
但需要localhost:port/context/RequestServlet
(如果不在webapps / ROOT上部署为Tomcat)
此外,如果使用@WebServlet("/RequestServlet")
,那么在web.xml
中执行相同的操作也是相同的。或者注释或web.xml。
将PrintWriter out
置于service
内以保证线程安全。