servlet中servletContext的五大作用(一)
- 获取web的上下文路径
- 获取全局的参数
- 作为域对象使用
- 请求转发
- 读取web项目的资源文件
package day10.about_servletcontext.get_path;
/**
* 首先区别:
* 一个网站只有一个ServletContext对象
* 而每一个Servlet都有一个ServletConfig对象
*
* 但是我们拿Context对象的话,其实是通过Config对象去
* 拿的,因为每一个ServletConfig中都有一个ServletContext
* 的成员变量;
*
* 其次因为ServletConfig是在ServletContext之前创建的;
* 因为ServletContext是在启动的时候创建的
* 而ServletConfig对象是在调用init方法之前创建的。
*
java中获取ServletContext的常见方法
1.在javax.servlet.Filter中直接获取
ServletContext context = config.getServletContext();
2.在HttpServlet中直接获取
this.getServletContext()
3.在其他方法中,通过HttpRequest获得
request.getSession().getServletContext();
*/
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 【context对象的作用—1】:获取web的上下文路径
* getContextPath();
*
*
* @author mzy
*
*/
public class ContextDemo01 extends HttpServlet {
private static final long serialVersionUID = -4556050230938613373L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 1.1:首先要获取到ServletContext对象
/*
* 这种方法原则上没有错:
* 因为加载的顺序上是config在context之前
* 并且context必须通过config对象来获取,
* 但是java设计者为了简化我们的代码,
* 在源码中重新写了这部分;
*
* 他将
* this.getServletConfig().getServletContext();
* 封装到了源码的 getServletContext()的方法中了;
* 但是我们还是需要记得获取context对象必须要获得
* config对象;
*
* 获得context对象,必须要通过config对象来获取;
*
* 以下只是代码的简化而已
*
*/
// ServletContext context = this.getServletConfig().getServletContext();
ServletContext context = this.getServletContext();
String path = context.getContextPath();
System.out.println(path);
/*
* 以上就是上下文路径:但是需要注意的是,当我们在eclipse或者myeclipse中修改
* 项目名称的时候,我们修改了之后其实它的上下文路径是没有变的;
* 比如我们原来项目叫做 myday09,修改为myday10之后,我们run这个项目下的文件
* 最后跑出来的时候,可以看见项目名依旧是myday09,所以这个时候的context我们
* 需要去tomcat中改文件夹名称,或者:右键项目Properties-->myeclipse-->web
* -->context root 修改
*
* 当然新版本的myeclipse中没有这种问题,但是老版的myeclipse和eclipse中可能
* 存在这种问题需要注意
*/
// String path = context.getContextPath(); 获取上下文路径的好处??
// 主要表现在做请求重定向的时候
response.sendRedirect("/MyFirstServlet/hello.html");
// 作用可以让这个获取文件的路径更加的灵活
response.sendRedirect(context.getContextPath() + "/hello.html");
}
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的五大作用(五)
1. 获取web的上下文路径 2. 获取全局的参数 3. 作为域对象使用 4. 请求转发 5. 读取web项目的资源文件 package day10.about_serv ...
- web中servletcontext和applicationContext
参看:http://www.cnblogs.com/isisbenben/p/5594323.html servletContext和ApplicationContext有什么区别 servletCo ...
- JavaWeb(一)Servlet中的ServletConfig与ServletContext
前言 前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理.这里我们做一个简单的回顾! 什么是Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即: ...
- Java第三阶段学习(十一、Servlet基础、servlet中的方法、servlet的配置、ServletContext对象)
一.Servlet简介 1.什么是servlet: sun公司提供的一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API动态的向 ...
- [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别
原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...
- servlet中的ServletContext对象
ServletContext官方叫Servlet上下文.服务器会为每一个Web应用创建一个ServletContext对象.这个对象全局唯一,而且Web应用 中的所有Servlet都共享这个对象(在整 ...
随机推荐
- Day9 数组 冒泡排序及稀疏数组!
数组 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.(下标从0开始) 数 ...
- 【动画消消乐】HTML+CSS 自定义加载动画 064(currentColor的妙用!)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- debian9 python环境设置
file /usr/bin/python which python2 which python3 mv /usr/bin/python /usr/bin/python_bk ln -s /usr/bi ...
- Cesium产品体系
Cesium是国外Analytical Graphics, Inc.公司开发的一款基于JavaScript 的使用WebGL的地图引擎.Cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制 ...
- Super-Mario-Host(超级玛丽)靶机
仅供个人娱乐 靶机百度云下载 链接:https://pan.baidu.com/s/13l1FUgJjXArfoTOfcmPsbA 提取码:a8ox 一.主机发现 arp-scan -l 二.漏洞扫 ...
- Spring Boot实现数据访问计数器
1.数据访问计数器 在Spring Boot项目中,有时需要数据访问计数器.大致有下列三种情形: 1)纯计数:如登录的密码错误计数,超过门限N次,则表示计数器满,此时可进行下一步处理,如锁定该账户 ...
- python中单例模式的创建
# 单例模式(使用装饰器) def singleton(cls): instance = {} def wrapper(*args,**kwargs): if cls not in instance: ...
- 对HashMap的一次记录
HashMap的具体学习,认识了解. 前言 也是最近开始面试才发现,HashMap是问的真多.以前听学长或自己在网上看到过一些面试资料都在说集合.线程这块比较重要,面试的重点.自己也是有那抵触情绪,所 ...
- 攻防世界pwn高手区——pwn1
攻防世界 -- pwn1 攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了. 题目流程 拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞.在gdb中 ...
- 关于:org.apache.catalina.connector.ClientAbortException及getOutputStream() has already been called for this response的异常处理
1.异常场景: 在进行将数据用word导出或者Excel导出的时候.抛出的异常getOutputStream() has already been called for this response 导 ...