007-Java Web学习之ServletContext对象

声明:我的所有文章,都是对网上教学视频的整理,包括狂神说、尚硅谷、黑马程序员等等,用来作为参考资料,无任何商业使用,请广大网友参考,不喜勿喷,谢谢。
1、在hello2这个工程下,新建一个Module
在hello2上点击鼠标右键,弹出菜单中选择New->Module…
007-Java Web学习之ServletContext对象
利用模板建立一个webapp模块,点击Next
007-Java Web学习之ServletContext对象
填写相关信息,点击Next
007-Java Web学习之ServletContext对象
点击Finish
007-Java Web学习之ServletContext对象
2、新的模块建立之后,观察原来的hello2的pom.xml和servlet-02下的pom.xml
007-Java Web学习之ServletContext对象
我们会发现在hello2的pom.xml文件中,多了modules部分,在其里面增加了servlet-02这项
3、观察servlet-02下的pom.xml
007-Java Web学习之ServletContext对象
这时出现了一个严重的问题,自动生成的pom.xml中,没有对父工程的依赖,这会造成我们在后面编程时,无法使用父工程已经下载到本地仓库的jar包,所以,我们手动添加如下代码
007-Java Web学习之ServletContext对象
接下来,将后面的内容删除或变为注释(强烈推荐,我这里为了让大家看的清楚,所以选择了删除),使我们这个模块是一个干净的模块
007-Java Web学习之ServletContext对象
4、在servlet-02下的src->main目录下,建立java和resources目录,并标记
007-Java Web学习之ServletContext对象
5、用以前的方法,修改web.xml的内容
007-Java Web学习之ServletContext对象
6、在java目录下建立包com.kuang.servlet,包下建立HelloServlet类文件
007-Java Web学习之ServletContext对象
7、代码如下
007-Java Web学习之ServletContext对象
8、到web.xml中设置Servlet
007-Java Web学习之ServletContext对象
9、重新配置Tomcat,将原来部署的项目删掉,重新部署我们的servlet-02
先去除原项目
007-Java Web学习之ServletContext对象
点+号,重新部署新的项目
007-Java Web学习之ServletContext对象
注意映射路径
007-Java Web学习之ServletContext对象
10、启动Tomcat服务器
007-Java Web学习之ServletContext对象
走hello请求
007-Java Web学习之ServletContext对象
我们发现,页面上没有任何输出,但是在后台服务器上输出了一个Hello
007-Java Web学习之ServletContext对象
11、光标定位到HttpServlet上,然后按下F4,我们来查看这个类的源代码
007-Java Web学习之ServletContext对象
12、由于我们的HelloServlet继承了HttpServlet,所以,我们可以在当前对象中使用父类的方法,这里我们来看常见的几个方法
getInitParameter():获得初始化参数,我们可以在web.xml文件中设置这个Servlet的初始化参数
getServletConfig():获得Servlet配置
getServletContext():获得Servlet上下文对象
我们重点介绍上下文对象
13、ServletContext对象
Web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用,其地位如图所示:
007-Java Web学习之ServletContext对象
一个web应用可以有多个Servelt,那么通过ServletContext可以存放它们要共享的一些数据,代码示例如下:
007-Java Web学习之ServletContext对象
14、新建一个GetServlet,来读取我们刚才设定的值
007-Java Web学习之ServletContext对象
15、配置web.xml
007-Java Web学习之ServletContext对象
16、重新启动Tomcat
007-Java Web学习之ServletContext对象
启动成功后,我们先执行HelloServlet,来向ServletContext中存放数据
007-Java Web学习之ServletContext对象
然后,我们在执行GetServlet,看是否取得了我们刚才存放到ServletContext中的数据
007-Java Web学习之ServletContext对象
哈哈,是有数据出现了,但是怎么是乱码!怎么解决?这个留给大家自己考虑了。正确显示如下:
007-Java Web学习之ServletContext对象
思考:如果我不先执行HelloServlet,而是直接就执行GetServlet,结果是什么?
二、ServletContext应用
1、获得初始化参数,建立一个ServletDemo03,代码如下
007-Java Web学习之ServletContext对象
配置web.xml,在其中加入如下代码
007-Java Web学习之ServletContext对象
重启tomcat,在浏览器中输入http://localhost:8080/s2/gp,结果如下:
007-Java Web学习之ServletContext对象
2、请求转发
建立一个ServletDemo04,代码如下
ServletContext context = this.getServletContext();
context.getRequestDispatcher("/gp").forward(req,resp);
007-Java Web学习之ServletContext对象
配置web.xml,在其中加入如下代码
007-Java Web学习之ServletContext对象
重启tomcat,在浏览器中输入http://localhost:8080/s2/sd4,结果如下:
007-Java Web学习之ServletContext对象
其工作原理可以按照下图来理解,后面我们会介绍重定向怎么实现:
007-Java Web学习之ServletContext对象
3、读取资源文件
1)在resources目录下建立一个资源文件db.properties,其内容如下:
007-Java Web学习之ServletContext对象
启动tomcat,观察其在网站上部署的位置
007-Java Web学习之ServletContext对象
建立一个ServletDemo05类,代码如下:
007-Java Web学习之ServletContext对象
在web.xml中,添加内容如下:
007-Java Web学习之ServletContext对象
重启tomcat,输入后http://localhost:8080/s2/sd5,查看结果
007-Java Web学习之ServletContext对象
2)在其它位置建立一个资源文件,例如在包com.kuang.servlet下建立aa.properties,内容如下:
007-Java Web学习之ServletContext对象
重启tomcat后,我们查找看该文件被部署到什么位置?
007-Java Web学习之ServletContext对象
我们发现,该文件由于没有放在resources目录下,所以竟然没有被导出,怎么解决?参考以前的内容,我们给出了解决方案,修改这个模块的pom.xml文件,在其<bulid>部分加入下面的代码
007-Java Web学习之ServletContext对象
重启tomcat后,我们查找看该文件被部署到什么位置?
007-Java Web学习之ServletContext对象
我们发现,现在该资源文件已经被部署到我们的项目中了,这时,我们就可以编写程序去访问它,我们直接对刚才的ServletDemo05进行修改
007-Java Web学习之ServletContext对象
重启tomcat,输入后http://localhost:8080/s2/sd5,查看结果
007-Java Web学习之ServletContext对象
但是,我们细心观察的话,会发现资源目录中的db.properties文件没有被导出,而早期版本的IDEA就无此问题,神奇的IDEA,建议大家最好是把资源文件放在resources目录下,这样避免这样的问题出现。

猜你喜欢

转载自blog.51cto.com/12859164/2545397