servlet

来源:互联网 发布:java in是什么意思啊 编辑:程序博客网 时间:2024/06/14 01:45
servlet是服务器上运行的小程序,一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的servlet程序。
tomcat的容器分为四个等级,servlet的容器管理context容器,一个context对应一个web工程。
servlet生命周期
在下列时刻servlet容器装载servlet
在servlet容器启动时自动装载某些servlet,实现它只需要在web.xml文件中的<servlet></servlet>之间添加如下代码,<loadon-startup>1</loadon-startup>,数字越小表示优先级越高
servlet规范:包含三个技术点:1servlet技术2filter技术---过滤器3listener技术----监听器
init()方法:servlet对象创建的时候执行,默认第一次访问servlet时创建该对象.
为什么是默认?
答:当在servlet的配置时,加上一个配置<load-on-startup> servlet对象在服务器启动时
service()方法:每次请求都会执行
destroy()方法:servlet销毁的时候执行,服务器关闭,servlet就销毁了
对xxxServlet进行10次访问,init()方法执行1次,destory()方法服务器不关不执行,service()方法执行10次,
request()对象执行10次,response对象创建10次。
url-pattern的配置方式:
1完全匹配  访问的资源与配置的资源完全相同才能访问到 <url-pattern>/quickStartServlet</url-pattern>
2目录匹配  格式/虚拟目录/*   *代表任意<url-pattern>/aaa/bbb/*</url-pattern>
3扩展名匹配 *.扩展名   <url-pattern>*.java</url-pattern>
注意:第二种与第三种不要混用(错误的) 
缺省Servlet:可以将url-pattern配置一个/,代表该servlet是缺省的servlet.
当你访问资源地址所有的servlet都不匹配时,缺省的servlet负责,其实,web应用中所有的资源的响应都是servlet负责,包括静态资源
什么是ServletContext对象?
ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象内部封装是该web应用的信息,这个对象一个web应用只有一个。
一个web应用有几个servlet对象?多个
ServletContext对象的生命周期?
创建:该web应用被加载(服务器启动或发布web应用)
销毁:web应用被卸载(服务器关闭或移除该web应用)
怎么获得ServletContext对象?
1ServletContext servletContext=config.getServletContext();
2ServletContext servletContext=this.getServletContext();
ServletContext的作用?
1获得web应用全局初始化参数:web.xml中配置初始化参数
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
通过context对象获得参数
ServletContext context=getServletContext();
String initParameter=context.getInitParameter("driver");
System.out.println(initParameter);
2获得web应用中任何资源的绝对路径(重要)
方法:String path=context.getRealPath(相对于该web应用的相对地址);
在WEBContent下创建a.txt,WEB-INF下面创建b.txt,src下面创建c.txt,工程下面创建d.txt
//这个相对路径是相对WEB这个工程String realPath_a=context.getRealPath("a.txt");System.out.println(realPath_a);String realPath_b=context.getRealPath("WEB-INF/b.txt");System.out.println(realPath_b);String realPath_c=context.getRealPath("WEB-INF/classes/c.txt");System.out.println(realPath_c);//d.txt路径找不到//在读取src(classes)资源时可以通过类加载器----专门加载classes下的文件的//getResource()参数是一个相对地址相对classesString path=QuickStartServlet2.class.getClassLoader().getResource("c.txt").getPath();System.out.println(path);}

3ServletContext是一个域对象(重要)
存储数据的区域就是域对象,ServletContext域对象的作用范围:整个web应用(所有的web资源都可以随意向servletcontext域中存取数据,数据都可以共享);
context.setAttribute("name", "zhangsan");;
String attribute=(String)this.getServletContext().getAttribute("name");
System.out.println(attribute);
原创粉丝点击