javawebday18
来源:互联网 发布:爱上一个中国女人知乎 编辑:程序博客网 时间:2024/06/06 17:26
/* *给Servlet指定一个Servlet路径 (让Servlet与一个路径绑定) *浏览器访问Servlet路径 *Servlet生命周期方法 * void init(ServletConfig) (1次)出生之后 创建之后立即执行的初始化 * void service(ServletRequest request,ServletResponse response) 每次处理请求都会被调用 * void destory() 临死之前(1次) 销毁之前释放资源的方法 *特性 * 单例 一个类只有一个对象 存在多个Servlet类 * 线程不安全的 效率高 *Servlet类由我们来写 但对象由服务器来创建并且由服务器来调用相应的方法 *GenericServlet *GenericServlet是Servlet接口的实现类 */
web.xml
<servlet> <servlet-name>xxx</servlet-name> <servlet-class>test.AServlet</servlet-class> <init-param> <param-name>p1</param-name> <param-value>v1</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>xxx</servlet-name> <url-pattern>/AServlet</url-pattern> </servlet-mapping>
public void init(ServletConfig servletconfig) throws ServletException { System.out.println("init"); System.out.println(servletconfig.getInitParameter("p1")); /* * 获取所有初始化参数的名称 */ Enumeration e = servletconfig.getInitParameterNames(); while(e.hasMoreElements()) { System.out.println(e.nextElement()); } }
public class BServlet implements Servlet { /** * 模拟genericServlet */ private ServletConfig config; /** * 需要些就写 不写也行 */ @Override public void destroy() { System.out.println("die"); } /** * 一定在init()方法之后被调用 * init()被调用后 本类的成员this.config 已经有值了 */ @Override public ServletConfig getServletConfig() { return this.config; } @Override public String getServletInfo() { return "hello"; } /** * 由Tomcat来调用 并且只调用一次 * 是这些方法中第一个被调用 会在构造器后马上被调用 */ @Override public void init(ServletConfig arg0) throws ServletException { //把tomcat传递的ServletConfig赋值给本类的一个成员 其实就把它保存起来 方便在其他方法中使用 this.config = config; init(); } /** * 本类自己定义的 不是servlet接口中的方法 * 子父类配合 */ public void init() { } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { /** * 可以使用ServletConfig的成员 */ System.out.println("每次处理请求都调用"); } public ServletContext getServletContext() { return config.getServletContext(); } public String getServletName() { return config.getServletName(); } public String getInitParameter(String name) { return config.getInitParameter(name); }}
public class CServlet extends BServlet { //父类中的就相当于在子类中了 @Override public void init() { //通过服务器调用的intit(ServletConfig arg0)[有生命周期的方法] 调用子类覆盖父类的init()方法 //不仅config成功配置好 而且能用子类自己的 间接访问 System.out.println("wulala"); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { String value = getInitParameter("p1"); super.service(arg0, arg1); }}
public class DServlet extends GenericServlet { @Override public void init() throws ServletException { System.out.println("lalala"); super.init(); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { } @Override public void destroy() { System.out.println("die"); super.destroy(); }}
阅读全文
0 0
- javawebday18
- error C1128:字节数超过对象文件格式main.cpp限制:请使用/bigobj进行编译
- bzoj 3195: [Jxoi2012]奇怪的道路 状压dp
- c++函数重载
- 面向对象设计原则
- 函数调用栈 剖析+图解
- javawebday18
- Linux中静态库和共享库的区别
- ASP一句话木马(转)
- tomcat配置字符集防止ajax提交乱码
- Artifact Project3:war exploded: Error during artifact deployment. See server log for details.
- TypeScript介绍
- iOS 关于dispatch_semaphore_t、dispatch_source_t 和 dispatch_group_t 的简单实用,用于多网络异步回调通知
- 资料汇总-学习笔记1
- Spring boot 整合CXF开发web service