servlet中servletContext的五大作用(五)
1. 获取web的上下文路径
2. 获取全局的参数
3. 作为域对象使用
4. 请求转发
5. 读取web项目的资源文件
package day10.about_servletcontext.get_resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 【context对象的作用-5】:读取web项目的资源文件
*
*
* @author mzy
*/
public class ContextDemo05 extends HttpServlet {
private static final long serialVersionUID = -8190742959528279701L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
/**
* 复习:如何读取properties文件?
*/
// 此相对路径出错
/*
* 此相对路径出错:"./src/news.properties"
* 当前路径应该是相对于java运行的目录
*/
// File f = new File(".");
// D:\Users\Administrator\AppData\Local\MyEclipse 2017 CI\.
// System.out.println(f.getAbsolutePath());
/*
* 通过以上的测试,我得出当前的相对路径在:D:\Users\Administrator\AppData\Local\MyEclipse 2017 CI\
* 我尝试在此目录下新建了一个src文件夹,在下面新建了一个news.properties
* 测试就通过了,说明当前的相对路径和我认为的相对路径并不相同;
*
*
* 所以建议我们在web项目下不要使用相对路径!
*
* 所以在web下提供了三种读取web项目的资源文件:
* java.lang.String getRealPath(java.lang.String path)
* java.InputStream getResourceAsStream(java.lang.String path)
* java.net.URL getResource(java.lang.String path)
*
*/
/*
// FileInputStream in = new FileInputStream("./src/news.properties");
// 1) 使用properties对象
Properties prop = new Properties();
// 2) 使用load方法加载properties文件
prop.load(in);
// 3) 通过getProperty() 获取内容
System.out.println(prop.getProperty("name"));
System.out.println(prop.getProperty("password"));
*/
/*
* 因为src路径只是我们开发的时候才会用的路径:
* 而真实的环境下,我们的项目应该是跑在tomcat环境下的,
* 在tomcat环境下的话,我们的所有class文件都应该存放在
* WEB-INF/classes文件夹下的。
* 那么我们的news.properties文件存放在我们开发的src文件
* 夹中,那么此文件就应该在我们的classes文件夹下。
*
* 因为这个动作是在服务器中进行的,所以这个应该是一个服务器
* 行为
*
* 服务器行为下的绝对路径定位到我们的项目根目录,并非站点的根目录
* 所以我们书写的语句如下:
*
*/
// 获取到当前在网站运行下的真实的路径:
// 通过 / 返回到根目录下(当前的服务器行为:项目根目录)
// 1. getRealPath() 获取资源文件的真实路径: String path
// String path = this.getServletContext().getRealPath("/WEB-INF/classes/news.properties");
// FileInputStream in = new FileInputStream(new File(path));
// 2. getResourceAsStream() 直接获得资源文件的输入流; InputStream
// InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/news.properties");
// 3. getResource() 获得资源文件的URL 与第一种相似
URL url = this.getServletContext().getResource("WEB-INF/classes/news.properties");
String path = url.getPath();
InputStream in = new FileInputStream(new File(path));
// 1) 使用properties对象
Properties prop = new Properties();
// 2) 使用load方法加载properties文件
prop.load(in);
// 3) 通过getProperty() 获取内容
System.out.println(prop.getProperty("name"));
System.out.println(prop.getProperty("password"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
}
}
servlet中servletContext的五大作用(五)的更多相关文章
- servlet中servletContext的五大作用(三)
1. 获取web的上下文路径 2. 获取全局的参数 3. 作为域对象使用 4. 请求转发 5. 读取web项目的资源文件 package day10.about_serv ...
- servlet中servletContext的五大作用(二)
1. 获取web的上下文路径 2. 获取全局的参数 3. 作为域对象使用 4. 请求转发 5. 读取web项目的资源文件 package day10.about_serv ...
- servlet中servletContext的五大作用(四)
1. 获取web的上下文路径 2. 获取全局的参数 3. 作为域对象使用 4. 请求转发 5. 读取web项目的资源文件 package day10.about_serv ...
- servlet中servletContext的五大作用(一)
获取web的上下文路径 获取全局的参数 作为域对象使用 请求转发 读取web项目的资源文件 package day10.about_servletcontext.get_path; /** * 首先区 ...
- web中servletcontext和applicationContext
参看:http://www.cnblogs.com/isisbenben/p/5594323.html servletContext和ApplicationContext有什么区别 servletCo ...
- [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别
原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...
- JavaWeb(一)Servlet中的ServletConfig与ServletContext
前言 前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理.这里我们做一个简单的回顾! 什么是Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即: ...
- Java第三阶段学习(十一、Servlet基础、servlet中的方法、servlet的配置、ServletContext对象)
一.Servlet简介 1.什么是servlet: sun公司提供的一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API动态的向 ...
- servlet中的ServletContext对象
ServletContext官方叫Servlet上下文.服务器会为每一个Web应用创建一个ServletContext对象.这个对象全局唯一,而且Web应用 中的所有Servlet都共享这个对象(在整 ...
随机推荐
- C++:常量
/** https://www.runoob.com/cplusplus/cpp-constants-literals.html * 常量: 固定值,一旦定义不能被修改 * 整数常量:可以是十进制.八 ...
- noip模拟23[联·赛·题]
\(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好 ...
- python的代码块和if条件表达式
代码块和if条件表达式 代码块 什么是代码块 以冒号作为开始,用缩进来划分作用域. 在之后的学习当中,使用if条件语句.for.while循环语句.定义函数.定义类等诸多地方都会涵盖代码的概念. 什么 ...
- [源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator
[源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator 目录 [源码解析] 深度学习分布式训练框架 horovod (19) --- kub ...
- Kafka之--多zookeeper,多broker之搭建
闲来如事,突发兴趣倒腾一下了kafka.其实类似环境搭建的博客很多,我这里算是整合一下,另外写出自己的过程与看法.完整的过程如下: 1)先准备好3台服务器.我准备的机器hostname/ip为: ka ...
- 用activiti实现类似钉钉审批流程-附整个系统源码
前言 目前市场上有很多开源平台没有整合工作流,即使有,也是价格不菲的商业版,来看这篇文章的估计也了解了行情,肯定不便宜.我这个快速开发平台在系统基础功能(用户管理,部门管理-)上整合了工作流,你可以直 ...
- 阿里云RocketMQ定时/延迟消息队列实现
新的阅读体验:http://www.zhouhong.icu/post/157 一.业务需求 需要实现一个提前二十分钟通知用户去做某件事的一个业务,拿到这个业务首先想到的最简单得方法就是使用Redis ...
- 还有更惨的吗?字节面经,美团,网易,招银,360全部在HR前一面挂了
最近一朋友向我吐槽去年的秋招,字节面经,美团,网易,招银,360全部在HR前一面挂了,实在是有点惨.我把他语无伦次的话做了一个整理: 最近真的很暴躁,控制不住自己陷入情绪低落胡思乱想,每天都是在希望失 ...
- 中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)
前言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~.缩减HC.裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀.但博主始终相信,寒冬之 ...
- javaSE面向对象编程
面向对象编程 构造器 构造器就是和类名相同但无返回类型的方法. public class Person { //一个类即使什么都不写,它也会存在一个方法 //显示的定义构造器 String name; ...