一、servlet
servlet是运行在web服务器上的小的java程序,用于处理web客户端发送的请求,并对请求作出响应;
二、servlet启动时加载:
1.为什么使用启动时加载:
Servlet对象是第一次被访问的时候会被创建的,init方法就会执行。假设在init方法中做了一些比较耗时的操作
(比如:加载了一些配置文件并且解析可能需要花费3秒钟)。第一个用户第一次访问这个Servlet的时候,需要等待3秒钟。
2.什么是启动时加载:
Servlet默认是在第一次访问的时候创建的对象,现在通过一个配置将Servlet的实例化的过程放在服务器启动的时候
(让服务器启动的时候创建Servlet的对象)。如果现在这样做那么之前花费的时间就会在服务器启动的时候一起花费掉了。
对于用户来讲就不需要额外花费这个时间。
三、ServletConfig对象:
ServletConfig对象是用来获取servlet对象的相关配置信息的;
1、获取ServletConfig对象: --- 调用getServletConfig()方法;
例如: ServletConfig config = this.getServletConfig();
2、获取Servlet初始化参数: --- 调用getInitParameter();
首先,在web.xml文件中配置初始化参数:
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
例如: String name = config.getInitParameter("username");
3、获取ServletContext对象: --- 调用getServletContext();
例如: ServletContext context = config.getServletContext();
4、获取Servlet的名称: --- 调用getServletName();
例如: String servletName = config.getServletName();
四、ServletContext对象:
1、什么是ServletContext
ServletContext是Servlet的上下文对象。ServletContext对象对Servlet之前和之后的内容都知道。
这个对象一个web项目只有一个。在服务器启动的时候为每个web项目创建一个单独的ServletContext对象。
2、作用一:
1、获取web项目的工程名: ---getContextPath();
例如:ServletContext servletContext = this.getServletContext();
String path = servletContext.getContextPath();
2、获取全局初始化参数: ---getInitParameter();
例如:
1、在web.xml文件中先配置全局初始化参数:
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123</param-value>
</context-param>
2、获取全局初始化参数:
String username = servletContext.getInitParameter("username");
String password = servletContext.getInitParameter("password");
作用二:读取web项目下的文件:---getResourceAsStream与getRealPath区别
之前使用IO流就可以读取Java工程项目中的文件,现在是一个web项目,需要发布到tomcat服务器下才能访问,
如果使用传统的IO流读取的话,就会出现问题(原因:路径中使用的是相对路径,相对的是jre环境)。
相对于bin目录。
例如:
Properties properties = new Properties();
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
properties.load(is);
String s = properties.getProperty("s");
String m = properties.getProperty("m");
System.out.println(s);
作用三:作为域对象存取数据
域对象:指的是将数据存入到域对象中,这个数据就会有一定的作用范围。域指的是一定的作用范围;
作用范围:ServletContext是在服务器启动的时候为每一个web项目单独创建一个servletContext对象。
当web项目从服务器中移除或关闭服务器的时候servletContext对象会被销毁,里面的数据
也会失效,所以它的范围是整个web应用。
相应的方法(常用):
1、setAttribute(Sring,object) 向作用域对象中存入数据;
2、getAttribute(String) 从作用域对象中获取数据;
3、removeAttrubute(String) 从作用域对象中移除数据;