zoukankan      html  css  js  c++  java
  • Servlet解刨

    1:使用Java EE版本的Eclipse开发动态的WEB工程(Java WEB项目)
     1)把开发选项切换到Java EE
     2)可以window->show view中找到package Explore,把其拖到开发区左边
     3)在Servers面板中新建Tomcat服务器
     4)新建Dynamic Web project(动态web工程) ,其中Target Runtime需要选择Tomcat
     5)开发Java Web应用
     6)可以通过run on server 运行 WEB项目
     
     2:ServLet的HelloWorld
       1)创建一个ServLet接口实现类
       2)在web.xml文件中配置和映射ServLet
       <servlet>
         <servlet-name>helloServlet</servlet-name>
         <servlet-class>com.test.HelloServlet</servlet-class>
       </servlet>
      <servlet-mapping>
         <servlet-name>helloServlet</servlet-name>
         <url-pattern>/hello</url-pattern>
      </servlet-mapping>
      
       3)浏览器访问ServLet通过<url-pattern>/hello</url-pattern>
       
     3:servLet容器:运行ServLet,JSP,Filter,Listener
      1)可以来创建ServLet,并调用ServLet的相关生命周期方法
      2)JSP,Filter,Listen,Tag...运行在ServLet容器中
     
     4:ServLet生命周期的方法:以下方法都是由ServLet容器负责调用
      1)构造器:第一次请求ServLet时,创建ServLet的实例,调用构造器(说明是ServLet一个单实例)
      2)init:只被调用一次,在ServLet容器被实例化后立即调用,用于初始化ServLet
      3)service:被多次调用,每次调用时都会调用service方法,实际用于响应请求
      4)destory:在ServLet容器销毁时调用,只被调用一次,释放ServLet当前所占用的资源
      
     5:load-on-startup:在被加载时创建实例
     
     6:关于servlet-mapping
      1)同一个servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置可以是同一个servlet的注册名
      2)再Servlet映射到URL中也可以使用*(通配符),但是只能有2种固定格式
        一种是:*.扩展名(html,jsp),另外一种是:/*
        <servlet-mapping>
         <servlet-name>helloServlet</servlet-name>
         <url-pattern>*.html</url-pattern>
      </servlet-mapping>
      
      <servlet-mapping>
         <servlet-name>helloServlet</servlet-name>
         <url-pattern>/*</url-pattern>
      </servlet-mapping>
      以下是不合法的:
      <servlet-mapping>
         <servlet-name>helloServlet</servlet-name>
         <url-pattern>/*.html</url-pattern>
      </servlet-mapping>
      
     7:ServletConfig:是一个接口,封装了servlet配置信息,并且可以获取ServletContext对象
       1) 配置ServLet初始化参数 
       <init-param>
              <param-name>user</param-name>
              <param-value>root</param-value>
          </init-param>
          <init-param>
              <param-name>password</param-name>
              <param-value>123</param-value>
          </init-param>
       2):获取初始化参数:getInitParameter(String name):获取指定参数名的初始化参数
           getInitParameterName();获取参数名组成的Enumeration对象
           String user=servletConfig.getInitParameter("user");
    String password=servletConfig.getInitParameter("password");
    System.out.println("用户:"+user+",密码:"+password);
    Enumeration<String> names=servletConfig.getInitParameterNames();
    while(names.hasMoreElements()){
    String name=names.nextElement();
    String value=servletConfig.getInitParameter(name);
    System.out.println("^^"+name+":"+value);
    }
       3):ServletContext:是一个接口(是ServLet上下文)
        Sevlet引擎为每一个WEB应用程序都创建一个对应的ServletContext对象,包含在ServletConfig对象中
        调用ServletConfig.getServletContext方法可以返回ServletContext对应的引用
        --由于每一个Servlet WEB应用程序共享ServletContext对象,所以ServletContext是application(应用):用于保存所有用户的公共的数据信息
      ①获取当前web应用程序的初始化参数
      设置初始化参数:servletContext可以为所有的Servlet所获取,而Servlet的初始化参数只能被指定的一个servlet获取
       <!-- 配置当前WEB应用程序的初始化参数 -->
      <context-param>
          <param-name>driver</param-name>
          <param-value>com.mysql.jdbc.Driver</param-value>
      </context-param>
      <context-param>
          <param-name>jdbcUrl</param-name>
          <param-value>jdbc:mysql://localhost/testjdbc</param-value>
      </context-param>
      <context-param>
          <param-name>user</param-name>
          <param-value>root</param-value>
      </context-param>
      <context-param>
          <param-name>password</param-name>
          <param-value>123456</param-value>
      </context-param>
      
      方法:
      ServletContext servletContext=servletConfig.getServletContext();
    String  driver=servletContext.getInitParameter("driver");
    String  jdbcUrl=servletContext.getInitParameter("jdbcUrl");
    String  user=servletContext.getInitParameter("user");
    String  passwords=servletContext.getInitParameter("password");
    System.out.println("driver:"+driver);
    System.out.println("jdbcUrl:"+jdbcUrl);
    System.out.println("user:"+user);
    System.out.println("passwords:"+passwords);
    System.out.println("--------------------------- ");
    Enumeration<String> names2=servletContext.getInitParameterNames();
    while(names2.hasMoreElements()){
    String name2=names2.nextElement();
    String value=servletContext.getInitParameter(name2);
    System.out.println(name2+"-->"+value);
    }
      ②获取当前WEB应用的某一个文件绝对路径:getRealPath()方法,不是文件部署前的路径
      ③获取当前WEB应用的根目录名称:
      
           String contextPath=servletContext.getContextPath();
    System.out.println("WEB根目录名称:"+contextPath);
      ④获取当前WEB应用的某一个文件对应的输入流
       getResourceAsStream(String path):path的/ 为相当于当前WEB应用的路径
        InputStream isInputStream2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
              System.out.println("2."+isInputStream2);
          

    jdbc.properties

    driver=com.mysql.jdbc.Driver
    jdbcUrl=jdbc:mysql://localhost/testjdbc</param-value>
    user=root
    password=123456

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>Servlet1</display-name>
      <!-- 配置当前WEB应用程序的初始化参数 -->
      <context-param>
          <param-name>driver</param-name>
          <param-value>com.mysql.jdbc.Driver</param-value>
      </context-param>
      <context-param>
          <param-name>jdbcUrl</param-name>
          <param-value>jdbc:mysql://localhost/testjdbc</param-value>
      </context-param>
      <context-param>
          <param-name>user</param-name>
          <param-value>root</param-value>
      </context-param>
      <context-param>
          <param-name>password</param-name>
          <param-value>123456</param-value>
      </context-param>
      <!--  配置和映射ServLet-->
      <servlet>
          <!-- ServLet注册的名字  -->
         <servlet-name>helloServlet</servlet-name>
          <!-- ServLet的全类名 -->
         <servlet-class>com.test.HelloServlet</servlet-class>
         <!-- 配置ServLet初始化参数  -->
          <init-param>
              <param-name>user</param-name>
              <param-value>root</param-value>
          </init-param>
          <init-param>
              <param-name>password</param-name>
              <param-value>123</param-value>
          </init-param>
      </servlet>
      <servlet-mapping>
       <!-- 需要和某一个ServLet节点的servlet-name子节点保持一致 -->
         <servlet-name>helloServlet</servlet-name>
          <!-- 映射具体访问路径:/当前WEB应用的根目录 -->
         <url-pattern>/hello</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

  • 相关阅读:
    (hdu step 7.1.2)You can Solve a Geometry Problem too(乞讨n条线段,相交两者之间的段数)
    阅读&lt;反欺骗的艺术&gt;思考
    顺序查找(改进)
    win7电脑那些事
    激活office 2010
    MyEclipse10安装SVN插件
    合并排序法
    希尔排序法
    直接插入排序法
    快速排序法——较优方法
  • 原文地址:https://www.cnblogs.com/oycq9999/p/10222060.html
Copyright © 2011-2022 走看看