------- android培训、java培训、期待与您交流! --------
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2013-01-13T01:02:06+08:00
====== Servlet 03 HttpServlet ======
Created Sunday 13 January 2013
HttpServlet
继承HttpServlet 实现servlet 开发
1. 再httpservlet中,设计者对 get 和 post 提交分别处理;
2. 继承HttpServlet, 实现doGet() doPost()方法;
3. doGet() 和 doPost() 最终也去调用了servlet接口的 service() 方法 ;
get提交 和 post提交的区别
1. URL地址栏
2. 提交内容大小的不同<建议get< 2kb,post<64kb >
3. 从请求响应速度来看 : get > post get要求服务器立即响应 post则会创建一个响应队列;
Servlet的一些细节<一>
1. 客户端是通过WEB服务器的资源,所以servlet必须要再web.xml中指定URL地址
2. 当映射一个servlet的时候,可以多层 ;
3. servlet映射到的URL中可以使用*通配符
3.1 第一种格式 *.扩展名 比如 *.do
3.2 第二种格式 [[/*]]
4. servlet的单例问题
4.1 当servlet被第一次访问后 就被加载进内存 以后该实例对各个请求服务 即在使用中是单例的;
4.2 因为servlet是单例 因此会出现线程安全问题,比如:售票系统
4.3 简单的解决方法 synchronized (this){}<同步机制>
4.4 解决单例的原则:
4.4.1 如果一个变量需要多个用户共享,则应当在访问该变量的时候,加同步机制 synchronzed (对象){}
4.4.2 如果该变量不需要多个用户共享 ,则直接在doGet() 里定义
5. servlet 中的 load-on-startup 配置
需求:当我们的网站启动的时候,可能会要求初始化一些数据<例如定时发送邮件,定时备份数据>
通过配置 load-on-startup 可以自动创建servlet
//完成一些初始化的任务 例如:创建数据库,表,读取参数
<servlet>
<load-on-startup>1</load-on-startup>
</servlet>
1表示该servlet的启动优先级