Servlet-----GenericServlet

举报
brucexiaogui 发表于 2021/12/30 00:37:24 2021/12/30
【摘要】 Servlet接口实现之 GenericServlet抽象类 一、该类的描述 1、GenericServlet是一个抽象类,并且是HttpServlet类的父类。 2、GennericServlet实现了Servlet接口并覆写了该接口的方法,只有service方法只实现但是没有覆写,当继承GennericServle...


Servlet接口实现之 GenericServlet抽象类


一、该类的描述

1、GenericServlet是一个抽象类,并且是HttpServlet类的父类。

2、GennericServlet实现了Servlet接口并覆写了该接口的方法,只有service方法只实现但是没有覆写,当继承GennericServlet抽象类的时候只需要覆写service方法。


二、该类提供的方法



destory()方法作用与Servlet.destory()方法相同,略。

getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name)
返回一个包含初始化变量的值的字符串,如果变量不存在则返回null,该方法从servlet的ServletConfig变量获得命名变量的值。

getInitParameterNames()方法概述:public java.util.Enumeration getInitParameterNames()
该方法返回一个包含所有初始化变量的枚举函数。如果没有初始化变量,则返回一个空枚举函数。

getServletConfig()方法概述:public ServletConfig getServletConfig()
返回一个servlet的ServletConfig对象getServletContext()方法与ServletConfig.getServletContext()相同,略。

getServletInfo()方法概述:public java.lang.String getServletInfo()
该方法来源于Servlet接口,覆写该方法以产生有意义的信息。(如:版本号、版权、作者等)
 
init(ServletConfig config)方法概述:public void init(ServletConfig config) throws ServletException
该方法来源于Servlet接口,覆写该方法,必须调用super.init(config)

init()方法概述:public void init() throws ServletException
该方法重载Servlet.init(ServletConfig config)方法而无需调用super.init(config)。而ServletConfig对象依然可以通过调用getServletConfig()方法获得。

log(java.lang.String msg)方法概述:public void log(java.lang.String msg)
该方法把指定的信息写入一个日志文件,见ServletContext.log(String)。

log(java.lang.String message,java.lang.Throwable t)方法概述:public void log(java.lang.String message,java.lang.Throwable t)
该方法把解释性的内容和抛出的例外信息写入一个日志文件。

service()方法概述:public abstract void service(ServletRequest req,ServletResponse res)
                      throws ServletException,java.io.IOException
该方法必须由servlet容器调用以允许servlet 对请求作出响应。
见Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)。

getServletName(),见ServletConfig.getServletName()。


三、init()获取初始化参数

1、GennericServlet类提供了无参的init初始化方法,这个方法获取参数的原理参照下面的源代码。

2、init()无参初始化方法代码。


  
  1. package test05;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.GenericServlet;
  5. import javax.servlet.ServletConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. public class GenricServ extends GenericServlet {
  13. /*
  14. * 这个是servlet接口原生的初始化方法,这个方法和Genneric的init()无参方法同时存在
  15. * 的时候,无参的init方法是不会执行的。因为有参的init方法是父类中的方法,调用了
  16. * 父类的方法,被子类覆盖的方法就不会执行。
  17. */
  18. public void init(ServletConfig config){
  19. System.out.println("这个是Serlvet接口提供的初始化方法");
  20. }
  21. /*
  22. * 1、genericservlet覆盖了Servlet接口的init(serviletConfig)方法,覆盖源码如下:
  23. * @Override
  24. public void init(ServletConfig config) throws ServletException {
  25. this.config = config;
  26. this.init();
  27. }
  28. 2、只需要覆盖init()没有参数的方法就可以实现自定义的内容。
  29. */
  30. public void init(){
  31. /*
  32. * 获取参数有两个方法,第一个方法如下:
  33. */
  34. System.out.println("初始化。。。。");
  35. String name = getServletConfig().getInitParameter("who");
  36. System.out.println("获取初始化参数who的值"+name);
  37. /*
  38. * 使用GennericServlet提供的方法,实现原理和上面方法是一样的。
  39. * @Override
  40. public String getInitParameter(String name) {
  41. return getServletConfig().getInitParameter(name);
  42. }
  43. */
  44. String name2 = getInitParameter("who");
  45. System.out.println("使用GennericServlet提供的方法"+name2);
  46. }
  47. @Override
  48. public void service(ServletRequest req, ServletResponse res)
  49. throws ServletException, IOException {
  50. // TODO Auto-generated method stub
  51. }
  52. }


3、web.xml配置方法


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  6. <servlet>
  7. <description>This is the description of my J2EE component</description>
  8. <display-name>This is the display name of my J2EE component</display-name>
  9. <servlet-name>GenricServ</servlet-name>
  10. <servlet-class>test05.GenricServ</servlet-class>
  11. <init-param>
  12. <param-name>who</param-name>
  13. <param-value>我是初始化参数</param-value>
  14. </init-param>
  15. <load-on-startup>1</load-on-startup>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>GenricServ</servlet-name>
  19. <url-pattern>/genric</url-pattern>
  20. </servlet-mapping>
  21. </web-app>






GenericServlet

类是一个抽象类,并且是

Servlet

接口的实现类,

HttpServlet

类的父类,

GenericServlet

类是一个抽象类,并且是

Servlet

接口的实现类,

HttpServlet

类的父类,

GenericServlet

类是一个抽象类,并且是

Servlet

接口的实现类,

HttpServlet

类的父类,

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/75201574

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。