`
happy90
  • 浏览: 61441 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

Servlet3.0 笔记

阅读更多

在这里把我学习servlet3.0遇到的一些问题记录下来,希望大虾们给点意见,呵呵

 

1. Servlet3.0中的AsyncContext对象设置监听器后,如果新来的长连接把之前的那个顶掉了,应该调用之前那个AsyncContext的complete()方法,这样之前那个监听器的onTimeout()方法才不会执行,否则会多次执行onTimeout()方法。

 

2.Servlet3.0中,给AsyncContext对象设置监听器后超时,超时时间没到,然后用AsyncContext.getResponse().getOutputStream()这个流往客户端写数据,那么之前设置的那个监听器对应的超时时间过了之后,还是会会执行的??

 

3.Servlet3.0中服务器会保存客户端请求的Context对象,需要返回数据会调用getResponse()方法,从response对象获得往客户端写数据的通道,此时客户端和服务器相当于建立了一个通道,代码如下:

 

服务器:

ServletResponse response1 = ccc1.getResponse();

 

  PrintWriter pw1 = response1.getWriter();

        System.out.println(pw1.checkError());

        pw1.println("aaaaa");

        pw1.flush();

 

注意服务器调用的是flush方法,不是close方法。

 

客户端:

 

public static void main(String[] args)

    {

        // 构造HttpClient的实例

        HttpClient httpClient = new HttpClient();

        // 创建GET方法的实例

        GetMethod getMethod = new GetMethod(

                "http://127.0.0.1:8888/moliao/servletTest");

        // 使用系统提供的默认的恢复策略

        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,

                new DefaultHttpMethodRetryHandler());

        try

        {

            // 执行getMethod

            int statusCode = httpClient.executeMethod(getMethod);

 

            if (statusCode != HttpStatus.SC_OK)

            {

                System.err.println("Method failed: "

                        + getMethod.getStatusLine());

            }

            // //读取内容

            // byte[] responseBody = getMethod.getResponseBody();

            InputStream is = getMethod.getResponseBodyAsStream();

 

            InputStreamReader isr = new InputStreamReader(is, "utf-8");

 

            BufferedReader br = new BufferedReader(isr);

 

            String line = br.readLine();

 

            while (line != null)

            {

                System.out.println(line);

                line = br.readLine();

            }

            System.out.println("line == null");

        }

        catch (HttpException e)

        {

            // 发生致命的异常,可能是协议不对或者返回的内容有问题

            System.out.println("Please check your provided http address!");

            e.printStackTrace();

        }

        catch (IOException e)

        {

            // 发生网络异常

            e.printStackTrace();

        }

        finally

        {

            // 释放连接

            getMethod.releaseConnection();

        }

    }

 

虽然这样的话,服务器和客户端的交流用一个通道就搞定了,避免了多次请求的麻烦。但是我还没搞明白,如果由于网络的原因,这个通道断了,该肿么办?

0
1
分享到:
评论

相关推荐

    JSP_Servlet学习笔记(第2版).pdf

    《JSP & Servlet学习笔记(第2版)》针对Servlet 3.0的新功能全面改版,无论章节架构还是范例程序代码,都做了全面更新,是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上...

    JSP_Servlet学习笔记(第2版)

    本书针对Servlet3.0的新功能全面改版,无论章节架构还是范例程序代码,都做了全面更新。书中详细介绍了Servlet/JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/JSP如何与容器互动。本书还涵盖了...

    JSP & Servlet学习笔记

    , 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖...

    JSP&Servlet学习笔记.pdf

     本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖...

    JSP & Servlet学习笔记(第2版)

    本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖了...

    JSP&Servlet;学习笔记

    本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖了...

    JSP&Servlet;学习笔记.epub

    本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖了...

    JavaWeb笔记

    该文件包含有对JAVA和Web的相关指导讲解,包括Eclipse的用法,JavaWeb开发基础,Servlet编程,JSP编程,监听器,过滤器,文件上传下载,Servlet3.0特性等。

    servlet-api.jar

    在使用@Webservlet时,不起作用,是因为缺省了jar包,Tomcat里面的servlet-api-3.0.jar

    林信良 笔记全集 struts hibernate spring ajax ibtatis

    struts hibernate spring ajax ibtatis java jsp/servlet ejb3.0 jsf junit 设计模式 等 非常不错,

    编程狂人第十二期

    Java IO vs NIO vs AIO vs 协议Servlet 3.0 以及NIO的框架 Integer.valueOf(String) 方法之惑 在运行期通过反射了解JVM内部机制 程序设计 Objective-C相关Category的收集 文章: 豆瓣 CODE 两年历程回顾:git 不是...

    springboot学习思维笔记.xmind

    Servlet3.0+异步方法处理 Spring MVC的测试 MockMVC MockHttpServlerRequest MockHttpServletResponse MockHttpSession SpringBoot基础 SpringBoot概述 什么是SpringBoot SpringBoot核心...

    Java/JavaEE 学习笔记

    Servlet学习笔记..............212 Servlet前言.............212 第一章 Servlet Basic ........................214 第二章 Form表单.219 第三章 Servlets生命周期................222 第四章 资源访问 ..............

    J2EE学习笔记(J2ee初学者必备手册)

    Servlet学习笔记..............212 Servlet前言.............212 第一章 Servlet Basic ........................214 第二章 Form表单.219 第三章 Servlets生命周期................222 第四章 资源访问 ..............

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....

    Java优化编程(第2版)

    8.2.5 ejb 3.0规范中的ejb 8.3 优化无状态会话ejb性能 8.3.1 如何控制无状态会话ejb的生命周期 8.3.2 通过调节无状态会话ejb实例池的大小来优化系统性能 8.3.3 无状态会话ejb资源的缓冲与释放 8.4 优化有状态会话ejb...

    Java Web程序员开发手册(全)

    CSS完全参考手册3.0 ApacheMenu_zh_CN DIV+CSS(WEB标准) hibernate学习笔记 java web 标签大全 JavaScript 中文版 JDK_API_1_6_zh_CN jquery 1.7 中文 api 修正版 Jsp_sevlet中文API jsdom Oracle九阴真经 Servlet ...

Global site tag (gtag.js) - Google Analytics