【问题标题】:@WebServlet on Tomcat 7 getting 404 ErrorTomcat 7 上的 @WebServlet 出现 404 错误
【发布时间】:2017-02-13 09:04:58
【问题描述】:

Tomcat 7 在 Windows 7 上运行,使用 servlet 注释,当我尝试这个 URL 时给我一个 404 错误: http://localhost:8080/LoginExample/ Tomcat 使用 JRE 1.7,servlet 类包含在文件夹 .../webapps/LoginExample 中。它是使用 Java 1.7 编译的。我没有 Web.xml。它部署没有错误。

这是课程:

package com.journaldev.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet(
        description = "Login Servlet", 
        urlPatterns = { "/LoginServlet" }, 
        initParams = { 
                @WebInitParam(name = "user", value = "Pankaj"), 
                @WebInitParam(name = "password", value = "journaldev")
        })
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    public void init() throws ServletException {
        //we can create DB connection resource here and set it to Servlet context
        if(getServletContext().getInitParameter("dbURL").equals("jdbc:mysql://localhost/mysql_db") &&
                getServletContext().getInitParameter("dbUser").equals("mysql_user") &&
                getServletContext().getInitParameter("dbUserPwd").equals("mysql_pwd"))
        getServletContext().setAttribute("DB_Success", "True");
        else throw new ServletException("DB Connection error");
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //get request parameters for userID and password
        String user = request.getParameter("user");
        String pwd = request.getParameter("pwd");

        //get servlet config init params
        String userID = getServletConfig().getInitParameter("user");
        String password = getServletConfig().getInitParameter("password");
        //logging example
        log("User="+user+"::password="+pwd);

        if(userID.equals(user) && password.equals(pwd)){
            response.sendRedirect("LoginSuccess.jsp");
        }else{
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/login.html");
            PrintWriter out= response.getWriter();
            out.println("<font color=red>Either user name or password is wrong.</font>");
            rd.include(request, response);

        }

    }

}

【问题讨论】:

    标签: servlets annotations tomcat7 http-status-code-404


    【解决方案1】:

    您的 servlet 类 LoginServlet 旨在仅处理 '/LoginServlet' url,而在 http://localhost:8080/LoginExample/ 中,您使用 '/' 作为 url。

    你必须使用http://localhost:8080/LoginExample/LoginServlet
    或者

    <form action="LoginServlet" method="post">
    ....
    ....
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-26
      • 2016-06-29
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 2014-08-24
      • 2016-05-01
      相关资源
      最近更新 更多