您的位置:首页 > 其它

ServletContext应用

2011-10-25 20:43 253 查看
ServletContext应用

前提: 1----------Enumeration<E>e代表枚举值

(x|y|z)*代表

无序的、里面互斥、可单独

X-----0到多

y-----0到多

z-----0到多

应用一:实现Servlet的转发。
注意:forward与include的区别
1---forward方法调用后在响应中的没有提交的内容被自动消除。将请求转发给其他的Servlet后,由被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。
2---include方法使原先的Servlet和转发到的Servlet都可以输出响应信息,即原先的Servlet还可以继续输出响应信息。
在测试的Servlet中实现转发的步骤如下:
要利用ServletContext对象实现转发获取对象
ServletContext context = this.getServletContext();
在request对象中存入name属性
request.setAttribute("name", wyd");
根据转发的地址获取 RequestDispatcher对象
RequestDispatcher rd = context.getRequestDispatcher("/index.jsp");
调用转发方法 以下采用任意方法即可
rd.forward(request, response);
rd.include(request, response);
应用二:多个ServletContext通过ServletContext对象实现数据共享。

1--- 在InitServletde 通过ServletContext方法中利用ServletContext对象存入需要共享的数据。

获取ServletContext对象

ServletContext context=this.getServletContext();

存入共享的数据

Context.setAttribute(“name”,”wyd”);

2--- 在其它的Servlet中利用ServletContext对象获取共享的数据

获取ServletContext对象

ServletContext context=this.getServletContext();

获取共享数据

String name=context.getAttribute(“name”);

System.out.println(“共享数据的值是:”+name);

应用三:实现Servlet的转发

注意:重定向与转发的区别

1---地址栏的区别:转发地址栏不变

2---处理请求资源的位置不同:sendRedirect()方法可以跨WEB应用程序和服务器重新定位资源来处理请求。forward()方法只能在应用程序内部转发。

3---传值不同: forward()方法能在转发的地址中获取存入的作用域的值。但是,重定向不能。

应用四:利用ServletContext对象读取资源文件。

(这不会写只好用老师的代码了。。。)

读取资源文件(properties文件(属性文件))的三种方式
配置的properties的内容如下:
url=jdbc\:mysql\://localhost\:3306/3g
user=root
password=root
获取实现的代码如下:
/*获取ServletContext对象*/
ServletContext context = this.getServletContext();
//第一种方式
URL url = context.getResource("WEB-INF/classes/db.properties");
InputStream is = url.openStream();
//第二种方式
/*读取db.properties文件*/
String path =context.getRealPath("WEB-INF/classes/db.properties");
/*根据文件的路径 构建文件对象*/
File file = new File(path);
/*根据file文件对象 创建输入流*/
InputStream is = new FileInputStream(file);
//第三种方式
InputStream is = context.getResourceAsStream("WEB-INF/classes/db.properties ");
//以三种方式任意一种可以
/*解析properties的文件*/
Properties prop = new Properties();
//从输入流中读取属性列表(键和元素对)。
prop.load(is);
Set<String> set = prop.stringPropertyNames();
//遍历set集合
Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();
String value = prop.getProperty(key);
System.out.println(key+"-----"+value);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: