2017-04-25 23 views
0

所以這是我的項目:404在Java項目的Apache Tomcat

enter image description here

其中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一切都如預期般:

enter image description here

但是,當我輸入用戶名和密碼,它不工作:

enter image description here4

看來,如果它不找到Registro.java。我試圖將action="/Ejer2/Registro"更改爲許多其他的東西,如/Registro或完整http://...,但仍然無法正常工作。

這是我的web.xml:

enter image description here

可以採取什麼問題嗎?

+1

顯示您的web.xml文件 –

+0

@MartinČuka完成,在問題 – 19mike95

+0

我需要查看您的web.xml的源代碼。從「設計」更改爲「來源」 –

回答

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

在你的表單動作改變url來匹配urlmapping。在你的情況下,它是
表單action =「/ Registro」...

Ejer2是與URL映射無關的包的名稱。希望它有助於解決您的問題