找不到Java Apache Tomcat所需的资源

找不到Java Apache Tomcat所需的资源,java,eclipse,tomcat,http-status-code-404,Java,Eclipse,Tomcat,Http Status Code 404,我犯了一个错误,我不知道为什么。我有这个项目: 当我执行registro.html时,它工作得很好: 但是当我在代码中提交帖子时,我认为它没有到达Registro.java registro.html中的代码是: <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Registro</title>

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

当我执行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();
    }

}
包Ejer2;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入javax.servlet.http.HttpSession;
导入javax.servlet.*;
@抑制警告(“弃用”)
公共类Registro扩展HttpServlet实现SingleThreadModel{
私有静态最终长serialVersionUID=1L;
公共登记处(){
超级();
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
}
受保护的void doPost(HttpServletRequest-req,HttpServletResponse-res)引发ServletException,IOException{
HttpSession session=req.getSession(true);
Usuario miuser=(Usuario)session.getValue(session.getId());
if(miuser==null){
miuser=new Usuario(请求获取参数(“用户”)、请求获取参数(“密码”);
session.putValue(session.getId(),miuser);
}
res.setContentType(“文本/html”);
字符串user=req.getParameter(“用户”);
//字符串pass=req.getParameter(“pass”);
PrintWriter-toClient=res.getWriter();
toClient.println(“”);
toClient.println(“注册实现”);
toClient.println(“Usuario”+用户+“registerdo-exito”);
toClient.println(“”);
toClient.close();
}
}

问题出在哪里?

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

@WebServlet(urlPatterns="/Registro")
public class Registro extends HttpServlet implements SingleThreadModel{
   //Add your code here
}
<form action="/Registro" method="POST">
现在,使用上面配置的
urlPattern
作为
registro.html
中的
操作
,如下所示:

@WebServlet(urlPatterns="/Registro")
public class Registro extends HttpServlet implements SingleThreadModel{
   //Add your code here
}
<form action="/Registro" method="POST">


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

当你说servlet类时,你指的是什么文件?我的意思是你的
Registro
classOk,所以它说WebServlet无法解析为一个类型。你需要
javax.servlet api
jar版本3.0或更高版本,这可能是上下文的问题路径,那么您可以将html中的
操作更改为
/Ejer2/Registro
并重试吗?