zoukankan      html  css  js  c++  java
  • 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目录下面)所以不建议

      

  • 相关阅读:
    Springboot 之 自定义配置文件及读取配置文件
    SQLSERVER系统视图 sql server系统表详细说明
    MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义
    使用Ecplise git commit时出现"There are no stages files"
    maven添加sqlserver的jdbc驱动包
    java将XML文档转换成json格式数据
    java将XML文档转换成json格式数据
    cannot be resolved. It is indirectly referenced from required .class files
    org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-
    @Autowired注解和静态方法 NoClassDefFoundError could not initialize class 静态类
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/7704213.html
Copyright © 2011-2022 走看看