ServletConfig对象:
① 用于封装servlet的配置信息。
② 实际开发中,有些东西不适合在servlet程序中写死,这类数据就可以通过配置方式给servlet。
③ 将不适合写在程序中的参数(servlet采用的编码,servlet连接的数据库,servlet哪个配置文件 等信息),写在web.xml配置文件<servlet>中的<init-param>标签中。
④ 服务器自动将<init-param>中的数据封装到ServletConfig中。
获取配置中单个初始化信息如下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String value=this.getServletConfig().getInitParameter("data1");
System.out.println(value);
}
ServletContext对象:
生命周期:
服务器启动,为服务器中的每个web应用都分别自动创建一个对应的ServletContext对象。
服务器关闭或应用被删除:自动销毁对应的ServletContext对象。
ServletContext的应用:聊天室
“ServletContext域” 这句话说明了:
1这是一个容器
2这个容器的作用范围。(即应用程序范围)
初始化:
Web.xml中<servlet>中的<init-param>为某个servlet配置初始化参数。
Web.xml中<context-param>标签里为整个web应用配置初始化参数。
servlet的转发:
含义:客户机请求服务器,服务器帮客户机转发到客户机想要访问的目标上去。
Servlet不适合输出数据,这时候需要用到转发技术,一般转发到jsp页面输出数据。
读取资源文件:
在软件开发中,基本两种配置文件:.xml和.properties为后缀名的。
Xml用于配置有关系的数据;
Properties用于配置没有关系的数据。
通过servlet文件读取资源文件:
获得servletcontext获得,
//InputStream in= this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
//properties文件所在web服务器下的路径,src目录相当于服务器中的WEB-INF下的classes目录
//通过servletContext得到绝对路径后,再通过传统流读取资源文件
String path= this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
FileInputStream in=new FileInputStream(path);
//以下为模板代码
Properties p=new Properties();//底层map保存
p.load(in);
String url=p.getProperty("url");
String username=p.getProperty("username");
String password=p.getProperty("password");
System.out.println(url);
System.out.println(username);
System.out.println(password);
//以上为模板代码
通过非servlet文件读取资源文件:
通过类装载器去读(文件不能太大),例如:
//以下代码无法获得更新后的数据
InputStream in = UserDao.class.getClassLoader().getResourceAsStream("db.properties");
Properties p=new Properties();
p.load(in);
System.out.println(p.getProperty("url"));
//通过类装载去获得文件的路径,再去通过传统方式读取资源文件数据,可以得到更新后的数据。
String path=UserDao.class.getClassLoader().getResource("db.properties").getPath();
InputStream in1=new FileInputStream(path);
Properties p1=new Properties();
p1.load(in1);
System.out.println(p.getProperty("url"));