首页 > 其他分享 >ServletContext对象

ServletContext对象

时间:2022-10-19 16:07:57浏览次数:48  
标签:web 对象 getServletContext ServletContext import servlet


ServletContext对象


1.引入


ServletContext对象 ,叫做Servlet的上下文对象。表示一个当前的web应用环境。一个web应用中只有一个ServletContext对象。



2.对象创建和得到


创建时机:加载web应用时创建ServletContext对象。


得到对象: 从ServletConfig对象的getServletContext方法得到



3.ServletContext对象的核心API(作用)




得到web应用路径:



context.getContextPath();得到当前web应用的路径,部署到tomcat服务器上运行的web应用名称。即项目名称。



request.getContextPath();  等价于上面的代码



得到web应用参数:



context.getInitParameter("name");



context.getInitParameterNames();



域对象:



context.setAttribute("name",Object): 保存数据



context.getAttribute("name")   得到数据



context.removeAttribue("name")  清除数据



转发



context.getRequestDispatcher("路径").forward(request,response);



request.getRequestDispacher("路径").forward(request,response);  等价于上面的代码



得到web应用中的资源文件



context.getRealPath("路径")



context.getResourceAsStream("路径");



4.得到web应用路径


java.lang.String getContextPath()  用在请求重定向的资源名称中



​​package com.cn.servlet;​​​​​​​​import java.io.IOException;​​​​import java.io.PrintWriter;​​​​import java.util.Enumeration;​​​​​​​​import javax.servlet.ServletConfig;​​​​import javax.servlet.ServletContext;​​​​import javax.servlet.ServletException;​​​​import javax.servlet.http.HttpServlet;​​​​import javax.servlet.http.HttpServletRequest;​​​​import javax.servlet.http.HttpServletResponse;​​​​​​​​public class ServletContextDemo extends HttpServlet {​​​​​​​​ public void doGet(HttpServletRequest request, HttpServletResponse response)​​​​     throws ServletException, IOException {​​​​    /*​​​​     * 得到ServletContext对象​​​​    */​​​​//   ServletContext context = this.getServletConfig().getServletContext();​​​​   ServletContext context = this.getServletContext();​​​​    ​​​​    /*​​​​     * 得到web应用路径    /myweb​​​​     * web应用路径:部署到tomcat服务器上运行的web应用名称。即项目名称。​​​​    */​​​​   String contextPath = context.getContextPath();​​​​    ​​​​    System.out.println("contextPath->" + contextPath);​​​​   response.getWriter().write("hello , this project name is " + contextPath);​​​​    ​​​​    /**​​​​    * 案例:应用到请求重定向​​​​     * 假如项目名称改变,需要修改下面代码中的项目名称,很麻烦。​​​​    */​​​​//   response.sendRedirect("/myweb/index.jsp");​​​​//    response.sendRedirect(contextPath + "/ServletContextDemo2?myname=liuzhiyong");​​​​    ​​​​    Enumeration<String> initParameterNames = this.getServletContext().getInitParameterNames();​​​​    while(initParameterNames.hasMoreElements()){​​​​      String parameterName = initParameterNames.nextElement();​​​​      String parameterValue = this.getServletContext().getInitParameter(parameterName);​​​​     System.out.println("parameterName:" +  parameterValue);​​​​   }​​​​   ​​​​    String pathName = this.getServletConfig().getInitParameter("path");​​​​   System.out.println("pathName:" + pathName);​​​​​​​​   this.getServletContext().setAttribute("myname", "木丁西");​​​​   this.getServletContext().setAttribute("age", 22);​​​​   this.getServletContext().setAttribute("salary", 33.339);​​​​    ​​​​    Student student = new Student();​​​​    student.setName("刘先森");​​​​   student.setAge(18);​​​​   student.setSalary(20000);​​​​   ​​​​    this.getServletContext().setAttribute("student", student);​​​​  }​​​​}​​



5.得到web应用的初始化参数(全局) 


java.lang.String getInitParameter(java.lang.String name)  --得到web应用的初始化参数


java.util.Enumeration getInitParameterNames()  



注意:web应用参数可以让当前web应用的所有servlet获取!!!


​​package com.cn.servlet;​​​​​​​​import java.io.IOException;​​​​import java.io.PrintWriter;​​​​​​​​import javax.servlet.RequestDispatcher;​​​​import javax.servlet.ServletException;​​​​import javax.servlet.http.HttpServlet;​​​​import javax.servlet.http.HttpServletRequest;​​​​import javax.servlet.http.HttpServletResponse;​​​​​​​​public class ServletContextDemo2 extends HttpServlet {​​​​​​​​ public void doGet(HttpServletRequest request, HttpServletResponse response)​​​​     throws ServletException, IOException {​​​​    ​​​​    /*​​​​     * 得到web应用的初始化参数​​​​     */​​​​   String myname = this.getServletContext().getInitParameter("myname");​​​​    System.out.println("myname:" + myname);​​​​   ​​​​    ​​​​    String myname2 = (String)this.getServletContext().getAttribute("myname");​​​​   int age = (Integer)this.getServletContext().getAttribute("age");​​​​    double salary = (Double)this.getServletContext().getAttribute("salary");​​​​    ​​​​    System.out.println(myname2 + "-" + age + "-" + salary);​​​​   ​​​​    Student stu = (Student)this.getServletContext().getAttribute("student");​​​​    System.out.println(stu);​​​​    ​​​​  } ​​​​​​​​}​​



6.域对象有关的方法


域对象:作用是用于保存数据,获取数据。可以在不同的动态资源之间共享数据。




方案1: 可以通过传递参数的形式,共享数据。局限:只能传递字符串类型。


方案2: 可以使用域对象共享数据,好处:可以共享任何类型的数据!!!!!



注意:ServletContext就是一个域对象!!!!




获取数据: java.lang.Object getAttribute(java.lang.String name)  


删除数据: void removeAttribute(java.lang.String name)  



ServletContext域对象:作用范围在整个web应用中有效!!!



所有域对象:


HttpServletRequet 域对象


ServletContext域对象


HttpSession 域对象


PageContext域对象,属于jsp中的内置对象



7.转发





1)转发




 b) 转发只能转发到当前web应用内的资源


c)可以在转发过程中,可以把数据保存到request域对象中



2)重定向


a)地址栏会改变,变成重定向到地址。


b) 重定向可以跳转到当前web应用,或其他web应用,甚至是外部域名网站。


c)不能在重定向的过程,把数据保存到request中。



结论: 如果要使用request域对象进行数据共享,只能用转发技术!!!



标签:web,对象,getServletContext,ServletContext,import,servlet
From: https://blog.51cto.com/u_15769923/5775569

相关文章

  • ServletConfig对象
    ServletConfig对象作用ServletConfig对象:主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)......
  • Kubernetes--管理Pod对象的容器(2)
    自定义运行的容器化应用由Docker镜像启动容器时运行的应用程序在相应的Dockerfile中由ENTRYPOINT指令进行定义,传递给程序的参数则通过CMD指令指定,ENTRYPOINT指令不存在时......
  • SQLBackupAndFTP Features & PricesDownloadBuyLinuxMore 备份数据库到对象存储
    额,最近妖孽又开始泛滥了,怎么能把数据库备份到对象存储,避免丢数据SQLBackupAndFTPDownloadSQL备份和FTP可以做什么?SQLBackupAndFTP是一款软件,用于备份SQLServer、......
  • el-select选择对象value-key属性
    <el-rowv-for="(obj,idx)indeliveryList":key="idx"><el-col:span="8"><el-form-itemlabel="交付中心"><el-select......
  • 207. 面向对象(上)可变参数形参
    207.面向对象(上)可变参数形参jdk5.0新增的内容具体使用:​ 1,格式:数据类型...变量名​ 2,当调用可变个数形参的方法时,传入的参数可以时:0个,1......
  • pageContext对象
    【pageContext对象】//可以存储变量注意:这种存储方式只能在本页面获取,其他页面无法获取。pageContext.setAttribute("name","孙悟空");//获取方法为:Stringname=(St......
  • ini配置文件与ConfigParser对象
    ini配置文件与ConfigParser对象目录结构​​ini配置文件与ConfigParser对象​​​​ini配置文件简介​​​​configparser模块中的ConfigParser类​​​​常用方法​​​​......
  • 试验2 类与对象(2)
    试验任务4Complex.cpp#pragmaonce#include<iostream>#include<cmath>classComplex{public: Complex(); Complex(doublenewreal); Complex(doublenewreal,doubl......
  • ADO.NET中的五个主要对象
    Connection物件Connection对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在ADO.NET的最底层,我们可以自......
  • 203. 面向对象(上) 方法重载
    203.面向对象(上)方法重载方法的重载(overload)定义:在同一个类中,允许存在一个以上的同名方法,只要它的参数个数或参数类型不同即可."两同一不同":同一个类,相......