JavaWEB项目的web.xml文件怎么配置servlet,load-on-startup参数,serlvet-mapping,ServletConfig,ServletContext

1. 使用 JavaEE 版的 Eclipse 开发动态的 WEB 工程(JavaWEB 项目)

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 的 HelloWorld

2. 创建一个 Servlet 接口的实现类.

public class HelloServlet implements Servletweb.xml 文件中配置和映射这个 Servlet

<servlet>
    
    <servlet-name>helloServletservlet-name>
    
    <servlet-class>com.atguigu.javaweb.HelloServletservlet-class>
servlet>

<servlet-mapping>
    
    <servlet-name>helloServletservlet-name>
    
    <url-pattern>/hellourl-pattern>
servlet-mapping>

3. Servlet 容器: 运行 Servlet、JSP、Filter 等的软件环境.

1). 可以来创建 Servlet, 并调用 Servlet 的相关生命周期方法.
2). JSP, Filter, Listener, Tag ..…

4. Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.

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

5. load-on-startup 参数:

1). 配置在 servlet 节点中:

  <servlet>
    
    <servlet-name>secondServletservlet-name>
    
    <servlet-class>com.atguigu.javaweb.SecondServletservlet-class>
    
    <load-on-startup>2load-on-startup>
  servlet>

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

6.关于serlvet-mapping

1). 同一个Servlet可以被映射到多个URL上,即多个 元素的子元素的设置值可以是同一个
Servlet的注册名。

2). 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
一种格式是“.扩展名”,另一种格式是以正斜杠(/)开头并以“/”结尾。

<servlet-mapping>
    <servlet-name>secondServletservlet-name>
    <url-pattern>/*url-pattern>
servlet-mapping>]()

OR

<servlet-mapping>
    <servlet-name>secondServletservlet-name>
    <url-pattern>*.dourl-pattern>
servlet-mapping>

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

<servlet-mapping>
    <servlet-name>secondServletservlet-name>
    <url-pattern>/*.actionurl-pattern>不合法
servlet-mapping>

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

  1. 配置 Serlvet 的初始化参数
<servlet>
    <servlet-name>helloServletservlet-name>
    <servlet-class>com.atguigu.javaweb.HelloServletservlet-class>

    
    <init-param>
        
        <param-name>userparam-name>
        
        <param-value>rootparam-value>
    init-param>

    <init-param>
        <param-name>passwordparam-name>
        <param-value>1230param-value>
    init-param>

    <load-on-startup>-1load-on-startup>

servlet>
  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);
}
  1. 获取 Serlvet 的配置名称(了解)

8. ServletContext

1). 可以由 SerlvetConfig 获取:

ServletContext servletContext = servletConfig.getServletContext();

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

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

设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

<context-param>
    <param-name>driverparam-name>
    <param-value>com.mysql.jdbc.Driverparam-value>
context-param>

方法:

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); 
}

②. 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

getRealPath(String path);

代码:

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

③. 获取当前 WEB 应用的名称:

getContextPath()

代码:

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

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

getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.

代码:

InputStream is2 = servletContext.getResourceAsStream(“/WEB-INF/classes/jdbc.properties”);

⑤. 和 attribute 相关的几个方法:

你可能感兴趣的:(javaweb,web.xml,servlet,ServletContext,serlvet-mapping,load-on-startup)