HttpServlet 如何调试?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServlet 如何调试?相关的知识,希望对你有一定的参考价值。

如题
最好的调试,就是用log来记录信息
目前还没有发现有调试的办法

参考技术A 如果你用的是eclipse,装一个tomcat插件,打个断点,运行你的程序后,就可以进行调试了 参考技术B ...楼主 你的问题问的很迷茫 那我随意答答
我不知道你指在那调试...只能猜测
按我理解 你可以 在Servlet那个类里 debug做调试...
参考技术C http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/index.html本回答被提问者采纳 参考技术D 你想怎么调试?

HttpServlet 类和使用 Jersey 之间的混淆

【中文标题】HttpServlet 类和使用 Jersey 之间的混淆【英文标题】:Confusion between HttpServlet class and using it with Jersey 【发布时间】:2013-07-16 19:55:43 【问题描述】:

我正在构建实现​​ RESTful API 的 servlet。我了解 Jersey 是一个用于破译和使用给定 URL 的框架。如何将它与HttpServlet 类结合使用。

我不明白这两者是如何相互合作的。我想这是一个非常笼统的问题,但我已经阅读了相当多的内容,但仍然坚持这个看似微不足道的概念。我尝试使用扩展 HttpServletclass 并使用 Jersey 注释的类来部署应用程序。

@Path("/api")
public class API extends HttpServlet

@GET
@Path("/name")
@Produces("text/hmtl")
public String doGetSayHello(@PathParam("name") String name)
    return "Hello" + name;

@GET
@Path("/articles")
@Produces("text/json")
public String doGetArticles(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException


    JSONObject obj = new JSONObject();
    obj.put("interns", interns);
    obj.put("company", "Stack Overflow");

    return obj.toString();


任何帮助或信息材料将不胜感激!

【问题讨论】:

【参考方案1】:

其实你很困惑,因为你不了解球衣的工作原理。 Jersey 框架基本上使用com.sun.jersey.spi.container.servlet.ServletContainer servlet 来拦截所有传入的请求。正如我们在项目 web.xml 中配置的那样,所有传入的休息请求都应由该 servlet 处理。有一个使用 jersey servlet 配置的 init-param 来查找您的 REST 服务类。 REST 服务类不是 Servlet,它们不需要像您在代码中那样扩展 HttpServlet。这些 REST 服务类是简单的 POJO,经过注释告诉 jersey 框架不同的属性,例如路径、消费、生产等。当您从服务方法返回时,jersey 负责将这些对象编组到定义的“PRODUCES”responseType 中并编写它在客户端流上。这是 web.xml 中的球衣配置示例

<servlet>
        <servlet-name>REST</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>
                com.rest.services;
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>REST</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

【讨论】:

REST 服务类不是 Servlet 是什么意思? 在使用 jersey 时,您编写的是简单的 java 类而不是 servlet,这些类只需要为 jersey 框架进行注释,以将您的类中的方法公开为 REST 服务。【参考方案2】:

Jersey 使用 servlet 将 URL 路由到相应的服务。您的服务本身不需要扩展 servlet。

在高层次上,Jersey 的ServletContainer 类接受请求,然后根据您的 Jersey 配置调用您的 Web 服务。您配置 Jersey 处理哪些 url 模式。查看section 5.3 http://www.vogella.com/articles/REST/。

【讨论】:

那么 HttpServlet 类的目的到底是什么? servlet 类是处理 Web 请求的类。在 Jersey 的案例中,他们编写了一个扩展 HttpServlet 的类 ServletContainer。它的实现是调用适当的 Web 服务。如果您想直接处理 http 请求,您可以编写自己的 servlet (mkyong.com/servlet/a-simple-servlet-example-write-deploy-run)。许多 Web 框架(包括 Jersey)使用所谓的 Front Controller 模式——它是一个 servlet,传入请求并将它们路由到适当的位置。您必须编写的样板代码更少。 啊,好的,非常感谢!这真的很清楚。一直以来,我都以为我在尝试编写自己的 servlet,试图以某种方式将 Jersey 与它集成。

以上是关于HttpServlet 如何调试?的主要内容,如果未能解决你的问题,请参考以下文章

Session

寒假第十天

案例:Java 简单写一个验证码

java微信公众号开发,token验证

简述Servlet的基本概念

如何从 HttpServlet 关闭 HTTP 连接