2016-10-19 64 views
1

我已經嘗試了一切,以獲得此servlet的工作,並且在下載了幾個較老的JRE和幾個舊版本的Apache Tomcat後,它仍然無法工作。現在我正在使用Kepler for Java EE與JRE v1.7和Tomcat v7。下面是我的java源代碼和html - 我懷疑問題在於doGet方法本身,因爲我認爲我有正確命名的文件路徑,但我仍然返回空白頁。儘管這個問題可能與表單動作有關 - 我對eclipse完全陌生。當你點擊提交按鈕時,在hello world java servlet中返回一個空白頁面

<!DOCTYPE html> 
    <html> 
     <head> <meta charset="ISO-8859-1"> 
      <title>Insert title here</title> 
     </head> 
    <body> 
     <form action="/HelloWorld/HelloServlet" method="get"> 
      <input type="submit" value="go to hello servlet"/> 
     </form> 
    </body> 
    </html>` 

HelloServaled.java

package com.tutorials.servlets; 

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; 

/** 
* Servlet implementation class HelloServlet 
*/ 
@WebServlet("/HelloServlet") 
public class HelloServlet extends HttpServlet { 


    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public HelloServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    /* @see Servlet#destroy() 
    */ 
    public void destroy() { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#service(HttpServletRequest request,                           >  HttpServletResponse response) 
    */ 
    protected void service(HttpServletRequest request, HttpServletResponse >  response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request,       >  HttpServletResponse response) 
    */ 

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


      PrintWriter out = response.getWriter(); 
      out.println("I am in go get mehtod"); 

     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request,           >  HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse    >  response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse) 
    */ 
    protected void doPut(HttpServletRequest request, HttpServletResponse     >  response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 
+0

替換此 <形式行動= 「/的HelloWorld/HelloServlet」 方法= 「GET」> 與 <形式行動=」/HelloServlet「method =」get「> 即從表單動作標記中移除HelloWorld。 – Abhishekkumar

回答

0

你的主要問題在於你的窗體的action屬性比你的servlet的不同映射之間的不匹配。

您的註釋:(@WebServlet("/HelloServlet"))告訴應用程序服務器偵聽對「/ HelloServlet」的請求,例如:http://eample.com/HelloServlet它是哪個。

您的形式,在另一方面,有它的操作設置爲/HelloWorld/HelloServlet,這意味着後請求轉到http://example.com/HelloWorld/HelloServlet

所以,當你的瀏覽器的帖子出現,應用程序處理它應該如何,它不,因爲你的servlet沒有在那裏聽任何東西。