MyException - 我的异常网
当前位置:我的异常网» 软件架构设计 » 相干servlet

相干servlet

www.MyException.Cn  网友分享于:2015-08-26  浏览:1次
相关servlet
Servlet 是个特殊的Java 类,这个Java 类必须继承HttpServlet 。每个Servlet 可以响应客户端的请求。Servlet 提供不同的方法用于响应客户端请求。
• doGet: 用于响应客户端的get 请求。
• doPost: 用于响应客户端的post 请求。
• doPut: 用于响应客户端的put 请求。
• doDelete: 用于响应客户端的delete 请求。
事实上,客户端的请求通常只有get 和post 两种; Servlet 为了响应这两种请求,必须重写doGet 和doPost 两个方法。如果Servlet 为了响应四个方法,则需要同时重写上面的四个方法。
大部分时候, Servlet 对于所有请求的响应都是完全一样的。此时,可以采用重写一个方法来代替上面的几个方法, Servlet 只需重写service 方法即可响应客户端的所有请求。
另外, HttpServlet 还包含两个方法。
• init(ServletConfig config): 创建Servlet 实例时,调用的初始化方法。
• destroy(): 销毁Servlet 实例时,自动调用的资源回收方法。
通常无须重写init()和destroy()两个方法,除非需要在初始化Servlet 时,完成某些资源初始化的方法,才考虑重写init 方法。如果需要在销毁Servlet 之前,先完成某些资源的回收,比如关闭数据库连接等,才需要重写destroy 方法。
注意:如果重写了init(ServletConfig config)方法,则应在重写该方法的第一行调用super.init(config) 。该方法将调用HttpServlet 的init 方法。
Servlet 和JSP 的区别在于:
• Servlet 中没有内置对象,原来JSP 中的内置对象都必须通过HttpServletRequest对象,或由HttpServletResponse 对象生成;
• 对于静态的HTML 标签, Servlet 都必须使用页面输出流逐行输出。
JSP 是Servlet 的一种简化,使用JSP 只需要完成程序员需要输出到客户端的内容,至于JSP 中的Java 脚本如何镶嵌到一个类中,由JSP 容器完成。而Servlet 则是个完整的Java 类,这个类的service 方法用于生成对客户端的响应。

编辑好的Servlet 源文件并不能响应用户请求,还必须将其编译成class 文件。将编译后的FirstServlet. class 文件放在WEB-INF/classes 路径下,如果Servlet 有包,则还应该将class 文件放在对应的包路径下。
为了让Servlet 能响应用户请求,还必须将Servlet 配置在Web 应用中。配置Servlet时,需要修改web.xrnl 文件。
配置Servlet 需要配置两个部分。
·配置Servlet 的名字:对应web.xml 文件中的<servlet/>元素。
·配置Servlet 的URL: 对应web.xml 文件中的<servlet-mapping/>元素。
因此,配置一个能响应客户请求的Servlet ,至少需要配置两个元素,例:

Xml代码
1.<! -- 配置Servlet 的名字--> 
2.<servlet> 
3.<! -- 指定Servlet 的名字--> 
4.<servlet-name>firstServlet</servlet-name> 
5.<! -- 指定Servlet 的实现类--〉  
6.<servlet-class>lee.FirstServlet</servlet-class> 
7.</servlet> 
8.<! -- 配置Servlet 的URL--> 
9.<servlet-mapping> 
10.<!--指定Servlet 的名字--> 
11.<servlet-name>firstServlet</servlet-name> 
12.<!--指定Servlet 映射的URL 地址--> 
13.<url-pattern>/firstServlet</url-pattern> 
14.</servlet-mapping> 
<! -- 配置Servlet 的名字-->
<servlet>
<! -- 指定Servlet 的名字-->
<servlet-name>firstServlet</servlet-name>
<! -- 指定Servlet 的实现类--〉
<servlet-class>lee.FirstServlet</servlet-class>
</servlet>
<! -- 配置Servlet 的URL-->
<servlet-mapping>
<!--指定Servlet 的名字-->
<servlet-name>firstServlet</servlet-name>
<!--指定Servlet 映射的URL 地址-->
<url-pattern>/firstServlet</url-pattern>
</servlet-mapping>

Servlet 的创建有两个选择。
·客户端请求对应的Servlet 时,创建Servlet 实例:大部分的Servlet 都是这种Servlet 。
• Web 应用启动时,立即创建Servlet 实例:即load-on-startup Servlet 。
每个Servlet 的运行都遵循如下生命周期。
(1)创建Servlet 实例。
(2) Web 容器调用Servlet 的init 方法,对Servlet 进行初始化。
(3) Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。如果客户端有get 请求,容器调用Servlet 的doGet 方法处理并响应请求。对于不同的请求,有不同的处理方法,或者统一使用service 方法处理来响应用户请求。
(4) Web 容器角色销毁Servlet 时,调用Servlet 的destroy 方法,通常在关闭Web容器之时销毁Servlet。
Servlet生命周期:
开始-->创建实例完成-->初始化-->响应客户端请求-->被销毁-->结束
在标准的MVC 模式中, Servlet 仅作为控制器使用。
M: Model,即模型,对应JavaBean 。
V: View ,即视图,对应JSP 页面。
C: Controller,即控制器,对应Servlet。

load-on-startup Servlet
Servlet 的实例化有两个时机:用户请求之时,或应用启动之时。应用启动时就启动的Servlet 通常是用于某些后台服务的Servlet ,或者拦截很多请求的Servlet; 这种Servlet 通常作为应用的基础Servlet 使用,提供重要的后台服务。
如果需要Web 应用启动时,可使用load-on-startup 元素完成Servlet 的初始化。load-on-startup 元素只接收一个整型值,这个整型值越小, Servlet 就越优先初始化。

Xml代码
1.<servlet> 
2.<! -- Servlet 名--> 
3.<servlet-name>timerServlet</servlet-name> 
4.<!-- Servlet 的实现类--> 
5.<servlet-class>lee.TimerServlet</servlet-class> 
6.<!-- 配置应用启动时,创建Servlet 实例--> 
7.<load-on-startup>l</load-on-startup> 
8.</servlet> 
<servlet>
<! -- Servlet 名-->
<servlet-name>timerServlet</servlet-name>
<!-- Servlet 的实现类-->
<servlet-class>lee.TimerServlet</servlet-class>
<!-- 配置应用启动时,创建Servlet 实例-->
<load-on-startup>l</load-on-startup>
</servlet>该Servlet 将一直作为后台服务执行。

访问Servlet 的配置参数:
访问Servlet 配置参数要通过ServletConfig 类的实例完成, ServletConfig提供如下
方法。
• java.lang.String getInitParameter(java.lang.String name): 用于获取初始化参数。
注意: JSP 的内直对象config 就是此处的ServletConfig

Jsp代码
1.//获取ServletConfig对象  
2.ServletConfig config = getServletConfig();  
3.//通过ServletConfig对象获取配置参数: dirver  
4.String driver = config.getInitParameter("driver"); 
//获取ServletConfig对象
ServletConfig config = getServletConfig();
//通过ServletConfig对象获取配置参数: dirver
String driver = config.getInitParameter("driver");
Servlet 访问配置参数的方式非常类似于application方式。只是application 的配置参
数对整个Web 应用有效,而Servlet 配置参数仅对该Servlet 有效,下面是配置该Servlet的配置片段:

Xml代码
1.<servlet> 
2.<!--配置Servlet 名--> 
3.<servlet-name>testServlet</servlet-name> 
4.<!--指定Servlet 的实现类--> 
5.<servlet-class>lee.TestServlet</servlet-class> 
6.<!--配置Servlet 的初始化参数: driver--> 
7.<init-param> 
8.<param-name>driver</param-name> 
9.<param-value>com.mysql.jdbc.Driver</param-value> 
10.</init-param> 
11.</servlet> 
12.<servlet-mapping> 
13.<!--确定Servlet 名--> 
14.<servlet-name>testServlet</servlet-name> 
15.<!--配置Servlet 映射的URL--> 
16.<url-pattern>/testServlet</url-pattern> 
17.</servlet-mapping> 


servlet笔记
Servlet总结

Whatà
是一种服务端的小应用程序

Whyà
1, 高效:在servlet中,每个请求都由一个java线程来处理
2, 方便:自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
3, 可移植性好:几乎所有的主流服务器都直接或通过插件支持Servlet。

Howà
SERVLET的运行流程:

客户端向WEB服务器发送请求,WEB服务器接收客户端发送过来的相关请求,
并把请求信息转发给SERVLET容器进行相关处理。SERVLET容器处理之后回送处
理后的相关信息给客房端。


Servlet的生命周期


Servlet的缺点:
1, servlet中没有内置对象,原来jsp中的内置对象都必须由程序显式的创建
2, 对于静态的html标签,servlet都必须要使用页面输出流逐行输出


Servlet中生命周期中doPost()和doGet()的区别
当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。
当一个客户通过HTML 表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。


Servlet的工作原理:Jsp+javabean+servlet(成为mvc模式的一种有效选择)

Servlet和jsp的区别:
1, servlet的生命周期比jsp少了一步编译
2, servlet是手动配置处理的,jsp是自动的
3, servlet可扩展,可维护,提高编码性能
4, url的区别表现在:在地址栏输入url时,jsp是*.jsp,而servlet是任意的
5, servlet是纯java代码,jsp可以潜入html,js,css等

servlet的继承关系
                        servlet           ServletConfig       
                            \                 /
                             \               /
                              \             /
                               \           /
                               GenericServlet
                                     |
                                     |
                                     |
                                     |        
                                HttpServlet
                                     |
                                     |
                                     |
                                     |
                               我们的servlet

Servlet的过滤器
Servlet的过滤器是特殊的servlet,能够对特定的请求路径进行过滤,在访问这个路径之前,先执行过滤器,过滤器进行处理
典型的应用:字符编码的转换,对用户的验证,记录用户的登录日志


文章评论

那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
老程序员的下场
老程序员的下场
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
 程序员的样子
程序员的样子
鲜为人知的编程真相
鲜为人知的编程真相
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
10个调试和排错的小建议
10个调试和排错的小建议
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
那些争议最大的编程观点
那些争议最大的编程观点
Java程序员必看电影
Java程序员必看电影
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员应该关注的一些事儿
程序员应该关注的一些事儿
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
漫画:程序员的工作
漫画:程序员的工作
如何成为一名黑客
如何成为一名黑客
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
中美印日四国程序员比较
中美印日四国程序员比较
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员必看的十大电影
程序员必看的十大电影
我的丈夫是个程序员
我的丈夫是个程序员
一个程序员的时间管理
一个程序员的时间管理
编程语言是女人
编程语言是女人
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
总结2014中国互联网十大段子
总结2014中国互联网十大段子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
旅行,写作,编程
旅行,写作,编程
程序员都该阅读的书
程序员都该阅读的书
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有