`
happy90
  • 浏览: 62112 次
  • 性别: 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学习笔记.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如何与容器互动。本书还涵盖...

    韩顺平 2011细说Servlet笔记

    自Servlet 3.0起,引入了异步Servlet,使得Servlet可以在不阻塞线程的情况下处理请求,提高了服务器的并发性能。 10. **Web应用的部署与调试** 学习Servlet时,理解如何在Servlet容器中部署Web应用,以及如何利用...

    servlet学习笔记.doc

    Servlet是Java平台中用于开发Web...随着Java EE的不断演进,Servlet也不断发展,如Servlet 3.0引入了异步处理和注解配置等功能,进一步简化了开发过程。学习和理解Servlet是成为一名合格的Web开发者的关键技能之一。

    崔希凡JavaWeb笔记day28(JavaWeb完毕)

    #### 一、Servlet3.0之WebServlet注解 ##### 1. Servlet3.0简介与环境要求 - **Servlet3.0**:Servlet规范的最新版本之一,带来了诸多改进,其中最显著的变化是引入了注解支持,简化了Servlet的配置过程。 - **...

    韩顺平servlet笔记

    10. **Servlet 3.0及以上的特性**:包括注解式配置、异步处理、生命周期回调方法等,简化了Servlet的开发和管理。 通过学习“韩顺平servlet笔记”,开发者可以全面掌握Servlet的基础知识和高级技巧,提升在Web开发...

    Servlet学习笔记5

    ### Servlet学习笔记5 #### 一、Servlet与Filter的基本概念及使用 在Web开发中,Servlet作为Java EE标准的一部分,在处理HTTP请求时扮演着至关重要的角色。而在Servlet的应用过程中,Filter是一个非常重要的组件,...

    JSP&Servlet;学习笔记.epub

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

    SpringMvc笔记(第12次)1

    在本文中,我们将深入探讨Spring MVC中的异步请求处理,主要关注Servlet 3.0引入的异步处理机制以及Spring MVC如何利用这个特性。首先,理解同步和异步请求的区别至关重要。 8.1 同步处理是标准的HTTP请求响应模型...

    Servlet初学必备,精华笔记

    在本“Servlet初学必备,精华笔记”中,我们将深入探讨Servlet的基本概念、生命周期、部署与配置,以及常用API的使用。 1. **Servlet基本概念** Servlet是一个Java类,它遵循Servlet API规范,由Web服务器加载并...

    泛型DAO模型设计课堂笔记

    例如,Servlet3.0之前,我们会在web.xml中配置Servlet,而在Servlet3.0之后,可以直接在Servlet类上使用`@WebServlet`注解进行映射。 **六、Servlet3.0的新特性** 1. **Servlet3.0**相对于Servlet2.5增加了许多功能...

    cxf3.0 spirng 集成笔记

    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1 </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/* </...

    Sevlet学习笔记

    **Servlet学习笔记** Servlet是Java Web开发中的一个重要组成部分,它是一种服务器端的Java应用程序,用于扩展服务器的功能,处理客户端(通常是浏览器)发送的HTTP请求,并返回响应。在本笔记中,我们将深入理解...

    JavaWeb笔记

    本笔记集合了关于JavaWeb开发的关键知识点,涵盖了从基础到高级的主题,包括Eclipse开发工具的使用,JavaWeb开发入门,Servlet和JSP编程,以及进阶特性如监听器、过滤器、文件上传下载和Servlet3.0的新特性。...

    基于注解的spring_3.0.x_MVC学习笔记

    在本篇基于注解的Spring 3.0.x MVC学习笔记中,我们将深入探讨Spring MVC在3.0版本中的变化,以及如何通过注解实现快速开发。Spring 3.0.x相较于2.5版本有着显著的改进,尤其在MVC模块上,提供了更加灵活和强大的...

Global site tag (gtag.js) - Google Analytics