1. 获取web的上下文路径
  2. 获取全局的参数
  3. 作为域对象使用
  4. 请求转发
  5. 读取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的五大作用(一)的更多相关文章

  1. servlet中servletContext的五大作用(三)

    1.    获取web的上下文路径 2.    获取全局的参数 3.    作为域对象使用 4.    请求转发 5.    读取web项目的资源文件 package day10.about_serv ...

  2. servlet中servletContext的五大作用(二)

    1.    获取web的上下文路径 2.    获取全局的参数 3.    作为域对象使用 4.    请求转发 5.    读取web项目的资源文件 package day10.about_serv ...

  3. servlet中servletContext的五大作用(四)

    1.    获取web的上下文路径 2.    获取全局的参数 3.    作为域对象使用 4.    请求转发 5.    读取web项目的资源文件 package day10.about_serv ...

  4. servlet中servletContext的五大作用(五)

    1.    获取web的上下文路径 2.    获取全局的参数 3.    作为域对象使用 4.    请求转发 5.    读取web项目的资源文件 package day10.about_serv ...

  5. web中servletcontext和applicationContext

    参看:http://www.cnblogs.com/isisbenben/p/5594323.html servletContext和ApplicationContext有什么区别 servletCo ...

  6. JavaWeb(一)Servlet中的ServletConfig与ServletContext

    前言 前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理.这里我们做一个简单的回顾! 什么是Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即: ...

  7. Java第三阶段学习(十一、Servlet基础、servlet中的方法、servlet的配置、ServletContext对象)

    一.Servlet简介  1.什么是servlet: sun公司提供的一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API动态的向 ...

  8. [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别

    原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...

  9. servlet中的ServletContext对象

    ServletContext官方叫Servlet上下文.服务器会为每一个Web应用创建一个ServletContext对象.这个对象全局唯一,而且Web应用 中的所有Servlet都共享这个对象(在整 ...

随机推荐

  1. 大疆M3508、M2006必备CAN总线知识与配置方法

    使用大疆M3508.M2006的CAN总线知识与配置方法 目录 使用大疆M3508.M2006的CAN总线知识与配置方法 前言: 0x00 需要额外的CAN收发器!!! 0x01 硬件层面分析 为什么 ...

  2. 【学习笔记】conda总结

    conda常用命令 conda create -n name python=x.x #创建环境 conda activate name #进入环境 conda deactivate #退出环境 con ...

  3. Jenkins 进阶篇 - 参数化构建

    我们在构建任务时经常会遇到这样的情景,一个任务配置好了以后,在后面的构建过程中,又会修改一些配置.例如,我们构建项目的代码可能是拉取指定的分支或者是Tag进行构建,又或者是在构建是需要指定特定的运行平 ...

  4. [BSidesCF 2020]Had a bad day 1--PHP伪协议

    首先先打开主页,审查代码,并没有什么特别的地方使用dirsearch,发现flag.php![在这里插入图片描述](https://img-blog.csdnimg.cn/82348deddfd94c ...

  5. Python -- 长字符串

    如果需要写一个非常非常长的字符串,它需要跨多行,那么,可以使用三个引号代替普通引号. print '''This is a very long string. It continues here. A ...

  6. 定时任务quartz

      pom引入 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qua ...

  7. php获取当前用户ip

    function wcs_get_onlineip() { $onlineip = ''; if(getenv('HTTP_CLIENT_IP') && strcasecmp(gete ...

  8. HashMap的转化时机

    HashMap的转化时机 /** * 使用红黑树(而不是链表)来存放元素.当向至少具有这么多节点的链表再添加元素时,链表就将转换为红黑树. * 该值必须大于2,并且应该至少为8,以便于删除红黑树时转回 ...

  9. linux笔记全(无图版)

    1.ls 查看当前目录下的所有内容 黑色的是文件,蓝色的是文件夹,也就是目录 2.rm -f anaconda-ks. cfg 彻底删除文件(如不确定,则需要先保存备份,也就是快照) 3.ifconf ...

  10. IP地址,InetAddress类的使用

    IP地址 IP地址:InetAddress(没有构造器,通过静态方法返回) java.net包下 唯一定位一台网络上的计算机 127.0.0.1:本机localhost ip地址的分类 IPV4/IP ...