获取ServletContext对象的方法:
ServletContext context = this.getServletContext();
注:以下提到的context均表示ServletContext对象
获取WEB应用的初始化参数:
获取context参数名:
仅有一个时:context.getInitParameterName();
有多个时:context.getInitParameterNames()
获取Context参数值:
context.getInitParameter(参数名);
注意:获取context属性时,一定要保证xml文件中有以下内容:
<context-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</context-param>
Servlet共享数据
首先在reques中定义context属性即context.setA ttribute(参数名,参数值),然后在reponse中获取要共享的信息即context.getAttribute(参数名)
如:
//定义属性值
context.setAttribute("data","value");
//获取属性值
String buf = (String)context.getAttribute("data");
Servlet转发
有两种方法:在定义context属性和初始化request,初始化只能在jsp动态网页上使用
·首先在request中定义context属性即context.setAttribute(参数名,参数值),然后在RequestDispatcher中指定要跳转到的url地址context.getAttribute(参数名)
//指定要跳转到的页面 使用相对路径
RequestDispatcher rd = request.getRequestDispatcher("/success.html");
//实现跳转
rd.forward(request, response);
·初始化request参数
如:
//初始化request参数并实现跳转
//request参数初始化
request.setAttribute("name", "sunny");
//指定要跳转到的页面”
RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
//在后面添加“hahha
response.getWriter().print("hahha");
rd.include(request, response);
forward和include区别:forward跳转,include包含,加载jsp文件时,用include可将要添加的数据添加到已定义好的jsp文件中,用forward方法则不能实现这种功能
利用ServletContext对象读取资源文件。
得到文件路径
用context.getRealPath(指定文件)方法实现
如:
/*获得ServletContext文件路径
String path = context.getRealPath("");
读取资源文件的三种方式:以properties文件(属性文件)为例
·context.getResource(String path
)方法
·context.getRealPath(String path)
方法
·context.getResourceAsStream(String path
)方法
这三种方法基本相同,只是(一、三)两种方法是获取路径后直接传送到输入流中;第二种是获取路径后先创建file文件,再将File文件传入流中
如:
第一种方法:
//获取路径
URL url = context.getResource("/WEB-INF/classes/sunny.properties");
InputStream is = url.openStream();
第二种方法:
//获取路径
String path = context.getRealPath("/WEB-INF/classes/sunny.properties");
//根据获取的路径,创建文件
File file = new File(path);
//根据file文件,创建输入流
InputStream is = new FileInputStream(file);
第三种方法:
//获取路径
InputStream is = context. getResourceAsStream ("/WEB-INF/classes/sunny.properties");
以下是它们的共同代码(解析与输出):
//解析Properties文件
Properties prop = new Properties();
//解析Properties属性
prop.load(is);
//解析Properties属性的键值
Set<String> set = prop.stringPropertyNames();
//遍历
Iterator<String> it = set.iterator();
while(it.hasNext()){
//获取键值
String key = it.next();
//获取属性值
String value = prop.getProperty(key);
//System.out.println(key+"==========="+value);
response.getWriter().print(key+"==========="+value);
}
is.close();