zoukankan      html  css  js  c++  java
  • 进入黑马day4Serlet与Tomcat

    Servlet运行过程:

    1、配置Preferences/MyEclipse Enterprise Workbench/Servers/Tomcat

    /Tomcat6.x,注意勾选Enable

    2、deploy MyEclipse J2ee project to Service

    3、Start Tomcat 6.x

    4、在网页中输入http://localhost/项目名/url-pattern(web.xml配置的引用名)

    如:http://localhost/day4/servlet/Demo1

    Web.xml配置

    1、参数

    <context-param>

    <param-name>data0</param-name>

    <param-value>aaaaaaa</param-value>

    </context-param>

    <servlet>

    2、初始化参数

    <init-param>

                <param-name>data1</param-name>

                <param-value>累啊</param-value>

        </init-param>

        <init-param>

                <param-name>data2</param-name>

                <param-value>好累啊</param-value>

        </init-param>

        <init-param>

                <param-name>data3</param-name>

                <param-value>非常累啊</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>//设置服务器启动时该Servlet第几个加载

    </servlet>

    Demo1.java

    在doGet方法中加入代码

    1、关于ServletConfig

    ServletConfig config = this.getServletConfig();

    String data0 = config.getInitParameter("data0");

    System.out.println(data0);

    Enumeration en = config.getInitParameterNames();

    while(en.hasMoreElements()){

    String str = (String)en.nextElement();

    System.out.println(str+config.getInitParameter(str));

    }

    运行Servlet后,控制台输出

    null

    data2好累啊

    data3非常累啊

    data1累啊

    说明config不能获取<servlet>外面的参数

    2、关于ServletContext

    ServletContext context =this.getServletContext();

    String data0 = context.getInitParameter("data0");

    System.out.println(data0);

    String data1 = (String)context.getAttribute("data1");

    System.out.println(data1);

    运行Servlet后,控制台输出

    aaaaaaa

    Null

    说明ServletContext可以用获取<context-param>中的值而不能获取<init-param>的值

    所以获取<init-param>的值用ServletConfig,获取<context-param>ServletContext

    关于response响应

    response.getOutputStream().write("怎么回事呢".getBytes());

    返回响应到浏览器

    关于Request请求转移

    Dispatcher pathcher =request.getRequestDispatcher("/12.html");

    pathcher.forward(request, response);

    <servlet-mapping>虚拟路径可以配置多个

    例如:

    <servlet-mapping>

        <servlet-name>Demo1</servlet-name>

        <url-pattern>/servlet/Demo1</url-pattern>

      </servlet-mapping>

       <servlet-mapping>

        <servlet-name>Demo1</servlet-name>

        <url-pattern>/aaa</url-pattern>

      </servlet-mapping>

    则可以通过http://localhost/day4/aaa访问

    如果<servlet-mapping>虚拟路径同时配置如下的一些映射关系:

    Servlet1 映射到 /abc/* 

    Servlet2 映射到 /* 

    Servlet3 映射到 /abc 

    Servlet4 映射到 *.do 

    问题:

    当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet1

    当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet3

    当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet1

    当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet2

    当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet2

    //利用ServletContext读取资源文件

    ServletContext context = this.getServletContext();

    //该路径相对于Tomcat中web应用day4文件夹的路径

    InputStream in = context.getResourceAsStream("/1.properties");

    Properties p  = new Properties();

    p.load(in);

    System.out.println(p.getProperty("username"));

    //利用TomCat 加载web应用classes中类的加载器获取资源文件

    1、利用类加载器获取路径,再用FileInputStream加载,这样就可以避免出现类加载器已有缓存中的资源文件

    ClassLoader loader = this.getClass().getClassLoader();

    //该路径相对于WEB_INF/classes

    URL urlPath = loader.getResource("../../1.properties");

    String path = urlPath.getPath();

    FileInputStream in = new FileInputStream(path);

    2、直接用类加载器加载资源文件,该方法不能实时更新资源文件

    ClassLoader loader = this.getClass().getClassLoader();

    InputStream in

     =  loader.getResourceAsStream("../../1.properties");                   

             Properties p = new Properties();

  • 相关阅读:
    从goauth2的一个bug说起
    Vagrant与skynet框架
    离开博客园了
    (转) Android开发性能优化简介
    ListFragment源码 (待分析)
    Activity来了
    Android下的屏幕适配
    恶心的content
    Android下的xml资源详解
    各个页面样子的实现与演示
  • 原文地址:https://www.cnblogs.com/kuyuyingzi/p/4266422.html
Copyright © 2011-2022 走看看