为了账号安全,请及时绑定邮箱和手机立即绑定

使用myeslipse2015CI 创建servlet,浏览器访问servlet,页面是空白的?

使用myeslipse2015CI 创建servlet,浏览器访问servlet,页面是空白的?

Developer_Huang 2017-08-14 10:17:12
这是jsp页面代码   <body>     <h1>第一个myeclipse servlet程序</h1>          <!--用get方式(表单没有指定method,或者正常的URL,请求都是get方式),请求一个servlet   -->     <a href="servlet/HelloServlet">get方式请求HelloServlet </a>          <%--post请求,写一个表单,指定method=post --%>     <form action="servlet/HelloServlet" method="post">     <input type="submit" value="post请求servlet" />     </form>   </body>      以下是servlet代码   package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletConfig; 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("/servlet/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#init(ServletConfig)  */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method 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 { // TODO Auto-generated method stub System.out.println("doGet处理get请求 ");// 这是后台显示的 PrintWriter pw = response.getWriter(); response.setContentType("text/html;charset=utf-8"); pw.println("<strong>helloServelt</strong>"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("dopost处理post请求 ");// 这是后台显示的 PrintWriter pw = response.getWriter(); response.setContentType("text/html;charset=utf-8"); pw.println("<strong>helloServelt</strong>"); } }网上看到说是servlet 3.0的新特性,不使用xml注解,也是可以的,但是我的却是空白页面?这是为何?
查看完整描述

2 回答

已采纳
?
时间啊

TA贡献17条经验 获得超21个赞

你重写了service()方法。

在 HttpServlet 中已存在 service()方法.缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。
例如,如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet()。

service方法是接口中的方法,servlet容器把所有请求发送到该方法,该方法默认行为是转发http请求到doXXX方法中,如果你重载了该方法,默认操作被覆盖,不再进行转发操作! 
service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet中实现了这个接口, 而 doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的, javax.servlet.http.HttpServlet 是javax.servlet.GenericServlet 的子类.

Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能.因为HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。


查看完整回答
1 反对 回复 2017-08-14
  • Developer_Huang
    Developer_Huang
    谢谢你,我只保留了doGet( )和doPost(),其他的方法我删除了,页面就能出来了
  • 2 回答
  • 1 关注
  • 2285 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信