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

 

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35415600/article/details/76162614

一、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> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

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);*/ } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131

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 = 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

二、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); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

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> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

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); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

5、执行结果:

获取初始化参数:
pName = Rose
pAddr = 湖南衡阳
获取文本内容:
contextPath = /useServlet
sName = Tom
获取servlet名字:
servletName = UseServletConfig 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

四、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*/ } }

猜你喜欢

转载自www.cnblogs.com/shoshana-kong/p/10583867.html
今日推荐