其他分享
首页 > 其他分享> > Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext

Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext

作者:互联网

 

2017年07月26日 19:32:22  阅读数:192更多 个人分类: ❸JavaEE---- ----⑦WEB开发技术---- ----Servlet  

一、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:\mySoft\apache-tomcat-7.0.30\webapps\useServlet\index.jsp*/

    }
}

标签:String,Servlet,ServletConfig,GenericServlet,System,println,import,servlet,out
来源: https://www.cnblogs.com/shoshana-kong/p/10583867.html