1. 程式人生 > >Eclipse中執行Servlet出現HTTP Status *** 的若干錯誤解決

Eclipse中執行Servlet出現HTTP Status *** 的若干錯誤解決

這兩天一直在調Eclipse中執行Servlet的簡單程式可是會出現若干種錯誤,網上查了好多,大家東拉西扯,可是多種解決辦法沒有一種適合我,經過一整天努力,終於解決了,現撰文分享,希望廣大罵農朋友受益。

首先想說我用的是Eclipse JAVA EE版本的平臺,至於MyEclipse的東東可能不適用。JDK版本是1.7的,tomcat版本是6.0的(這裡想強調下本身應該是Eclipse3.x、JDK1.6、tomcat6.0搭配或Eclipse4.x、JDK1.7、tomcat7.0搭配,但我當時稀裡糊塗安裝好了,之後用tomcat7.0代替6.0版本,執行Servlet會出現HTTP Status 500的錯誤,估計是Eclipse中外掛與tomcat 衝突的問題,因為關於WTP的外掛是下自於

http://blog.csdn.net/tiansong04該部落格的,其都是基於tomcat6.0版本。所以在這裡提醒廣大和我一樣的菜鳥盆友,版本搭配省去你找錯誤一半的時間,不要步我的後塵)。

先建Dynamic Web Project,其中建立3個檔案,A.jsp:

<h1>Hello World!</h1>
	<%
		String person="?";
	    String user=request.getParameter("user");
		if(user!=null) person=user;

	%>
	Welcome to WTP,<%= person%>
B.jsp:
<% 
		String error_message="";
		Object error=request.getAttribute("error");
		if(error!=null) error_message=error.toString();
	%>
	<form action="HelloServlet">
		<table cellspacing="4">
			<tr>
				<td>Enter your user name:</td>
				<td><input name="user" type="text" size="20"></td>
				<td style="color: red"><%= error_message %></td>
			</tr>
			<tr>
				<td></td>
				<td><input type="submit" value="Login"></td>
				<td></td>
			</tr>
		</table>
	</form>


HelloServlet.java(Servlet檔案)

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String url="/A.jsp";
		String user=request.getParameter("user");
		if(user==null||user.length()==0)
		{
			url="/B.jsp";
			request.setAttribute("error", "User name must not be empty.");
		}
		
		ServletContext context=getServletContext();
		RequestDispatcher dispatcher=context.getRequestDispatcher(url);//呼叫RequestDispatcher類的forward方法轉移到該URL上
		dispatcher.forward(request, response);
	}

具體實現其實就是頁面的傳值的判斷。右擊HelloServlet.java檔案,使用debug on server

首先出現的是HTTP status 404~: 

原因有可能1:你的HelloServlet檔案位置有問題,可以調整。2:你的tomcat設定問題重新從Eclipse中的window->Preference->server 使用remove操作,然後重建server。3:是我看到的一個方法而且暫時解決了問題:摘自http://blog.csdn.net/alexhan_bing/article/details/2457891

於是你需要做如下事情:

1. 修改Tomcat6.0/conf/context.xml檔案,新加兩個屬性.
<Context  reloadable="true" privileged="true"

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
2. 重啟Eclipse,此步非常重要,一定要做 做完後如果執行正常,那麼恭喜你,如果還出現HTTP Status404錯誤,請你看看你建立的Dynamic web project裡build/classes下是否生成了與Servlet同名的.class檔案,如果沒有,那麼你需要檢查下選單項中的project 是否設定了 build Automatically,設定後重新編譯就會生成.class.此時問題也就解決了。 結果圖:

最後,希望此貼對大家有幫助,如果有錯誤或遺漏還希望各位補充指正,為前來看貼著提供方便,少走彎路