会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133326个问题
JAVA 全系列/第六阶段:JavaWeb开发/XML技术(旧) 273楼
JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解(旧) 274楼
JAVA 全系列/第六阶段:JavaWeb开发/计算机网络协议详解 276楼

image.png

image.png


image.png

我理解是有三个context:

第一个访问是http://wait:8080/forget/index.html

第二个访问不是应该是http://localhost:8080/getKey/User.html

第三个只有一个path他的docBase是什么?


正确的访问路径是http://localhost:8080/demo1/User.html

image.png

/demo1/User.html这两个没有什么关联


这三个东西搞不明白,应该怎么去理解和区分

JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解(旧) 277楼
JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 279楼

老师我跟着视频又写了一遍,同样的代码在demo(我用来跟着老师敲的工程)可以成功跑起来,监听器也会被触发那些Added     Removed    Replaced    的输出语句再清空控制台然后访问    attr.do    也可以被打印出来,但是在demo_test(我用来练习的工程)就没法触发监听器,导致清空控制台再访问    attr.do只有以下结果


image.png


但是如果监听器没被触发那么为什么启动Tomcat控制台就会有以下结果


image.png


源码如下:

package com.bjsxt.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

/**
 * ServletContext对象属性操作监听器
 */
public class ServletContextAttrListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("---------------Added Started-----------------");
        //获取属性名和属性值
        System.out.println(scae.getName()+"-------"+scae.getValue());
        //取出ServletContext对象
        System.out.println(scae.getServletContext());
        System.out.println("---------------Added Ended-----------------");
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {
        System.out.println("---------------Removed Started-----------------");
        //获取属性名和属性值
        System.out.println(scae.getName()+"-------"+scae.getValue());
        //取出ServletContext对象
        System.out.println(scae.getServletContext());
        System.out.println("---------------Removed Ended-----------------");
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {
        System.out.println("---------------Replaced Started-----------------");
        //获取属性名和属性值
        System.out.println(scae.getName()+"-------"+scae.getValue());
        //取出ServletContext对象
        System.out.println(scae.getServletContext());
        System.out.println("---------------Replaced Ended-----------------");
    }
}
package com.bjsxt.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/attr.do")
public class ServletContextAttrServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext servletContext = this.getServletContext();
        //调用测试监听器的三个方法
        servletContext.setAttribute("key","BJSXT");
        servletContext.setAttribute("key","ITBZ");
        servletContext.removeAttribute("key");
    }
}









JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解(旧) 280楼
JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 281楼
JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解 283楼
JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解 284楼

webdemo.zip

老师 我这不加过滤器 都能正常访问 加了过滤器  重启tomcat浏览器就跳大下面那个报错的页面

控制台显示下面的信息 麻烦老师帮我看下

D:\apache-tomcat-9.0.34\bin\catalina.bat run
[2021-07-23 08:40:50,646] Artifact webdemo:war exploded: Waiting for server connection to start artifact deployment...
Using CATALINA_BASE:   "C:\Users\l1812\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_34_webdemo"
Using CATALINA_HOME:   "D:\apache-tomcat-9.0.34"
Using CATALINA_TMPDIR: "D:\apache-tomcat-9.0.34\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-11.0.10"
Using CLASSPATH:       "D:\apache-tomcat-9.0.34\bin\bootstrap.jar;D:\apache-tomcat-9.0.34\bin\tomcat-juli.jar"
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
23-Jul-2021 08:40:53.603 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本:     Apache Tomcat/9.0.34
23-Jul-2021 08:40:53.611 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建:            Apr 3 2020 12:02:52 UTC
23-Jul-2021 08:40:53.612 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号(:9.0.34.0
23-Jul-2021 08:40:53.612 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
23-Jul-2021 08:40:53.612 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本:               10.0
23-Jul-2021 08:40:53.613 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构:                  amd64
23-Jul-2021 08:40:53.613 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量:         C:\Program Files\Java\jdk-11.0.10
23-Jul-2021 08:40:53.615 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本:              11.0.10+8-LTS-162
23-Jul-2021 08:40:53.615 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商:            Oracle Corporation
23-Jul-2021 08:40:53.616 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:[C:\Users\l1812\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_34_webdemo]
23-Jul-2021 08:40:53.616 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         D:\apache-tomcat-9.0.34
23-Jul-2021 08:40:53.619 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[--add-opens=java.base/java.lang=ALL-UNNAMED]
23-Jul-2021 08:40:53.619 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[--add-opens=java.base/java.io=ALL-UNNAMED]
23-Jul-2021 08:40:53.619 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED]
23-Jul-2021 08:40:53.620 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Djava.util.logging.config.file=C:\Users\l1812\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_34_webdemo\conf\logging.properties]
23-Jul-2021 08:40:53.620 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager]
23-Jul-2021 08:40:53.620 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcom.sun.management.jmxremote=]
23-Jul-2021 08:40:53.623 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcom.sun.management.jmxremote.port=1099]
23-Jul-2021 08:40:53.624 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcom.sun.management.jmxremote.ssl=false]
23-Jul-2021 08:40:53.624 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcom.sun.management.jmxremote.password.file=C:\Users\l1812\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_34_webdemo\jmxremote.password]
23-Jul-2021 08:40:53.625 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcom.sun.management.jmxremote.access.file=C:\Users\l1812\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_34_webdemo\jmxremote.access]
23-Jul-2021 08:40:53.627 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Djava.rmi.server.hostname=127.0.0.1]
23-Jul-2021 08:40:53.628 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Djdk.tls.ephemeralDHKeySize=2048]
23-Jul-2021 08:40:53.628 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Djava.protocol.handler.pkgs=org.apache.catalina.webresources]
23-Jul-2021 08:40:53.628 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dignore.endorsed.dirs=]
23-Jul-2021 08:40:53.629 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcatalina.base=C:\Users\l1812\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_34_webdemo]
23-Jul-2021 08:40:53.630 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Dcatalina.home=D:\apache-tomcat-9.0.34]
23-Jul-2021 08:40:53.630 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:[-Djava.io.tmpdir=D:\apache-tomcat-9.0.34\temp]
23-Jul-2021 08:40:53.631 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.23] using APR version [1.7.0].
23-Jul-2021 08:40:53.631 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
23-Jul-2021 08:40:53.631 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true]
23-Jul-2021 08:40:53.640 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1c  28 May 2019]
23-Jul-2021 08:40:54.334 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
23-Jul-2021 08:40:54.466 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[1,568]毫秒内初始化
23-Jul-2021 08:40:54.650 信息 [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
23-Jul-2021 08:40:54.651 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.34]
23-Jul-2021 08:40:54.678 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
23-Jul-2021 08:40:54.703 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in [236] milliseconds
Connected to server
[2021-07-23 08:40:55,090] Artifact webdemo:war exploded: Artifact is being deployed, please wait...
23-Jul-2021 08:40:56.867 信息 [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
23-Jul-2021 08:40:57.825 警告 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [844] milliseconds.
[2021-07-23 08:40:57,894] Artifact webdemo:war exploded: Artifact is deployed successfully
[2021-07-23 08:40:57,894] Artifact webdemo:war exploded: Deploy took 2,804 milliseconds
23-Jul-2021 08:41:04.688 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\apache-tomcat-9.0.34\webapps\manager]
23-Jul-2021 08:41:04.843 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\apache-tomcat-9.0.34\webapps\manager] has finished in [154] ms


image.png


JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 285楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637