一、ServletConfig对象

1.1获取一个servletConfig对象

1)通过初始化方法获得一个servletconfig

2)通过继承父类(GenericServlet.)得到一个servletconfig对象

1.2servletConfig对象的作用

1)getServletName():返回servlet实例的名称

2)getServletContext():获取一个servletContext对象

3)getInitParameter(String):获取servlet中初始化参数的值。

1.3config使用

在servlet的web.xml配置文件中,可以在配置文件中生成一个<init-param>标签为servlet设置一些初始化参数,这里需要写上映射路径,不然资源显示不可用。

<servlet>
<servlet-name>test4</servlet-name>
<servlet-class>Config.ServletConfigDemo1</servlet-class>
<init-param>
<param-name>name1</param-name>
<param-value>gucci</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>test4</servlet-name>
<url-pattern>/ConfigDemo</url-pattern>
</servlet-mapping>

当我们在servlet的配置文件设置了之后,web容器在创建servlet实例对象后,会自动将这些初始化参数封装到servletconfig对象中,并调用servlet中的

init方法,将servletconfig对象传给servlet。然后我们通过servletconfig对象就可以获得这些初始化参数。

package Config;

import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ServletConfigDemo1 extends HttpServlet { /**
* 定义ServletConfig对象来接收配置的初始化参数
*/
private ServletConfig config; /**
* 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,
* 会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,
* 将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以
* 得到当前servlet的初始化参数信息。
*/
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取在web.xml中配置的初始化参数
String paramVal = this.config.getInitParameter("name1");//获取指定的初始化参数
response.getWriter().print(paramVal); response.getWriter().print("<hr/>");
//获取所有的初始化参数
Enumeration<String> e = config.getInitParameterNames();
while(e.hasMoreElements()){
String name = e.nextElement();
String value = config.getInitParameter(name);
response.getWriter().print(name + "=" + value + "<br/>");
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
} }

运行结果如图:

二、servletconfig对象

  WEB容器在启动时,它会为,每个web应用程序都创建一个servletconfig对象,它代表当前web应用。

  servletconfig对象中维护了servletcontext对象的引用。在编写servlet时,可以通过servletconfig.getservletcontext方法获得servletcontext对象。

  由于一个web应用中所有的servlet共用一个servletcontext对象,因此servlet对象之间可以通过servletcontext对象来实现通讯,servletcontext对象也通常

被称为域对象。

三、servletcontext的应用

3.1多个servlet通过servletcontext对象实现数据共享

package Test1;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ServletContextDemo1")
public class ServletContextDemo1 extends HttpServlet{ private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
context.setAttribute("name", "duck");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
package Test1;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ServletContextDemo2")
public class ServletContextDemo2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletConfig().getServletContext();
// 获取设置在servletcontext中保存好的参数
String name = (String)context.getAttribute("name");
resp.getWriter().print(name);
System.out.println(name); }
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

removeAttribute(String name):也可以通过名称来移除内容

3.2获取全局配置信息和获取web项目资源

package Test1;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletContextDemo3
*/
@WebServlet("/ServletContextDemo3")
public class ServletContextDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
// 利用servletcontext获取web.xml文件中设置的初始化参数
String str = context.getInitParameter("encoding");
response.getWriter().print(str);
response.getWriter().print("<br/>");
// 根据资源名得到资源的决定路径
String path = context.getRealPath("/WEB-INF/web.xml");
response.getWriter().print(path);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }

3.3用servletcontext实现请求转发

package Test1;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletContextDemo6
*/
@WebServlet("/ServletContextDemo6")
public class ServletContextDemo6 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public ServletContextDemo6() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc = this.getServletContext();
RequestDispatcher rs = sc.getRequestDispatcher("/ServletContextDemo2");
// 将请求信息向下传递
rs.forward(request, response);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

3.4利用servletcontext读取资源文件

package Test1;

import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletContextDemo4
*/
@WebServlet("/ServletContextDemo4")
public class ServletContextDemo4 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* response.setContentType("text/html;charset=UTF-8");
* 目的是控制浏览器用utf-8进行解码,这样就不会出现中文乱码了
*/
response.setHeader("content-type", "text/html;charaset=UTF-8");
read(response);
}
public void read(HttpServletResponse response) throws IOException {
// 获取在src下面的文件
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/Test1/db.properties");
// 创建一个properties
Properties prop = new Properties();
// 加载字节流
prop.load(in);
String driver = prop.getProperty("driver");
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password = prop.getProperty("password");
// 设置好输出格式
response.getWriter().print(
MessageFormat.format("driver={0},url={1},username={2},password={3}",
driver,url,username,password)
);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
driver=com.mysql.jdbc.Driver
url=jdbc:mysql//localhost3306//test
username=root
password=root

3.5使用servletcontext读取指定路径下的所有内容

package Test1;

import java.io.IOException;
import java.util.Iterator;
import java.util.Set; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletContextDemo5
*/
@WebServlet("/ServletContextDemo5")
public class ServletContextDemo5 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public ServletContextDemo5() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取指定路径下的所有内容
Set set = this.getServletContext().getResourcePaths("/WEB-INF");
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

最新文章

  1. [LeetCode] Word Pattern II 词语模式之二
  2. SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏
  3. ORACLE删除当前用户下所有的表的方法
  4. 获取C#代码执行的时间(精确到毫秒)
  5. SQL语句---nvl 用法
  6. 在Oracle Linux Server release 6.4下配置ocfs2文件系统
  7. requirejs的基本学习
  8. NOJ1012-进制转换
  9. [STL]deque和stack、queue
  10. 使用SurfaceView和MediaPlayer实现视频做为背景
  11. SQL Server(基本) 关键字的使用 一
  12. SerializableMaplist传递数据
  13. C# 模拟键盘按键操作
  14. Oracle入门学习笔记
  15. 原图旋转/缩放 然后画布画图 ImageProcessor
  16. Red and Black
  17. SpringMVC 重定向到其他系统的页面的两种方式
  18. JDK 5.0 注解知识快速进阶
  19. Oozie分布式工作流——Action节点
  20. 如何删除PeopleSoft Process Definition

热门文章

  1. 重建整个数据库的索引(Server2000)
  2. 本地jar包添加至Maven仓库
  3. Jquery实现点击表格行变色!
  4. python学习Day12 函数的默认值、三元表达式、函数对象(函数名)的应用场景、名称空间与作用域
  5. TCP/IP的4层模型
  6. java中的数据导出到Excel表中
  7. [转] ADO.NET调用存储过程带输出参数或返回值
  8. mybatisplus打印sql语句
  9. vim 自动添加作者、版权、修改时间等信息
  10. c/c++一维数组简单介绍