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的外掛是下自於
先建Dynamic Web Project,其中建立3個檔案,A.jsp:
B.jsp:<h1>Hello World!</h1> <% String person="?"; String user=request.getParameter("user"); if(user!=null) person=user; %> Welcome to WTP,<%= person%>
<% 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.此時問題也就解決了。 結果圖:
最後,希望此貼對大家有幫助,如果有錯誤或遺漏還希望各位補充指正,為前來看貼著提供方便,少走彎路