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:

Hello World!

<% 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();
	%>
	
Enter your user name: <%= error_message %>


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

如果你是按上述第3种取消注释的方法执行,你可能会出现如下错误报错“Server Tomcat v6.0 Server at localhost failed to start.”

于是你需要做如下事情:

1. 修改Tomcat6.0/conf/context.xml文件,新加两个属性.
reloadable="true" privileged="true"
   
    WEB-INF/web.xml
2. 重启Eclipse,此步非常重要,一定要做
做完后如果运行正常,那么恭喜你,如果还出现HTTP Status404错误,请你看看你创建的Dynamic web project里build/classes下是否生成了与Servlet同名的.class文件,如果没有,那么你需要 检查下菜单项中的project 是否设置了 build Automatically,设置后重新编译就会生成.class.此时问题也就解决了。
结果图:

 

最后,希望此贴对大家有帮助,如果有错误或遗漏还希望各位补充指正,为前来看贴着提供方便,少走弯路

你可能感兴趣的:(JAVA)