web.config java_JavaWeb(一)-Servlet中的Config和Context

一、ServletConfig对象

1.1获取一个servletConfig对象

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

85ca8c6e081a817b56efce8a77ef61df.png

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

6a3850534f05c5b4cf4d0401aa5b8f02.png

1.2servletConfig对象的作用

56d860f6e48b8bec74b6c0734dbc1f9f.png

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

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

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

1.3config使用

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

test4

Config.ServletConfigDemo1

name1

gucci

password

123

charset

UTF-8

test4

/ConfigDemo

View Code

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageConfig;importjava.io.IOException;importjava.util.Enumeration;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;public class ServletConfigDemo1 extendsHttpServlet {/*** 定义ServletConfig对象来接收配置的初始化参数*/

privateServletConfig config;/*** 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,

* 会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,

* 将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以

* 得到当前servlet的初始化参数信息。*/@Overridepublic void init(ServletConfig config) throwsServletException {this.config =config;

}public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {//获取在web.xml中配置的初始化参数

String paramVal = this.config.getInitParameter("name1");//获取指定的初始化参数

response.getWriter().print(paramVal);

response.getWriter().print("


");//获取所有的初始化参数

Enumeration e =config.getInitParameterNames();while(e.hasMoreElements()){

String name=e.nextElement();

String value=config.getInitParameter(name);

response.getWriter().print(name+ "=" + value + "
");

}

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {this.doGet(request, response);

}

}

View Code

运行结果如图:

b0689a36271fc1f7afeafa08dfc1b992.png

二、servletconfig对象

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

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

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

被称为域对象。

三、servletcontext的应用

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageTest1;importjava.io.IOException;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;

@WebServlet("/ServletContextDemo1")public class ServletContextDemo1 extendsHttpServlet{private static final long serialVersionUID = 1L;

@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {

ServletContext context= this.getServletContext();

context.setAttribute("name", "duck");

}

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {

doGet(req, resp);

}

}

View Code

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageTest1;importjava.io.IOException;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;

@WebServlet("/ServletContextDemo2")public class ServletContextDemo2 extendsHttpServlet{

@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {

ServletContext context= this.getServletConfig().getServletContext();//获取设置在servletcontext中保存好的参数

String name = (String)context.getAttribute("name");

resp.getWriter().print(name);

System.out.println(name);

}

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {

doGet(req, resp);

}

}

View Code

70d4dce150d1dd392e97d3dd1564453d.png

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageTest1;importjava.io.IOException;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletContextDemo3*/@WebServlet("/ServletContextDemo3")public class ServletContextDemo3 extendsHttpServlet {private static final long serialVersionUID = 1L;/***@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

ServletContext context= this.getServletContext();//利用servletcontext获取web.xml文件中设置的初始化参数

String str = context.getInitParameter("encoding");

response.getWriter().print(str);

response.getWriter().print("
");//根据资源名得到资源的决定路径

String path = context.getRealPath("/WEB-INF/web.xml");

response.getWriter().print(path);

}/***@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

doGet(request, response);

}

}

View Code

bff6d8a78d669078fce36aa1f221222b.png

b82be7fbd4b0ed26bb776d81cdbb564b.png

3.3用servletcontext实现请求转发

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageTest1;importjava.io.IOException;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletContextDemo6*/@WebServlet("/ServletContextDemo6")public class ServletContextDemo6 extendsHttpServlet {private static final long serialVersionUID = 1L;/***@seeHttpServlet#HttpServlet()*/

publicServletContextDemo6() {super();//TODO Auto-generated constructor stub

}/***@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

ServletContext sc= this.getServletContext();

RequestDispatcher rs= sc.getRequestDispatcher("/ServletContextDemo2");//将请求信息向下传递

rs.forward(request, response);

}/***@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub

doGet(request, response);

}

}

View Code

836e890242891eab5937ceb2deeda338.png

3.4利用servletcontext读取资源文件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageTest1;importjava.io.IOException;importjava.io.InputStream;importjava.text.MessageFormat;importjava.util.Properties;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletContextDemo4*/@WebServlet("/ServletContextDemo4")public class ServletContextDemo4 extendsHttpServlet {private static final long serialVersionUID = 1L;/***@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, 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) throwsIOException {//获取在src下面的文件

InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/Test1/db.properties");//创建一个properties

Properties prop = newProperties();//加载字节流

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)

);

}/***@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub

doGet(request, response);

}

}

View Code

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

driver=com.mysql.jdbc.Driver

url=jdbc:mysql//localhost3306//test

username=root

password=root

View Code

0feaf78aa9b37da2a64cd5d6de1b4763.png

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageTest1;importjava.io.IOException;importjava.util.Iterator;importjava.util.Set;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletContextDemo5*/@WebServlet("/ServletContextDemo5")public class ServletContextDemo5 extendsHttpServlet {private static final long serialVersionUID = 1L;/***@seeHttpServlet#HttpServlet()*/

publicServletContextDemo5() {super();//TODO Auto-generated constructor stub

}/***@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//获取指定路径下的所有内容

Set set = this.getServletContext().getResourcePaths("/WEB-INF");

Iterator iterator=set.iterator();while(iterator.hasNext()) {

System.out.println(iterator.next());

}

}/***@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub

doGet(request, response);

}

}

View Code

e644d190fb69f88b9cf6aad122f7565a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值