zoukankan      html  css  js  c++  java
  • Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext

     

    一、GenericServlet

    1、所有的成员方法:

    这里写图片描述
    这里写图片描述

    1、在javaWeb项目中:

    2、web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>
      <servlet>
        <servlet-name>ExtendsGenericServlet</servlet-name>
        <servlet-class>cn.hncu.ExtendsGenericServlet</servlet-class>
        /***自定义初始化参数*/
        <init-param>
            <param-name>sName</param-name>
            <param-value>Jack</param-value>
        </init-param>
        <init-param>
            <param-name>sAge</param-name>
            <param-value>18</param-value>
        </init-param>    
        <init-param>
            <param-name>sAddr</param-name>
            <param-value>中国</param-value>
        </init-param>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>ExtendsGenericServlet</servlet-name>
        <url-pattern>/servlet/ExtendsGenericServlet</url-pattern>
      </servlet-mapping>    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

    3、ExtendsGenericServlet.java

    package cn.hncu;
    
    import java.io.IOException;
    import java.util.Enumeration;
    
    import javax.servlet.GenericServlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    /**
     * (1)演示Servlet的实现方式 :继承GenericServlet类
     * (2)演示GenericServlet类及其类成员方法的使用
     * 
     * (3)类名:ExtendsGenericServlet
     * (4)父类:GenericServlet
     * 
     * (5)类:
     * public abstract class GenericServlet 
     *      extends java.lang.Object 
     *      implements Servlet, ServletConfig, java.io.Serializable
     *  
     * (6)抽象类实现的抽象方法:service
     * (7)普通类成员方法:父类已经帮我们实现了,也不用我们去覆盖,直接调用即可!
     * (8)所有的普通类成员方法都是有service方法去调用!
     *  
     * (9)构造方法:所有servlet初始化都是由init方法完成的!
     * 
     * 
     */
    public class ExtendsGenericServlet extends GenericServlet {
    
    
        @Override
        public void service(ServletRequest req, ServletResponse res)
                throws ServletException, IOException {
            /**在service方法中,可以调用到GenericServlet类的所有类成员方法!*/
            /*接下来一一演示每个类成员方法  */
    
            /**1、
             * 方法:getInitParameterNames()
             * 返回:所有初始化参数名字
             */
            Enumeration<String> en = getInitParameterNames();
            /*具体操作 */
            System.out.println("获取初始化参数为-----");
            while(en.hasMoreElements()){
                String parameterName = en.nextElement();
                String parameter = getInitParameter(parameterName);
                System.out.println(parameterName+" = "+parameter);
            }
    
    
            /**2、
             * 方法:getInitParameter(String name)
             * 返回:初始化参数值
             */
            String sName = getInitParameter("sName");
            /*具体操作 */
            System.out.println("获取单个初始化参数为-----");
            System.out.println("sName = "+sName);
    
    
            /**3、
             * 方法:getServletConfig()
             * 返回:当前(this)的Servlet的配置信息(Object)
             */
            ServletConfig config = getServletConfig();
            /*具体操作 :可以获取到config对象中的方法*/
            System.out.println("获取config对象为-----");
            //3.1
            String sAge = config.getInitParameter("sAge");
            System.out.println("sAge = "+sAge);
            //3.2
            Enumeration<String> en2 = config.getInitParameterNames();
            while(en2.hasMoreElements()){
                String parameterName = en2.nextElement();
                String parameter = getInitParameter(parameterName);
                System.out.println(parameterName+" = "+parameter);
            }       
            //3.3
            ServletContext context = config.getServletContext();
            System.out.println("context = "+context);
            //3.4
            String servletName = config.getServletName();
            System.out.println("servletName = "+servletName);
    
    
            /**4、
             * 方法:getServletContext()
             * 返回:当前(this)Servlet中运行的Web项目文本
             */
            ServletContext context2 = getServletContext();
            /*具体操作 */
            System.out.println("获取context2对象为-----");
            System.out.println("context2 = "+context2);
    
    
            /**5、
             * 方法:getServletName()
             * 返回:此servlet实例的名称
             */
            String servletName2 = getServletName();
            System.out.println("获取servletName2为-----");
            System.out.println("servletName2 = "+servletName2);
    
            /**6、
             * 方法:getServletInfo()
             * 返回:有关servlet的信息,如作者、版本和版权
             */
            String servletInfo = getServletInfo();
            System.out.println("获取servletInfo为-----");
            System.out.println("servletInfo = "+servletInfo);
    
            /**7、
             * 方法:init(ServletConfig config)
             * 返回:由servlet容器调用,以指示将servlet放入服务中的servlet
             */
            init(config);
    
            /**8、
             * 方法:service(ServletRequest req, ServletResponse res) 
             * 返回:由servlet容器调用,以允许servlet对请求作出响应
             */
            /*service(req, res);*/
    
        }
    }
    

    4、运行结果:

    获取初始化参数为-----
    sName = Jack
    sAge = 18
    sAddr = 中国
    获取单个初始化参数为-----
    sName = Jack
    获取config对象为-----
    sAge = 18
    sName = Jack
    sAge = 18
    sAddr = 中国
    context = org.apache.catalina.core.ApplicationContextFacade@4fe087e7
    servletName = ExtendsGenericServlet
    获取context2对象为-----
    context2 = org.apache.catalina.core.ApplicationContextFacade@4fe087e7
    获取servletName2为-----
    servletName2 = ExtendsGenericServlet
    获取servletInfo为-----
    servletInfo = 
    

    二、HttpServlet

    1、所有成员方法:

    这里写图片描述
    这里写图片描述

    2、UseHttpServlet.java

    /** 
    * (1)HttpServlet类中两个重要的方法就是:doGet、doPost 
    * (2)HttpServlet中还有一些其他的请求方式,这里暂时略过,常用的就是这两中方式! 
    * (3)当然了,HttpServlet可以直接获取到很多关于Servlet的方法, 这里就不用演示了! 

    * (4)在doGet和doPost请求方式中,有两个参数非常重要:HttpServletRequest、HttpServletResponse 
    * (5)request和response的具体使用后边演示! 

    * (6)这里演示如何将两种方式请求的参数获取出来即可! 

    */

    package cn.hncu;
    
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class UseHttpServlet extends HttpServlet {
    
        /**
         * (1)HttpServlet类中两个重要的方法就是:doGet、doPost
         * (2)HttpServlet中还有一些其他的请求方式,这里暂时略过,常用的就是这两中方式!
         * (3)当然了,HttpServlet可以直接获取到很多关于Servlet的方法, 这里就不用演示了!
         * 
         * (4)在doGet和doPost请求方式中,有两个参数非常重要:HttpServletRequest、HttpServletResponse
         * (5)request和response的具体使用后边演示!
         * 
         * (6)这里演示如何将两种方式请求的参数获取出来即可!
         * 
         * (7)public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
         */
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            System.out.println("doGet....");
            /**
             * 通过超链接方式来获取req请求中的参数:
             * http://localhost:8080/useServlet/servlet/UseHttpServlet?name=Jack&pwd=1234
             */
            String name = req.getParameter("name");
            String pwd = req.getParameter("pwd");
            resp.getWriter().println(name+" : "+ pwd);
    
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            System.out.println("doPost....");
    
            /**
             * 通过表单提交方式获取req请求中的参数:
             */
            String name = req.getParameter("name");
            String pwd = req.getParameter("pwd");
            resp.getWriter().println(name+" : "+pwd);
    
        }
    
    }
    

    3、运行结果:

    (1):doGet方式请求

    这里写图片描述

    (2):doPost方式请求

    这里写图片描述 
    这里写图片描述

    三、ServletConfig

    1、所有成员方法:

    这里写图片描述

    2、javaWeb项目中:

    3、web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>
    
       <servlet>
        <servlet-name>UseServletConfig</servlet-name>
        <servlet-class>cn.hncu.UseServletConfig</servlet-class>
        <init-param>
            <param-name>pName</param-name>
            <param-value>Rose</param-value>
        </init-param>
        <init-param>
            <param-name>pAddr</param-name>
            <param-value>湖南衡阳</param-value>
        </init-param>    
      </servlet>
    
      <servlet-mapping>
        <servlet-name>ExtendsGenericServlet</servlet-name>
        <url-pattern>/servlet/ExtendsGenericServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>UseServletConfig</servlet-name>
        <url-pattern>/servlet/UseServletConfig</url-pattern>
      </servlet-mapping>    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

    4、UseServletConfig.java

    package cn.hncu;
    
    
    import java.io.IOException;
    import java.util.Enumeration;
    
    import javax.servlet.GenericServlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class UseServletConfig extends GenericServlet {
        @Override
        public void service(ServletRequest req, ServletResponse res)
                throws ServletException, IOException {
    
            /**
             * (1)演示ServletConfig类
             * (2)演示其中的4个方法
             * 
             */
            ServletConfig config = getServletConfig();
    
            System.out.println("获取初始化参数:");
            /**1、
             * 方法:getInitParameterNames()
             * 返回:所有的初始化参数的名字
             * 
             * 【注意】只有当前servlet在配置文件中设置了初始化参数才可以获取到
             */
            Enumeration<String> en = config.getInitParameterNames();
            while(en.hasMoreElements()){
                String parameterName = en.nextElement();
    
                /**2、
                 * 方法:getInitParameter(String name)
                 * 返回:当前name所对应的初始化参数值
                 */
                String parameter = config.getInitParameter(parameterName);
                System.out.println(parameterName+" = "+parameter);
            }
    
    
    
    
            /**3、
             * 方法:getServletContext()
             * 返回:获取当前Servlet的Web项目的文本内容:ServletContext
             * 注意:关于ServletContext参照关于ServletContext的演示
             * 
             * 接下来演示context对象中的部分方法:
             */
            System.out.println("获取文本内容:");
            ServletContext context = config.getServletContext();
            /**3.1
             * 方法:getContextPath()
             * 返回:当前Web项目名
             */
            String contextPath = context.getContextPath();
            System.out.println("contextPath = "+contextPath);
            /**3.2
             * 方法:setAttribute(String name,Object obj);
             * 返回:设置当前Web项目中的属性,及其对应值
             */
            context.setAttribute("sName", "Tom");
            /**3.3
             * 方法:getAttribute("sName")
             * 返回:获取当前属性所对应的值
             */
            String sName = (String) context.getAttribute("sName");
            System.out.println("sName = "+sName);
    
    
    
            /**4、
             * 方法:getServletName
             * 返回:当前Servlet的name
             * 
             */
            System.out.println("获取servlet名字:");
            String servletName = config.getServletName();
            System.out.println("servletName = "+servletName);
    
        }
    }
    

    5、执行结果:

    获取初始化参数:
    pName = Rose
    pAddr = 湖南衡阳
    获取文本内容:
    contextPath = /useServlet
    sName = Tom
    获取servlet名字:
    servletName = UseServletConfig
    

    四、ServletContext

    1、所有成员方法:

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    2、UseServletContext.java

    package cn.hncu;
    
    
    import java.io.IOException;
    import java.util.Enumeration;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * (1)、演示ServletContext类的相关方法
     * 
     * 
     *
     */
    public class UseServletContext extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            ServletContext context = getServletContext();
            /**1、
             * 方法:setAttribute(String name,Object obj)
             * 返回:在servlet上下文中绑定对象到给定属性名
             */
            context.setAttribute("sName", "Jack");
    
            /**2、
             * 方法:getAttribute(String name)
             * 返回:返回给定名称的servlet容器属性
             */
            Object sName = context.getAttribute("sName");
            System.out.println("sName = "+sName);
    
            /**3、
             * 方法:getAttributeNames()
             * 返回:返回包含此servlet上下文中可用的属性名称的枚举。
             */
            Enumeration<String> en = context.getAttributeNames();
            while(en.hasMoreElements()){
                String attributeName = en.nextElement();
                Object attribute = context.getAttribute(attributeName);
                System.out.println(attributeName+" = "+attribute);
            }
    
    
            /**4、
             * 方法:getRealPath(String name);
             * 返回:返回一个包含给定虚拟路径的实际路径的字符串
             * 
             * 绝对路径
             */
            String realPath = context.getRealPath("index.jsp");
    
            System.out.println("realPath = "+realPath);
            /**结果:realPath = F:mySoftapache-tomcat-7.0.30webappsuseServletindex.jsp*/
    
        }
    }
  • 相关阅读:
    CentOS 5.5如何通过yum安装Zend Optimizer
    如何更改商品分类名称的长度?
    ECSHOP的后台路径修改
    SVN协同开发时服务端与线上APACHE测试环境网站同步记录 转
    一个简单的替换字符的SQL命令
    svn 的常见操作 import
    SVN制作补丁包的方法
    kloxo密码解决办法
    SVN的分支/标记/合并
    如何将一个表中的所有字母都变成小写
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/10583867.html
Copyright © 2011-2022 走看看