2015-08-31 154 views
0

所以我創建了新的maven模塊。我使用「maven-archetype-webapp」來創建它。當我在index.jsp中執行正常的文本時,它可以正常工作。但我也想做servlet。HTTP狀態404 - servlet jsp

我會馬上寫下我是如何製作它的。我點擊了我的Module和New-> Servlet。 Java包:pl.marek,類名:MyServlet,後來我選擇了「doPost」和「doGet」。這裏是我的文件,怎麼看起來像:

的index.jsp

<%@page import="java.util.Date"%> 
<%@page import="pl.marek.countriesmapper.reader.*" %> 
<%@page import="pl.marek.countriesmapper.preparer.*" %> 
<%@page import="pl.marek.countriesmapper.country.*" %> 
<%@ page language="java" contentType="text/html; charset=US-ASCII" 
    pageEncoding="US-ASCII"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> 
<title>Hello</title> 
</head> 
<body> 
<form action="MyServlet"> 
    Please enter your Username: <input type="text" name="username" size="20px"> <br> 
    Please enter your Password: <input type="text" name="password" size="20px"> <br><br> 
<input type="submit" value="submit"> 
</form> 
</body> 
</html> 

MyServlet.java

package pl.marek; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class MyServlet 
*/ 
public class MyServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public MyServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String username = request.getParameter("username"); 
     String password = request.getParameter("password"); 
     PrintWriter out = response.getWriter(); 
     out.println (
        "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" +" + 
         "http://www.w3.org/TR/html4/loose.dtd\">\n" + 
        "<html> \n" + 
        "<head> \n" + 
         "<meta http-equiv=\"Content-Type\" content=\"text/html; " + 
         "charset=ISO-8859-1\"> \n" + 
         "<title> Crunchify.com JSP Servlet Example </title> \n" + 
        "</head> \n" + 
        "<body> <div align='center'> \n" + 
         "<style= \"font-size=\"12px\" color='black'\"" + "\">" + 
         "Username: " + username + " <br> " + 
         "Password: " + password + 
        "</font></body> \n" + 
        "</html>" 
       );  
     } 
    } 
    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     doGet(request, response); 
    } 
} 

的web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
     <servlet-name>MyServlet</servlet-name> 
     <display-name>MyServlet</display-name> 
     <description></description> 
     <servlet-class>pl.marek.MyServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>MyServlet</servlet-name> 
     <url-pattern>MyServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

這裏是我的項目的照片:

enter image description here

,當我點擊提交我的地址:本地主機:8080/WebAplication/MyServlet用戶名= test123 &密碼= test321

但在網頁上我有:

HTTP Status 404 - 

type Status report 

message 

description The requested resource is not available. 
Apache Tomcat/7.0.47 

有人可能有想法我做錯了什麼? :/

@edit

我 「/」 在web.xml中,現在我有這樣的刪除:

HTTP Status 500 - Error instantiating servlet class pl.marek.MyServlet 

錯誤500解決了,但我仍然有404狀態:/

@ EDIT2

我做了什麼寫SaviNuclear和我還有404錯誤:/

@edit 3

問題解決。我不得不創建src/java而不是src/resources。

+0

'username = test123 $ password = test321' ?? ??那應該是'username = test123&password = test321'? –

+0

是的,我的錯誤,因爲我沒有複製它,但手動寫入:P –

+0

如果你訪問Servlet時沒有獲取參數,你是否也得到404? http:// localhost:8080/WebAplication/MyServlet – Alex

回答

0

在您的表單操作前置/以便它更改爲/ MyServlet。

+0

我現在改變了它,但仍然不起作用:/ –

0

在您的servlet中出現錯誤,請刪除行號44的結束括號},然後重新編譯您的servlet以獲得正確的輸出。 enter image description here