Servlet的一些笔记

来源:互联网 发布:暴雪防沉迷算法 编辑:程序博客网 时间:2024/06/14 04:42
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路径

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");
0 0