【问题标题】:Java Apache Tomcat Required resource not foundJava Apache Tomcat 所需资源未找到
【发布时间】:2017-09-21 14:25:36
【问题描述】:

我收到一个错误,我不知道为什么。我有这个项目:

当我执行 registro.html 时,它运行良好:

但是当我在代码中提交帖子时,我认为它没有到达 Registro.java

registro.html 中的代码是:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="ISO-8859-1">
        <title>Registro</title>
    </head>
    <body>
        <form action="http://localhost:8080/Ejer2/Registro.java" method="POST">
            <input type=hidden name=registro value=resultadoRegistro>
            <BR><BR>Username: <input type=text name=user>
            <BR><BR>Password: <input type=password name=pass>
            <BR><BR><input type=submit value="Enviar"><input type=reset>
        </form>
    </body>
</html>

在 Registro.java 中这个:

    package Ejer2;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.*;



@SuppressWarnings("deprecation")
public class Registro extends HttpServlet implements SingleThreadModel{
    private static final long serialVersionUID = 1L;



    public Registro() {
        super();

    }



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


    }


    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        HttpSession session=req.getSession(true);
        Usuario miuser=(Usuario)session.getValue(session.getId());
        if(miuser==null){
            miuser=new Usuario(req.getParameter("user"),req.getParameter("password"));
            session.putValue(session.getId(),miuser);
        }
        res.setContentType("text/html");

        String user=req.getParameter("user");
        //String pass = req.getParameter("pass");

        PrintWriter toClient = res.getWriter();
        toClient.println("<html>");
        toClient.println("<title>REGISTRO REALIZADO</title>");
        toClient.println("Usuario "+user+" registrado con exito");
        toClient.println("</html>");

        toClient.close();
    }

}

有什么问题?

【问题讨论】:

    标签: java eclipse tomcat http-status-code-404


    【解决方案1】:

    您不能像 Registro.java 这样直接在 html action 中使用或调用,而是需要为您的 Registro servlet 类映射 url 模式,如下所示:

    @WebServlet(urlPatterns="/Registro")
    public class Registro extends HttpServlet implements SingleThreadModel{
       //Add your code here
    }
    

    现在使用上面配置的urlPattern作为你registro.html中的action,如下所示:

    <form action="/Registro" method="POST">
    

    另外,另一个重要的一点是,对于一般的 servlet 类,您不需要 SingleThreadModel(因为所有请求都将使用相同的 servlet 实例提供服务),但如果您故意使用 SingleThreadModel你可以保持原样。

    【讨论】:

    • 当你说servlet类你指的是什么文件?
    • 我的意思是你的Registro
    • 好的,所以它说 WebServlet 不能被解析为一个类型。
    • 您需要javax.servlet-api jar 3.0 或更高版本
    • 可能是上下文路径的问题,能不能把html里的action改成/Ejer2/Registro试试?
    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多