• servletconfig和servletcontext学习


    servletconfig

      java.lang.String getInitParameter(java.lang.String name)  //根据参数名获取参数值

      java.util.Enumeration getInitParameterNames()    //获取所有参数

    servletcontext

      java.lang.String getContextPath()   --得到当前web应用的路径

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

      java.util.Enumeration getInitParameterNames() 

      void setAttribute(java.lang.String name, java.lang.Object object) --域对象有关的方法

      java.lang.Object getAttribute(java.lang.String name)  

      void removeAttribute(java.lang.String name)

      RequestDispatcher getRequestDispatcher(java.lang.String path)   --转发(类似于重定向)

      java.lang.String getRealPath(java.lang.String path)     --得到web应用的资源文件

      java.io.InputStream re(java.lang.String path)  

    区别

      一个是把servlet配置封装到servlet中(servletconfig)

      一个web.xml整个文件信息封装(servletcontext)

      一个web项目可以存在多个servletconfig但是只能存在一个servletcontext

    servletconfig应用场景配置信息

      列如:读文件的路径改变时需要频繁修改信息

        解决方案:把配置文件写入到servlet中

          <servlet>

            <servlet-name></servlet-name>

            <servlet-class></servlet-class>

            <init-param>

              <param-name>path</param-name>//这是参数名

              <param-value>c:/a.txt</param-value>//可以在这里修改路径

            </init-param>

          </servlet>

      调用

      写一个servlet(Demo)继承httpservlet

      this.getServletConfig("path");//this代表了当前类(Demo) getsetvletconfig是sun公司封装config方法 返回的是value

    servletcontext

    servletContext被sun公司封装在servleconfig中所以调用的时候为servletcontext contest = config.getServletContext();或者servletcontext contest =this.servletcontext

    Sun公司设计

    1)创建ServletContext对象   ServletContext  context = new ServletContext()

    2)创建ServletConfig对象   

                 ServetConfig config = new ServletConfig();

                                                 config.setServletContxt(context);

          class  ServletConfig{

          ServletContext context;

          public ServletContext getServletContxt(){

          return contxt;

          }

          }    

          public void init( ServletConfig config ){

          得到ServletConfig对象

          从ServletConfig对象中得到ServletContext对象

          SerlvetContext context = config.getServletContext();

          }

     获取路径

        String str = this.getServletContext().getContextPath();//str为  /+当前项目名称(应用与请求重定向资源路径中)

    contextpath应用一(转发)

        this.getServletContext().getRequestDispatcherType("path").forward(request,response);

    应用与域对象保存分享数据(但是会覆盖原来的数据)

    加载外部资源

        String path = this.getServletContext().getRealPath("资源路径");// "/WEB-INF/class/db.properties"

    加载外部资源比较

      例如src下有一个外部文件db.properties

      java项目 获取路径为"./src/db.properties"

      web项目 用函数getRealPath()或者getResourseAsStream();

     

    为什么不能用 " . "获取

      因为 . 代表的是java当前运行的目录(servlet中在tomcat服务器的bin目录下面)所以不建议

      

  • 相关阅读:
    ubuntu18.04 安装 jdk
    MySQL集群(PXC)入门
    Synchronized 详解
    Java多线程之内存可见性
    MySQL8.0新特性
    vue配置域名访问
    debain8 安装mysql8
    idea 激活步骤
    spring boot 设置tomcat post参数限制
    人脸识别技术全面总结:从传统方法到深度学习[转载自机器之心]
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/7704213.html
Copyright © 2020-2023  润新知