所以这是我的项目:
Registro.java在哪里:
package Ejer2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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")
@WebServlet(urlPatterns="/Registro")
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();
}
}
registro.html是:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Registro</title>
</head>
<body>
<form action="/Ejer2/Registro" 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.html时,一切都按预期进行:
但是当我输入用户名和密码时,它不起作用:
好像它找不到Registro.java。我尝试将action="/Ejer2/Registro"
更改为许多其他内容,例如/Registro
或完整http://...
,但仍然无效。
这是我的web.xml:
可能是什么问题?
答案 0 :(得分:3)
我猜你在web.xml中缺少servlet映射。您需要在web.xml中注册您的servlet(打开web.xml文件,在底部的更改选项卡中查看实际的源代码而非设计者)添加以下代码,您应该很高兴
<servlet>
<servlet-name>RegistroServlet</servlet-name>
<servlet-class>Ejer2.Registro</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RegistroServlet</servlet-name>
<url-pattern>/Registro</url-pattern>
</servlet-mapping>
我还建议您在尝试编写Web应用程序之前退一步并开始使用基本java。你的代码有几个新手问题:
1)包装名称应以小写字母开头!
2)url映射也应该是这样的/ registro
在您的表单操作中更改网址以匹配urlmapping。在你的情况下,它是
form action =“/ Registro”...
Ejer2是与URL映射无关的包名称。希望它有助于解决您的问题