码迷,mamicode.com
首页 > 编程语言 > 详细

javaWeb

时间:2015-08-15 22:50:29      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

从今天起就开始步入javaWeb的学习了,今天学习了javaWeb的三大组件中的其中一个servlet

稍微梳理下servlet的相关知识点:

1.servlet是java的三大组件之一,属于动态资源,可以用来处理请求,服务器把接收到的请求给servlet来处理

2.servlet需要被访问,由我们自己编写,需要给浏览器客户端进行响应,按照http规范进行响应,servlet需要有自己的路径

 

3.一个项目可能有多个功能,一个功能可以理解成一个servlet
 
servlet怎么去编写:
1、第一种方式
  1).编写一个类实现servlet的接口
  2).servlet需要被访问,我们需要给servlet配置路径
  3).路径在web.xml中配置
2.第二种方式
  1.)继承GenericServlet
  2)在web.xml中添加配置文件
3.第三种方式(常用)
  1)先继承httpServlet(HttpServlet继承GenericServlet,GenericServlet又实现了servlet接口,所以httpServlet间接实现了servlet
  2)在web.xml中配置访问路径
 
servlet接口里面的五个方法,其中有三个方法代表servlet的生命周期,即对象的创建,调用,销毁的过程,以下是必须要掌握的三点:
1.public void init(ServletConfig config) 第一次访问servlet的时候,创建servlet对象,且马上调用这个方法
2.service 每次访问servlet的时候都会调用这个方法
3.destory  servlet对象被销毁的时候,就会调用这个方法
 
下面介绍一下tomcat的运行流程:
1.一个请求进来,tomcat会为这个请求开启一个线程,专门去处理这个请求,同是也会获取到请求的信息,请求的路径,根据路径去寻找servlet对象,如果没有servlet对象就创建一个,该对象长期存储在内存中,因为是单例的,再判断该请求是不是第一个请求,如果是,则调用init()方法,然后调用servers(),如果不是则只调用servers();此处如果有多个人在请求这个servlet,那这么这个servlet就面临了线程安全问题,注意,多线程的时候如果servlet中有在增删全局变量,那么一定要记得加上同步锁。
 
servlet对象的一些细节:
1.安全问题
servlet是单例模式,只有一个对象,一个对象服务多个请求,也就是服务多个线程,这个时候就会造成多个线程共享对象,这个时候就会有安全问题,
2.让服务器启动的时候就创建servlet
我们之前说了servlet的生命周期,第一次访问servlet的时候,会创建servlet对象,调用init方法,再调用services方法,我们以后一般会在init()方法里面做一些初始化的操作,这样就会有一个问题,会造成第一次访问servlet的人需要消耗较长的时间,我们可以让服务器一启动,我们就创建servlet,就会调用init()方法,那我们就需要配置这个servlet,在web.xml里面配置
3<url-pattern> /AServlet</url-pattern >
这个是一个servlet对外访问的路径,可以随便写,但是客户端需要按照写的路径来访问。我们也可以为一个Servlet设置多个访问路径,还可以写通配符,如:
  1)servlet/*;匹配servlet/后的任意路径
  2)*.do;匹配所有以.do结尾的请求
  3)/*;所有的路径都可以匹配
 
web.xml细节:
除了在每个项目中有一个xml之外,在tomcat的conf目录下也有一个web.xml文件,它是所有web.xml文件的根文件,项目中的web.xml都是继承它
 
servletContext对象(也称之为域对象,常用来在多个servlet中共享数据):
1.它代表的是servlet的上下文,代表的是servlet的运行环境,servlet是运行在一个项目里面的,这个对象代表的就是整个项目
2.一个项目有且只有一个servletContext对象
3.我们看这servletContext的生命周期,servletContext在tomcat一启动的时候就创建了这个对象,tomcat被关闭的时候servletContext就被销毁了
4.tomcat服务器为我创建了一个这样的对象,我们可以获取到这个对象,就是可以在我们的servlet里面获取到这个对象,我们可以在这个对象里面保存数据,假设我们访问Aservlet,就可以获取到servletContext对象,并在其中保存数据,我们再访问Bservlet,此时我们也可以在Bservlet中访问servletContext对象,我们在其他servlet中保存的数据可以在BServlet中访问。
 
 
获取应用初始化参数
1.我们之前可以获取某个servlet中的初始化参数,但是如何从一个servlet中获取另一个servlet中的初始化参数
2.在web.xml里面可以把局部的初始化参数提炼为全局的初始化参数,到时候就可以通过servletContext中获取
 
以上就是今天老师讲的知识点,总结的有点乱,以后要进一步梳的更有条理一些
 

 

javaWeb

标签:

原文地址:http://www.cnblogs.com/ccharp/p/4733270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!