JSP之Servlet
认识Servlet
1、Servlet是JavaWeb三大组件之一(Servlet,Filter,Listener)
2、Servlet是用来处理客户端请求的动态资源,其认为有:获取请求数据、处理请求、完成响应
3、Servlet接口方法:void init(ServletConfig)、void service(ServletRequest,ServletResponse)、void destory()、ServletConfig getServletConfig()、String getServletInfo()
实现Servlet的方式
1、实现Servlet接口
2、继承GenericServlet类
3、继承HttpServlet类(最常使用)
Servlet生命周期
在Servlet的5个方法中有3个是生命周期方法:init(初始化)、service(服务)、destroy(销毁)
Servlet的创建
当Servlet第一次被请求(默认情况),或服务器启动时(配置web.xml)Servlet实例就会被创建。
一个Servlet类只有一个实例,Servlet是单例的。
Servlet初始化
当服务器创建Servlet实例后马上会调用Servlet中的init(ServletConfig)方法,完成Servlet的初始化,该方法之后执行一次。
Servlet处理请求
当Servlet被请求时,服务器会调用Servlet中的service(ServletRequest,ServletResponse)方法来响应请求,该方法在每次请求都会被调用。一个Servlet可以同时被多个请求所调用,它是多线程的。
Servlet的销毁
服务器通常不会销毁Servlet,只有在关闭服务器时调用Servlet中destroy()方法来销毁Servlet
ServletConfig
ServletConfig是Servlet中init()方法中的参数,服务器在调用时会传入该参数,这个对象中封装了Servlet在web.xml中的配置信息,一个ServletConfig对应一个<Servlet>,可以通过该对象得到一个Servlet的相关配置信息:
String getServletName()得到Servlet的配置名称,对应<servlet-name>
ServletContext getServletContext() 得到ServletContext对象
String getInitParameter(String name) 传入参数名称,获得初始化参数值
Enumeration getInitParameterNames() 获取所有初始化参数名称
在web.xml文件中可以配置多个初始化参数,其位置在标签<servlet></servlet>之间。如:
<servlet> <servlet-name>Servlet名称</servlet-name> <servlet-class>Servlet路径</servlet-class> <init-param>//第一个初始化参数 <param-name>p1</param-name> <param-value>v1</param-value> </init-param> <init-param>第二个初始化参数 <param-name>p2</param-name> <param-value>v2</param-value> </init-param> </servlet>
ServletContext
ServletContext是三大域对象之一,它在服务器启动是创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,它的功能是存储数据、读取web.xml的初始化参数、读取应用资源。
获取ServletContext
ServletContext sc = getServletContext(); ServletContext sc = getServletConfig().getServletContext();
获取数据
因为在一个JavaWeb应用中,只有一个ServletContext对象,所以在ServletContext中保存的数据可以共整个JavaWeb应用中的动态资源共享,该对象中存在Map,使用key-->value的形式存储值:
void setAttribute(String name,Object value);//存储值 Object getAttritube(String name);//取出值 void removeAttribute(String name);//移除值
还可以获取web.xml文件中的应用初始化参数(注意区别于ServletConfig中的参数参数值)
<context-param> <param-name>name</pararm-name> <param-value>value</param-value> </context-param> servletContext.getInitParameter("name"),返回value servletContext.getInitParameterNames(),得到所有初始化参数名称,返回Enumeration<String>
下面几张图片有助于理解Servlet
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。