`
jinvasshole
  • 浏览: 772910 次
文章分类
社区版块
存档分类
最新评论

Servlet容器响应客户端请求访问特定的Servlet流程

 
阅读更多

Servlet容器响应客户端请求访问特定的Servlet流程如下:
1.客户端发出要求访问特定的Servlet的请求
2.Servlet容器接收到客户请求,对其解析
3.Servlet容器创建一个ServletRequest对象,在ServletRequest对象中包含客户请求信息及其它关于客户的信息,如:请求头,请求正文,以及客户机的ip地址等
4.Servlet容器创建一个ServletResponse对象
5.Servlet容器调用客户所请求的Servlet的Service()服务方法,并把ServletRequest对象和ServletResponse对象作为参数传递组该服务方法
6.Servlet从ServletRequest对象中获取客户的请求信息
7.Servlet利用ServletResponse对象来生成响应结果
8.Servlet容器把Servlet生成的响应结果发送给客户。

HTTP请求格式
http请求由3部分组成
1.请求方法(post,get),URL,和HTTP协议版本
2.请求头(Request Header)
3.请求正文(Request Content)

HTTP请求的第一行就包含(1)部分中间以空格分开,从第二行开始为请求头包含许多有关客户端环境和请求正文的有用信息。如,请求头中可以声明浏览器类型,所用的语言,请求正文类型,以及请求正文的长度。HTTP协议规定请求正文和请求头之间必须以空行分开(CRLF回车换行符\r\n)请求正文中可以包含客户以post方式提交的表单数据而以get方式提交的表单数据会在(1)部分的URL后以?name=value&name=value方式传递


HTTP响应格式
http响应格式与请求相同也由3部分组成
1.HTTP协议的版本,状态码,和描述
2.响应头(Response Header)
3.响应正文(Response Content)

HTTP响应的第一行就包含(1)部分,响应头部分包含服务器类型,正文类型和正文长度,响应头与响应正文之间也必须以空行(CRLF)隔开


示例访问http://localhost:8080/helloapp/dispatcher
1.要访问servlet必须在web.xml中配置如下:

<servlet>
<servlet-name>dispatcher</servlet-name>(3)
<servlet-class>mypackage.Dispatcher</servlet-class>(4)
</servlet>

<servlet-mapping>
<servlet-name>dispathcer</servlet-name>(2)
<url-pattern>/dispatcher</url-pattern>(1)
</servlet-mapping>

2.流程如下:
web应用程序发布时tomcat容器在加载web应用时就会把对应的web.xml文件中的数据读入到内存中,通过从servletRequest中得到用户的请求/dispatcher此时tomcat容器就会从内存中遍历所有的<servlet-mapping>中的<url-pattern>找到与请求对应的url。此时找到(1)通过(1)找到处理这个请求的servlet-name(2),接着在<servlet>标签中查找对应(2)部分的servlet-name即(3)部分,通过(3)找到对应处理的源文件所在位置即(4)部分,根据(4)部分<servlet-class>通过反射调用WEB-INF/classes文件夹中对应的class源文件处理用户请求,通过ServletResponse生成响应结果,最后由servlet容器将结果返回给用户。


分享到:
评论

相关推荐

    Java Web应用开发:servlet.ppt

    知道什么是Servlet,理解Servlet的作用 理解Servlet的生命周期 会通过继承HTTPServlet类的方式创建自己的Servlet类 知道如何访问servlet 理解web.xml中关于Servlet的配置 知道如何在servlet中取得客户端的请求参数,...

    java-servlet-api.doc

    Servlet依照Servlet引擎的映射来响应客户端的请求。一个映射对包括一个Servlet实例以及一个Servlet返回数据的URL,例如:HelloServletwith/hello/index.html。 然而,一个映射可能是由一个URL和许多Servlet实例组成...

    J2EE中文版指南 CHM格式 带全文检索

    5.定义客户端访问接口 47 远程访问 47 本地接口 48 Local接口和CMR(Container-Managed RelationShips) 49 两种访问方式的抉择 49 性能和访问方式 50 方法参数和访问方式 50 数据访问粒度 50 6,企业Bean的“内容...

    ssh(structs,spring,hibernate)框架中的上传下载

    具体的调用是将Web层将response.getOutputStream()传给write(OutputStream os,String fileId)接口,业务层直接将文件数据输出到这个响应流中。具体实现请参见错误!未找到引用源。节下载文件部分。  2、业务层接口...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    Java并发编程(学习笔记).xmind

    (3)简化异步事件的处理:服务器应用程序在接受来自多个远程客户端的请求时,如果为每个连接都分配一个线程并且使用同步IO,就会降低开发难度 (4)用户界面具备更短的响应时间:现代GUI框架中大都使用一个...

    超级有影响力霸气的Java面试题大全文档

     Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    java面试题

    它通过多线程方式允许其service方法,一个实例可以服务于多个请求,并且其实例一般不会被销毁,而CGI对每个请求都产生新的进程,服务完后就销毁,所以效率上低于Servlet。 面向对象的特征? 答:1:封装:通过定义类...

    疯狂Android讲义源码

     10.2.4 客户端访问AIDLService 385  10.3 电话管理器  (TelephonyManager) 393  10.4 短信管理器(SmsManager) 400  10.5 音频管理器  (AudioManager) 404  10.5.1 AudioManager简介 404  10.6 振动器...

    疯狂Android讲义.part1

    10.2.4 客户端访问AIDLService 385 10.3 电话管理器 (TelephonyManager) 393 10.4 短信管理器(SmsManager) 400 10.5 音频管理器 (AudioManager) 404 10.5.1 AudioManager简介 404 10.6 振动器(Vibrator) 407...

    JAVA面试题最全集

    在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。 4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6....

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。 第四章 系统设计 4.1开发框架技术介绍 对于框架技术,我们采用Struts+ajax的整合! Struts是应用...

    Wicket 8.X开发文档(中文翻译+英文原版)

    请求和响应类 9.3。请求处理的“主管” - RequestCycle 9.4。会话类 9.5。异常处理 9.6。摘要 10. Wicket链接和URL生成 10.1。PageParameters 10.2。可收藏的链接 10.3。使用标记wicket自动创建可收藏的链接:链接 ...

    java开源包1

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java开源包11

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包2

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java开源包3

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

Global site tag (gtag.js) - Google Analytics