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:\mySoft\apache-tomcat-7.0.30\webapps\useServlet\index.jsp*/
}
}
Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext的更多相关文章
- javaweb项目jsp跳转servlet Error instantiating servlet class 问题
问题: HTTP Status 500 - Error instantiating servlet class RecommenderServlet type Exception report mes ...
- Servlet过滤器,Servlet过滤器创建和配置
第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法. 第一方法是过滤器中的init()方法用 ...
- Servlet简介与Servlet和HttpServlet运行的流程
1.Servlet [1] Servlet简介 > Server + let > 意为:运行在服务器端的小程序. > Ser ...
- Java Servlet系列之Servlet生命周期
Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...
- javaWeb中servlet开发(3)——Servlet生命周期
生命周期:是一个程序的存在周期,servlet由于是受容器的管理,所以容器来决定其生命周期 1.servlet生命周期 2.servlet生命周期对应的方法 3.servlet生命周期代码 publi ...
- Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)
本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...
- 报错:严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [/index.jsp (line: 13, column: 20) No tag "textfiled" defined in tag library imported with prefix
严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [ ...
- javaWeb中servlet开发(2)——servlet与表单
1.重写doGet方法 public class InputServlet extends HttpServlet{ public void doGet(HttpServletRequest req, ...
- 报javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception异常 的解决方案
后台错误信息如下: javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception org.a ...
- Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象
本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...
随机推荐
- kolla-ansible配置cinder 的ceph的多种后端存储池【转】
在实际的使用中,openstack后端采用ceph存储,存储磁盘类型有SATA和SSD,这里如果想基于存储驱动器提供多种云硬盘类型,可以基于下面的配置完成 点击查看配置详情
- 拉格朗日乘子法&KKT条件
朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件.前 ...
- C基础学习笔记
1.C语言运算符优先级: 2.三种循环比较 while.do-while和for三种循环在具体的使用场合上是有区别的,如下: 1).在知道循环次数的情况下更适合使用for循环: 2).在不知道循环次数 ...
- mql初学事物和视图
1.概念:一条或者多条sql语句的集合! 事务:就是一堆操作的集合,他们同生共死.要么都执行成功,要么都执行失败 2.事务的特性 ACID A:原子性 完整的,不可分割的 原子性 (Atomicity ...
- python中序列化模块json和pickle
json模块:json是第三方包,不是系统内置模块,以字符串序列 常用操作有: json.dumps() # 将变量序列化,即将功能性字符转化为字符串 例: >>> import j ...
- XXS level9
(1)查看PHP源代码 <?php ini_set("display_errors", 0); $str = strtolower($_GET["keyword&q ...
- Go语言for循环语句
for循环语句解释与使用 首先我们定义sum:=0 格式:for i:=1;i<=100;i++{ sum+=i } for 循环100次,首先执行i=1,然后判断i<100,再执行sum ...
- message box
QMessageBox 弹出框上的按钮设置为中文 Qt 默认的弹出框上的按钮式英文,虽然也知道是什么意思,但终究不如中文看着顺眼. QMessageBox box(QMessageBox::War ...
- 2018.4.28 kvm虚拟机管理
创建虚拟机: virt-install --name wj-v1.4.1.0411 --vcpus=2 --memory=2048 --disk path=/home/wj/os/osgwV1.4.1 ...
- python 进程之间的数据共享
from multiprocessing import Process,Manager import os def f(d,n): d[os.getpid()] = os.getppid()#对字典d ...