1. 什么是一个web站点的欢迎页面?20

  - 对于一个webapp来说,我们是可以设置它的欢迎页面的。

  - 设置了欢迎页面之后,当你访问这个webapp的时候,或者访问这个web站点的时候,没有指定任何“资源路径”,这个时候会默认访问你的欢迎页面。

  - 我们一般的访问方式是:

    - http://localhost:8080/servlet06/login.html 这种方式是指定了要访问的就是login.html资源。

  - 如果我们访问的方式是:

   - http://localhost:8080/servlet06 如果我们访问的就是这个站点,没有指定具体的资源路径。它默认会访问谁呢?

    - 默认会访问你设置的欢迎页面。

1.1  怎么设置欢迎页面呢?20

  - 第一步:我在IDEA工具的web目录下新建了一个文件login.html

  - 第二步:在web.xml文件中进行了以下的配置

 <welcome-file-list>
              <welcome-file>login.html</welcome-file>
 </welcome-file-list>

 - 注意:设置欢迎页面的时候,这个路径不需要以“/”开始。并且这个路径默认是从webapp的根下开始查找。

  - 第三步:启动服务器,浏览器地址栏输入地址

http://localhost:8080/servlet07

1.2 欢迎页配置细节   20

- 如果在webapp的根下新建一个目录,目录中再给一个文件,那么这个欢迎页该如何设置呢?

  - 在webapp根下新建page1

  - 在page1下新建page2目录

  - 在page2目录下新建page.html页面

  - 在web.xml文件中应该这样配置


  <welcome-file-list>
          <welcome-file>page1/page2/page.html</welcome-file>
      </welcome-file-list>

 - 注意:路径不需要以“/”开始,并且路径默认从webapp的根下开始找。

一个webapp是可以设置多个欢迎页面的

 <welcome-file-list>
        <welcome-file>page1/page2/page.html</welcome-file>
        <welcome-file>login.html</welcome-file>
    </welcome-file-list>

注意:越靠上的优先级越高。找不到的继续向下找。

你有没有注意一件事:当我的文件名设置为index.html的时候,不需要在web.xml文件中进行配置欢迎页面。这是为什么?

  - 这是因为小猫咪Tomcat服务器已经提前配置好了。

  - 实际上配置欢迎页面有两个地方可以配置:

    - 一个是在webapp内部的web.xml文件中。(在这个地方配置的属于局部配置)

    - 一个是在CATALINA_HOME/conf/web.xml文件中进行配置。(在这个地方配置的属于全局配置)

 <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

      - Tomcat服务器的全局欢迎页面是:index.html index.htm index.jsp。如果你一个web站点没有设置局部的欢迎页面,Tomcat服务器就会以index.html index.htm index.jsp作为一个web站点的欢迎页面。

  - 注意原则:局部优先原则。(就近原则)

代码在course11     20

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

<!--    这个是login的欢迎页配置-->
    <!--<welcome-file-list>
        <welcome-file>login.html</welcome-file>
    </welcome-file-list>-->

    <!--    这个是page的欢迎页配置-->
    <!--<welcome-file-list>
        <welcome-file>page1/page2/page.html</welcome-file>
    </welcome-file-list>-->
    
</web-app>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login page</title>
</head>
<body>
<!--将login.html设置为整个web站点的欢迎页  20-->
<h1>用户登录页面……</h1>

</body>
</html>
page.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>page</title>
</head>
<body>
<h1>welcome to study servlet</h1>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index page</title>
</head>
<body>
<h1>欢迎来到index page</h1>
</body>
</html>

2. 欢迎页可以是一个Servlet吗?20

  - 当然可以。

  - 你不要多想,欢迎页就是一个资源,既然是一个资源,那么可以是静态资源,也可以是动态资源。

  - 静态资源:index.html welcome.html .....

  - 动态资源:Servlet类。

2.1 步骤: 20

    - 第一步:写一个Servlet


public class WelcomeServlet extends HttpServlet {
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.print("welcome to bjpowernode!");
            }
        }

    - 第二步:在web.xml文件中配置servlet


<servlet>
                <servlet-name>welcomeServlet</servlet-name>
                <servlet-class>com.bjpowernode.javaweb.servlet.WelcomeServlet</servlet-class>
            </servlet>
            <servlet-mapping>
                <servlet-name>welcomeServlet</servlet-name>
                <url-pattern>/fdsa/fds/a/fds/af/ds/af/dsafdsafdsa</url-pattern>
            </servlet-mapping>

    - 第三步:在web.xml文件中配置欢迎页


 <welcome-file-list>
                <welcome-file>fdsa/fds/a/fds/af/ds/af/dsafdsafdsa</welcome-file>
            </welcome-file-list>

代码在com.bjpowernode.javaweb.servlet

Welcome
package com.bjpowernode.javaweb.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

//欢迎页   20
public class Welcome extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.print("welcome to bjpowernode");
    }
}
web.xml
<!--    这个是Welcome的配置-->
<!--    配置欢迎界面-->
    <welcome-file-list>
        <welcome-file>dfsa/fd/dr/bfdhs</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>welcomeServlet</servlet-name>
        <servlet-class>com.bjpowernode.javaweb.servlet.Welcome</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>welcomeServlet</servlet-name>
        <url-pattern>/dfsa/fd/dr/bfdhs</url-pattern>
    </servlet-mapping>

3. 关于WEB-INF目录   21

- 在WEB-INF目录下新建了一个文件:welcome.html

- 打开浏览器访问:http://localhost:8080/servlet07/WEB-INF/welcome.html 出现了404错误。

- 注意:放在WEB-INF目录下的资源是受保护的。在浏览器上不能够通过路径直接访问。所以像HTML、CSS、JS、image等静态资源一定要放到WEB-INF目录之外。