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目录下面)所以不建议

      

  • 相关阅读:
    有關window.showModalDialog的應用11/30
    phpmyadmin的查詢不出現10/29
    那點事情我沒有精力做10/17
    水晶報表System.InvalidCastException: 指定的轉換無效11/30
    水晶報表匯出時System.InvalidCastException:指定的格式無效10/29
    读博日记(C#常用开源类库收集
    ASP.net通过JQuery实现Ajax操作
    仿Discuz!的论坛评分发帖弹出提示并渐渐消失的效果
    仿Discuz文本框弹出层的效果
    C#开源资源大汇总
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/7704213.html
Copyright © 2011-2022 走看看