zoukankan      html  css  js  c++  java
  • javaweb03 javaservlet基础一

    1.使用JavaEE版的eclipse开发动态的WEB工程(JavaWEB 项目)
    1).把开发选项切换到JavaEE
    2).可以在window -> Show View 中找到Package Explorer,并将其拖拽到开发区的左边
    3).在servers面板中新建Tomcat服务器,在Tomcat安装的根目录
    4).新建一个Dynamic Web Project,其中Target Runtime需选择Tomcat7.0
    5).开发Java WEB 应用
    6).可以通过run on server 来运行 WEB项目

    2.servlet的hellword
    1).创建一个servlet接口实现类
    public class HelloServlet implements Servlet
    2).在web.xml文件中配置和映射这个servlet
    <!-- 配置和映射到Servlet -->
    <servlet>
    <!-- servlet注册的名字 -->
    <servlet-name>helloServlet</servlet-name>
    <!-- servlet的全类名 -->
    <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>

    </servlet>

    <servlet-mapping>
    <!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
    <servlet-name>helloServlet</servlet-name>
    <!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    3.Servlet容器:运行servlet,jsp,filter等的软件环境。
    1).可以来创建Servlet,并调用Servlet的相关生命周期方法。
    2).jsp,filter,listener,Tag...

    4.servlet 生命周期的方法:以下方法都是由servlet容器负责调用
    1).构造器:只被调用一次,第一次请求servlet时 创建servlet的实例 调用构造器。说明servlet的单实例的!
    2).init方法:只调用一次,在创建好实例后立即被调用,用于初始化当前servlet
    3).service:每次请求都会调用service方法,实际用于响应请求。
    4).destory:只被调用一次,在当前servlet所在的web应用被卸载时调用,用于释放servlet所占用的资源。

    5.load-on-startup参数:
    1).可以配置在servlet节点中:
    <servlet>
    <!-- servlet注册的名字 -->
    <servlet-name>SecondServlet</servlet-name>
    <!-- servlet的全类名 -->
    <servlet-class>com.atguigu.javaweb.SecondServlet</servlet-class>
    <!-- 可以指定servlet被创建的时机 -->
    <load-on-startup>2</load-on-startup>
    </servlet>
    2).load-on-startup:可以指定servlet 被创建的时机 若为负数则在第一次请求时被创建 若为0或整数 则在当前WEB应用被servlet容器加载时创建实例,且数组越小越早被创建。

    6.关于servlet-mapping
    1).一个servlet可以被映射到多个url上即可以有多个servlet-mapping对其进行映射
    2).在Servlet映射到的URL也可以使用*通配符,但只能有两种固定的格式。一种是"*.扩展名",另一种是以(/)开头以"/*"结尾。不能以"/*"开头

    </servlet>
    <servlet-mapping>
    <!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
    <servlet-name>SecondServlet</servlet-name>
    <!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
    <url-pattern>/*</url-pattern>
    </servlet-mapping>

    OR
    </servlet>
    <servlet-mapping>
    <!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
    <servlet-name>SecondServlet</servlet-name>
    <!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
    <url-pattern>*do</url-pattern>
    </servlet-mapping>
    注意:以下的既带"/"又带扩展名的不合法
    </servlet>
    <servlet-mapping>
    <!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
    <servlet-name>SecondServlet</servlet-name>
    <!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
    <url-pattern>/*.action</url-pattern>
    </servlet-mapping>

    7.ServletConfig:封装了servlet的配置信息,并且可以获取servletcontext对象
    1). 配置servlet的初始化参数
    <!-- 配置servlet的初始化参数。且该节点必须在load-on-startup前面 -->
    <init-param>
    <!-- 初始化参数名 -->
    <param-name>user</param-name>
    <!-- 初始化参数值 -->
    <param-value>root</param-value>
    </init-param>

    <init-param>
    <param-name>password</param-name>
    <param-value>1230</param-value>
    </init-param>
    2).获取初始化参数:
    getInitParameter(String name):获取指定参数名的初始化参数
    getInitParameterNAmes():获取参数名组成的Enumeration 对象,

    String user = servletConfig.getInitParameter("user");
    System.out.println("user: "+user);

    Enumeration<String> names = servletConfig.getInitParameterNames();
    while(names.hasMoreElements()) {
    String name = names.nextElement();
    String value = servletConfig.getInitParameter(name);
    System.out.println("^^"+name+":"+value);


    3).获取servlet的配置名称(了解)
    String serlvetName = servletConfig.getServletName();
    System.out.println(serlvetName);

    8.ServletContext

    1).可以由ServletConfig获取

    ServletContext servletContext =servletConfig.getServletContext()

    2).该对象代表当前WEB应用认为ServletContent是当前WEB应用的一个大管家,可以从中获取到当前web应用的各个方面信息


    1.获取当前WEB应用的初始化参数

    设置初始化参数:可以为所有的servlet所获取,而servlet的初始化参数只有那个servlet才可以获取

    <!-- 配置当前web应用的初始化参数 -->
    <context-param>
    <param-name>
    driver
    </param-name>
    <param-value>
    com.mysql.jdbc.Driver
    </param-value>
    </context-param>

    方法:
    getServletName
    getInitParameterNames
    //获取ServletContext对象

    代码:

    ServletContext servletContext =servletConfig.getServletContext();

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

    Enumeration<String> names2 = servletContext.getInitParameterNames();
    while(names2.hasMoreElements()) {
    String name = names2.nextElement();
    System.out.println("-->" + name);
    }
    2.获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署前的路径
    方法:
    getRealPath(String path);

    代码:
    String realPath=servletContext.getRealPath("/note.txt");
    System.out.println(realPath);

    3.获取当前web应用的名称:
    方法:
    getContextPath()

    代码:
    String contextPath = servletContext.getContextPath();
    System.out.println(contextPath);

    4.获取当前WEB应用的某一个文件对应的输入流。

    getResourceAsStream(String path): path的/为相对于当前web应用的根目录。
    代码:
    try {
    ClassLoader classLoader = getClass().getClassLoader();
    InputStream is = classLoader.getResourceAsStream("jdbc.properties");
    System.out.println("1." + is);
    } catch (Exception e) {
    // TODO 自动生成的 catch 块
    e.printStackTrace();
    }
    try {
    ClassLoader classLoader = getClass().getClassLoader();
    InputStream is2 = classLoader.getResourceAsStream("jdbc.properties");
    System.out.println("2." + is2);
    } catch (Exception e) {
    // TODO 自动生成的 catch 块
    e.printStackTrace();
    }

  • 相关阅读:
    想不明白为什么不复用老接口?
    dubbo入门教程-从零搭建dubbo服务
    使用Node.js时如何引入jQuery
    博客园在我的博客添加点击小心心特效
    博客园在微信内置浏览器打开时添加微信赞赏码功能
    Keepalived
    双网卡服务器使用指定网卡互通不同网段数据
    LNMP详解
    Centos7数据实时同步(Rsync+inotify)
    解决Centos7本机时间与实际时间相差8小时
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11632671.html
Copyright © 2011-2022 走看看