2016-02-26 2 views
0

Я новичок в сервлете. Я пытаюсь вызвать сервлет, чтобы проверить имя пользователя и пароль. Но при исполнении 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> 

+1

Действительно ли ваш класс сервлета в стандартном пакете? – mlewandowski

+0

Да, его в папке src. – a874

+0

Следующий вопрос: что такое контекстное имя веб-приложения? Вы пытаетесь получить доступ по абсолютному пути

и, может быть, поэтому? Вы пытались получить доступ к своему сервлету, используя путь: localhost: 8080//RequestServlet? – mlewandowski

ответ

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 быть потокобезопасным.

Смежные вопросы