调用 servlet 时出错
Getting error when calling a servlet
我是 servlet.I 的新手,我正在尝试调用 Servlet 来验证用户名和密码。
但是执行的时候,tomcat报错"The requested resource is not available"
代码如下
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>
尝试改变<form action="/RequestServlet" method="GET">
至 <form action="RequestServlet" method="post">
我认为 /RequestServlet
已被 localhost:port/RequestServlet
取代,但需要 localhost:port/context/RequestServlet
(如果不为 Tomcat 在 webapps/ROOT 部署)
另外,如果使用 @WebServlet("/RequestServlet")
那么在 web.xml
中做同样的事情是重复的。或注解或web.xml.
并将 PrintWriter out
放在 service
内以确保线程安全。
我是 servlet.I 的新手,我正在尝试调用 Servlet 来验证用户名和密码。 但是执行的时候,tomcat报错"The requested resource is not available"
代码如下
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>
尝试改变<form action="/RequestServlet" method="GET">
至 <form action="RequestServlet" method="post">
我认为 /RequestServlet
已被 localhost:port/RequestServlet
取代,但需要 localhost:port/context/RequestServlet
(如果不为 Tomcat 在 webapps/ROOT 部署)
另外,如果使用 @WebServlet("/RequestServlet")
那么在 web.xml
中做同样的事情是重复的。或注解或web.xml.
并将 PrintWriter out
放在 service
内以确保线程安全。