【问题标题】:Getting error when calling a servlet [duplicate]调用 servlet 时出错 [重复]
【发布时间】:2016-06-09 16:58:25
【问题描述】:

我是 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>

【问题讨论】:

  • 你的 Servlet 类真的在默认包中吗?
  • 是的,它在 src 文件夹中。
  • 下一个问题:什么是 Web 应用程序上下文名称?您正在尝试通过绝对路径访问
    也许这就是为什么?您是否尝试使用以下路径访问您的 Servlet:localhost:8080//RequestServlet?
  • @javy,我已经试过了,还是报错“网页无法显示”
  • 发生了什么变化?首先是“请求的资源不可用”,现在是“无法显示网页”?

标签: servlets http-status-code-404


【解决方案1】:

尝试更改&lt;form action="/RequestServlet" method="GET"&gt;&lt;form action="RequestServlet" method="post"&gt; 我认为/RequestServletlocalhost:port/RequestServlet 替换,但需要localhost:port/context/RequestServlet(如果不部署在webapps/ROOT for Tomcat)

另外,如果使用@WebServlet("/RequestServlet"),那么在web.xml 中做同样的事情是重复的。或者注解或者web.xml。

并将PrintWriter out 放在service 中以保证线程安全。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2015-12-31
    • 1970-01-01
    • 2011-07-24
    • 2021-06-29
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多