在一个综合的web应用系统中,各个组件通过共享对象来交换数据,我们就叫它web应用开发中的信息共享在Javaweb应用中,通常我们使用四个共享对象。
1四个共享对象作用域
Page 当前页面
Request 一次请求
Session 一次会话
application 整个web的生命周期
相同点 有相同的存储方法
setAttribute(String name Object value)
getAttribute(String name)
getAttributeNames()
removeAttribute(String name)
区别 共享范围不同
Page 当前页面
Request 一次请求
Session 一次会话
application 整个web的生命周期,一个工程只有一个
2 Context起始参数
<context-param>
<param-name>nba</param-name> 定义起始参数名称
<param-value>乔丹</param-value> 定义起始参数值
</context-param>
servletContext sc = this.getServletContext();直接调getServletContext()方法取得ServletContext对象。
sc.getInitParameter(“nba”); 获取某个参数的参数值
sc.getInitParameterNames(); 返回所有初始化参数名称的枚举
3配置servlet的初始化参数
<servlet>
<init-param>
<param-name>nba</param-name>
<param-value>乔丹</param-value>
</init-param>
</servlet>
使用servletConfig对象读取初始化参数信息
servletConfig.getInitParameter(“nba”); 回去某个参数的参数值
servletConfig.getInitParameterNames(); 返回所有初始化参数的名称的枚举
servletConfig.getServletName(); 获取servlet名称
4 属性文件db.properties
properties文件作为属性文件、资源文件、配置文件使用,后缀为.properties
格式为key=value 其中key不变 value是变化的
读取方法一
String reanlPath = this.getServletContext().getRealPath(“相对路径”); 获取绝对路径
FileInputStream fs = new FileInputStream(realPath);
Properties prop = new Propreties();
Prop.load(fis);
Prop.getPropertier(key);
读取方法二
InputStream ins = this.getServletContext().getResourceAsStream(“相对路径”);
Properties prop = new Propreties();
Prop.load(fis);
Prop.getPropertier(key);
两个方法都获取绝对路径
5 服务器加载时启动servlet
在servlet标签内加<load-on-startup>0</load-on-startup >
数字越小,优先级越高。
构造方法在init()方法前调用
6 路径设置问题
./ 表示当前路径
不加./也表示当前路径
../ 表示当前路径的上一级路径
../../ 表示当前路径的上一级路径的上一级路径
7 servlet进行共享控制有3种方式
(1)请求转发(forward)
(2)URL重定向(redirect)
(3)包含(include)
请求转发
使用requestDispathche接口
获取接口对象
Request.getRequestDispathcher()
forword(request,response);
此方法属于RequestDispatcher接口,并可用来把一个servlet的请求提交到另一个。当其输出完全由第二个servlet或被调用的servlet生成时,必须用此方法
如果已经通过响应返回了一个ServletOutputStream对象或PrintWriter对象,这个方法将不能使用,否则,这个方法会抛出一个IllegalStateException
(在不合理或不正确时间内唤醒一方法时出现的异常信息。换句话说,即 Java 环境或 Java 应用不满足请求操作)
重定向
Response.sendRedirect(“路径”);
包含
include(request, response)
用来包括发送给其他服务器资源的响应的内容。本质上来说,这个方法反映了服务器端的内容。请求对象传到目标对象后会反映调用请求URL路径和路径信息。这个响应对象只能调用这个Servlet的ServletOutputStream对象和PrintWriter对象。
转发和重定向的区别
1 地址栏路径变化
转发 : 客户端浏览器地址路径不变化
重定向: 客户端浏览器地址栏路径变化
因为转发在服务器端进行,重定向从客户端进行,重新发送请求。
2 request对象中存放的信息是否丢失
转发:没有丢失
重定向:丢失
3 /的区别
转发:/便是从web应用的跟路径开始查找 http://localhost:8080/项目名
重定向:/从web站点的路径开始查找 tomcat的webapps目录
4 访问的资源
转发:只能访问当前web应用资源
重定向:可以访问当前应用资源,也可以访问外部资源
5 是否可以访问web-inf下的资源
转发: 可以访问
重定向: 不能访问
6 想浏览器发送请求的次数
转发:一次
重定向:两次