ServletContext应用

 

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);   

 }   

 

你可能感兴趣的:(String,properties,servlet,jdbc,File,include)