这两天一直在调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
如果你是按上述第3种取消注释的方法执行,你可能会出现如下错误报错“Server Tomcat v6.0 Server at localhost failed to start.”
于是你需要做如下事情:
<Context reloadable="true" privileged="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
最后,希望此贴对大家有帮助,如果有错误或遗漏还希望各位补充指正,为前来看贴着提供方便,少走弯路