00-Servlet

开发动态项目

  1. 把开发选项切换到 JavaEE
  2. 可以在 Window -> Show View 中找到 Package Explorer, 并把其拖拽到开发区的左边
  3. 在 Servers 面板中新建 Tomcat 服务器. 一定要关联到 Tomcat 安装的根目录
  4. 新建一个 Dynamic Web Project. 其中 Target Runtime 需选择 Tomcat6.0
  5. 开发 Java WEB 应用
  6. 可以通过 run on server 来运行 WEB 项目

Servlet的HelloWord

  1. 创建一个Servlet接口的实现类
    public class HelloServlet implements Servlet
    并且重写里面的方法,现在不需要知道这些方法的具体作用
  2. 在web.xml文件中配置和映射这个Servlet

    
        
        helloServlet
        
        com.atguigu.javaweb.HelloServlet
    
    
    
        
        helloServlet
        
        /hello
    
 

Servlet生命周期的方法

一下方法都是由Serlvet容器负责调用

  1. 构造器
    • 只有第一次请求Servlet时,创建Servlet的实例,调用构造器,这说明Serlvet只实例一次
  2. init
    • 只被调用一次,创建好实例(此时构造器已经执行)后立即被调用,用于初始化当前的Servlet
  3. service
    • 被调用多次,每次请求都会调用service方法,实际用于响应请求的
  4. destroy
    • 只调用一次,在当前Servlet所在的WEB应用被卸载前调用,用于释放当前Servlet所占的资源

load-on-startup 参数

  1. 配置在 servlet 节点中

        
        secondServlet
        
        com.atguigu.javaweb.SecondServlet
        
        2
    

  1. load-on-startup
    • 可以指定 Serlvet 被创建的时机. 若为负数, 则在第一次请求时被创建.若为 0 或正数, 则在当前 WEB 应用被Serlvet 容器加载时创建实例, 且数组越小越早被创建

serlvet-mapping映射

  1. 注意事项1
    • 同一个Servlet可以被映射到多个URL上,即多个 元素的子元素的设置值可以是同一个Servlet的注册名
  2. 注意事项2
    • 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
      一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾

    secondServlet
    /*


OR


    secondServlet
    *.do


注意: 以下的既带 / 又带扩展名的不合法.


    secondServlet
    /*.action



ServletConfig

封装了Serlvet的配置信息,并且可以获取ServletContext对象

  1. 配置Serlvet的初始化参数

        helloServlet
        com.atguigu.javaweb.HelloServlet
        
        
        
            
            user
            
            root
        
        
        
            password
            1230
        
        
        -1
        
    

  1. 获取初始化参数
    getInitParameter(String name): 获取指定参数名的初始化参数
    > getInitParameterNames(): 获取参数名组成的 Enumeration 对象. 
    
    String user = servletConfig.getInitParameter("user");
    System.out.println("user: " + user);
    
    Enumeration names = servletConfig.getInitParameterNames();
    while(names.hasMoreElements()){
        String name = names.nextElement();
        String value = servletConfig.getInitParameter(name);
        System.out.println("^^" + name + ": " + value);
    }

ServletContext

  1. 可以由 SerlvetConfig 获取:
    ServletContext servletContext = servletConfig.getServletContext();
  2. 该对象代表当前 WEB 应用:
    • 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.
  3. 获取当前应用的初始化参数
    • 设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.


    driver
    com.mysql.jdbc.Driver

方法:

getInitParameter
getInitParameterNames   

代码:

ServletContext servletContext = servletConfig.getServletContext();
        
String driver = servletContext.getInitParameter("driver");
System.out.println("driver:" + driver);

Enumeration names2 = servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
    String name = names2.nextElement();
    System.out.println("-->" + name); 
}

  1. 获取当前WEB应用的某一个文件的绝对路径
    • 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径
    • getRealPath(String path);
    • 代码:
String realPath = servletContext.getRealPath("/note.txt");
System.out.println(realPath);
  1. 获取当前WEB应用的名称
    • getContextPath()
    • 代码:
String contextPath = servletContext.getContextPath();
System.out.println(contextPath); 
  1. 获取当前WEB应用的某一个文件对应的输入流
    • getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.
    • 代码
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
  1. 和 attribute 相关的几个方法

你可能感兴趣的:(00-Servlet)