1.Servlet是javaweb的三大组件,服务器会把收到的请求给Servlet
接收请求数据,处理请求,完成请求
2.实现Servlet请求(由自己写)
三种方式:
实现javax.servlet.Servlet接口;
继承javax.servlet.GenericServlet类;
继承javax.servlet.http.HttpServlet类(常用,最方便)
声明周期方法
void init(ServletConfit),Servlet实现时马上调用,只调用一次
void Servlet(ServletRequest,ServleyResponse response),调用多次,每次请求都会调用
destroy(),Servlet被销毁之前调用,只调用一次,释放一些内存资源
getServletConfig(),获取Servlet的配置信息
getServletInfo(),获取Servlet信息
特征:
单例模式:一个类只有一个对象;
线程不安全,效率高
1个ServletConfig对象,对应一段web.xml中的Servlet的配置信息
查看API
String getServletName(),获取<servlet-name>中的内容
ServletContext getServletContext(),获取Servlet上下文对象
String getInitParameter(String name)通过名称获取指定初始化参数的值
numeration getInitParameterNames():获取所有初始化参数的名称
如何让浏览器访问Servlet
1.给Servlet指定一个Servlet路径!(让Servlet与一个路径绑定)
2.浏览器访问Servlet路径
多路回调:父类有带参构造调用无参构造,子类重写无参构造方法,避免父类带参构造内容被重写
Servlet细节
尽量不要在Servlet中创建成员,创建局部变量即可
可创建无转态成员
可创建有转态成员,但不要写入方法
在服务器启动就穿件Servlet<load-on-starup>非零数值
ServletContext
一个项目只有一个,可以在N个Servlet中获取唯一对象,使用它给多个Servlet传递数据(快递员,共享数据)
项目启动时创建,关闭时销毁
获取ServletContext
ServletConfig#getServletContext();
GenericServlet#getServletContext();
HttpSesstion#getServletContext();
ServletContextEvent#getServletContext();
功能:域对象的功能
用来多个Servlet中传递数据(存,取)
setAttribute(String name,Object),存储一个对象,用相同的name存储会发生覆盖,与Map相同,键值对关系
Object getAttribute(String name),String value = (String)ServletContext.getAttribute(name);
void removeAttribute(String name)
Enumeration getAttributeName();
Servlet获取初始化参数,是它局部的参数,一个Servlet参数只能一个使用
可以配置公共的初始化参数,为所有的Servlet
<context-param>
<param-name>context-param</param-name>
<param-value>context-value</param-value>
</context-param>
ServletContext获取资源的相关方法
String path = this.getServletContext().getRealPath("Demo.jsp");
接收请求数据,处理请求,完成请求
2.实现Servlet请求(由自己写)
三种方式:
实现javax.servlet.Servlet接口;
继承javax.servlet.GenericServlet类;
继承javax.servlet.http.HttpServlet类(常用,最方便)
声明周期方法
void init(ServletConfit),Servlet实现时马上调用,只调用一次
void Servlet(ServletRequest,ServleyResponse response),调用多次,每次请求都会调用
destroy(),Servlet被销毁之前调用,只调用一次,释放一些内存资源
getServletConfig(),获取Servlet的配置信息
getServletInfo(),获取Servlet信息
特征:
单例模式:一个类只有一个对象;
线程不安全,效率高
1个ServletConfig对象,对应一段web.xml中的Servlet的配置信息
查看API
String getServletName(),获取<servlet-name>中的内容
ServletContext getServletContext(),获取Servlet上下文对象
String getInitParameter(String name)通过名称获取指定初始化参数的值
numeration getInitParameterNames():获取所有初始化参数的名称
如何让浏览器访问Servlet
1.给Servlet指定一个Servlet路径!(让Servlet与一个路径绑定)
2.浏览器访问Servlet路径
web.xml
两个必须配置
<servlet>
<servlet-name>名字随便取</servlet-name>
<servlet-class>servlet在项目的位置<servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>要和上面名字一样</servlet-name>
<url-pattern>/开头,浏览器访问地址<url-pattern>
</servlet-mapping>
多路回调:父类有带参构造调用无参构造,子类重写无参构造方法,避免父类带参构造内容被重写
Servlet细节
尽量不要在Servlet中创建成员,创建局部变量即可
可创建无转态成员
可创建有转态成员,但不要写入方法
在服务器启动就穿件Servlet<load-on-starup>非零数值
ServletContext
一个项目只有一个,可以在N个Servlet中获取唯一对象,使用它给多个Servlet传递数据(快递员,共享数据)
项目启动时创建,关闭时销毁
获取ServletContext
ServletConfig#getServletContext();
GenericServlet#getServletContext();
HttpSesstion#getServletContext();
ServletContextEvent#getServletContext();
功能:域对象的功能
用来多个Servlet中传递数据(存,取)
setAttribute(String name,Object),存储一个对象,用相同的name存储会发生覆盖,与Map相同,键值对关系
Object getAttribute(String name),String value = (String)ServletContext.getAttribute(name);
void removeAttribute(String name)
Enumeration getAttributeName();
Servlet获取初始化参数,是它局部的参数,一个Servlet参数只能一个使用
可以配置公共的初始化参数,为所有的Servlet
<context-param>
<param-name>context-param</param-name>
<param-value>context-value</param-value>
</context-param>
ServletContext获取资源的相关方法
String path = this.getServletContext().getRealPath("Demo.jsp");