JavaWeb——感谢尚硅谷官方文档

JavaWeb——感谢尚硅谷官方文档

    • XML
      • 一、xml简介
      • 二、xml的语法
        • 1、文档申明
        • 2、xml注释
        • 3、xml元素
        • 4、xml属性
        • 5、xml语法规则
      • 三、xml解析技术
        • 1、使用dom4j解析xml
    • Tomcat
      • 一、JavaWeb的概念
      • 二、web资源的分类
      • 三、常见的web服务器
      • 四、Tomcat的使用
        • 1、安装
        • 2、Tomcat的目录介绍
        • 3 启动Tomcat
        • 4、停止Tomcat
        • 5、如何修改Tomcat的端口号
        • 6、如何部署web工程到Tomcat中
        • 7、ROOT 的工程的访问、默认 index.html 页面的访问
    • Servlet
      • 一、Servlet
        • 1、什么是Servlet
        • 2、手动实现一个servlet程序
        • 3、servlet-url地址如何定位到servlet程序
        • 4、Servlet程序的生命周期
        • 5、通过继承HttpServlet来实现Servlet接口
        • 6、使用IDEA创建Servlet程序
        • 7、Servlet 类的继承体系
      • 二、ServletConfig类
        • 1、ServletConfig类的三大作用
        • 2、如何获取到ServletConfig
      • 三、ServletContext类
        • 1、什么是 ServletContext
        • 2、ServletContext类的四个作用
      • 四、Http协议
    • Cookie和Session
      • 一、Cookie
        • 1、什么是cookie?
        • 2、如何创建 cookie ?
        • 3、服务器端如何获取cookie
        • 4、Cookie值的修改
        • 5、Cookie的生命控制
        • 6、Cookie有效路径 Path的设置
      • 二、Session会话
        • 1、什么是Session会话?
        • 2、如何创建Session 和 获取
        • 3、Session的生命周期
        • 4、浏览器和session直接关联的技术内幕
    • Filter过滤器
      • 一、Filter是什么过滤器
      • 二、Filter 初体验
      • 三、Filter的生命周期
      • 四、FilterConfig类
      • 五、Filter过滤器链
      • 六、Filter的拦截路径

仅自用,如有侵权,立刻删!——感谢【尚硅谷】官方文档

XML

一、xml简介

什么是 xml? xml 是可扩展的标记性语言

xml 的主要作用有:

  • 用来保存数据,而且这些数据具有自我描述性
  • 它还可以做为项目或者模块的配置文件
  • 还可以做为网络传输数据的格式(现在 JSON 为主)

二、xml的语法

1、文档申明
<?xml version="1.0" encoding="UTF-8"?> <!--xml声明-->
2、xml注释
html 和 XML 注释 一样 : <!--  -->
3、xml元素

xml元素指的是从开始标签到结束标签的部分(包括标签)

元素可包含其他元素,文本或者两者的混合物

<bookstore>
    <book category="CHILDREN">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>
4、xml属性

xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息

在标签上可以书写属性: 一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。

5、xml语法规则

1)所有 XML 元素都须有关闭标签(也就是闭合)

2)XML对大小写敏感

3)XML 必须正确地嵌套

4)XML 文档必须有根元素

5)XML 的属性值须加引号

6)XML 中的特殊字符

> 特殊字符 : &gt
< 特殊字符 : &lt

7)文本区域 (CDATA区域)

CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法

CDATA 格式:

<![CDATA[ 这里输入的字符会原样显示,不会解析xml ]]>

三、xml解析技术

xml 可扩展的标记语言。 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术

早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)

dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。 Java 对 dom 技术解析标记也做了实现。

第三方的解析:

jdom 在 dom 基础上进行了封装 、

dom4j 又对 jdom 进行了封装。

pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。

这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。

1、使用dom4j解析xml

1)引入第三方类库
在这里插入图片描述
2)解析代码demo

@Test
public void test1() throws DocumentException {
    // 1、创建一个SaxReader输入流,来读取xml配置文件,生成document对象
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/books.xml");
    // 2、通过Document获取根元素
    Element root = document.getRootElement();
    // 3、通过根元素获取book标签对象
    List<Element> books= root.elements("book");
    // 4、遍历 处理每个book标签转换为book类
    for (Element book : books) {
        //asXML是将标签对象转化为标签字符串
        Element name = book.element("name");
        // getText()获取标签中的文本内筒
        String nameText = name.getText();
        //获取属性的值
        String sn = book.attributeValue("sn");
    }
}

Tomcat

一、JavaWeb的概念

所有通过Java语言编写的可以通过浏览器访问的程序的总称,叫做JavaWeb 。 Java是基于请求和响应开发的

二、web资源的分类

web资源按照实现技术和呈现的效果不同,分为静态资源和动态资源

  • 静态资源 :html、css、js、txt、mp4 视频 , jpg 图片
  • 动态资源: jsp 页面、Servlet 程序

三、常见的web服务器

什么是web服务器: https://blog.csdn.net/HelloZEX/article/details/122810557

  • Tomcat:由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。它是一种轻量级的 javaWeb 容器(服务 器),也是当前应用最广的 JavaWeb 服务器(免费)。
  • Jboss:是一个遵从 JavaEE 规范的、开放源代码的、纯 Java 的 EJB 服务器,它支持所有的 JavaEE 规范(免费)。
  • GlassFish: 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款强健的商业服务器,达到产品级质量(应用很少)。
  • Resin:是 CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了良好的支持, 性能也比较优良,resin 自身采用 JAVA 语言开发(收费,应用比较多)
  • WebLogic:是 Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 JavaEE 规范, 而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)

四、Tomcat的使用

1、安装

去官网下载需要使用的Tomcat版本对应的zip压缩吧,解压到需要安装的目录即可

2、Tomcat的目录介绍

在这里插入图片描述

bin 专门用来存放 Tomcat 服务器的可执行程序

conf 专门用来存放 Tocmat 服务器的配置文件

lib 专门用来存放 Tomcat 服务器的 jar 包

logs 专门用来存放 Tomcat 服务器运行时输出的日记信息

temp 专门用来存放 Tomcdat 运行时产生的临时数据

webapps 专门用来存放部署的 Web 工程。

work 是 Tomcat 工作时的目录,用来存放 Tomcat 运行时 jsp 翻译为 Servlet 的源码,和 Session的钝化目录

3 启动Tomcat

第一种方式

找到 Tomcat 目录下的 bin 目录下的 startup.bat 文件,双击,就可以启动 Tomcat 服务器

打开浏览器,访问 http://localhost:8080
在这里插入图片描述
第二种方式

以命令行方式cd到 E:\apache-tomcat-8.5.38\bin,输入:catalina run , 发现Tomcat也成功启动
在这里插入图片描述

4、停止Tomcat

1)点击 tomcat 服务器窗口的 x 关闭按钮

2)把 Tomcat 服务器窗口置为当前窗口,然后按快捷键 Ctrl+C

3)找到 Tomcat 的 bin 目录下的 shutdown.bat 双击,就可以停止 Tomcat

5、如何修改Tomcat的端口号

找到 Tomcat 目录下的 conf 目录,找到 server.xml 配置文件
在这里插入图片描述

6、如何部署web工程到Tomcat中

把 web 工程的目录拷贝到 Tomcat 的 webapps 目录下即可

①、在webapps下新建目录book

②、放入静态页面
在这里插入图片描述
③、访问相应的地址 http://localhost:8080/book/pages/user/login.html
在这里插入图片描述

7、ROOT 的工程的访问、默认 index.html 页面的访问

当我们在浏览器地址栏中输入访问地址如下:

​ http://ip:port/ ====>>>> 没有工程名的时候,默认访问的是 ROOT 工程。

​ 例如:启动tomcat后访问localhost:8080,默认访问的是root工程下的index.html

当我们在浏览器地址栏中输入的访问地址如下:

​ http://ip:port/工程名/ ====>>>> 没有资源名,默认访问 index.html

Servlet

一、Servlet

1、什么是Servlet

1)Servlet是JavaEE规范之一。规范就是接口

2)Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序,Filter过滤器,Linstener

监听器

3)Servlet是运行在服务器上的一个Java程序,它可以接收客户端发送过来的请求并响应数据给客户端

2、手动实现一个servlet程序
  • 编写一个类去实现Servlet接口
  • 实现service方法,处理请求,并响应数据
  • 到web.xml中配置Servlet程序访问地址

demo演示如下:

1)新建web工程
在这里插入图片描述
2)编写HelloServlet类继承Servlet接口,并重写service方法

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     service方法是专门用来处理请求和响应的
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("HelloServlet程序被访问了");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
    }
}

3)编写web.xml 配置HelloServlet程序的访问路径

<!-- servlet标签给Tomcat配置Servlet程序 -->
<servlet>
    <!--servlet-name 给Servlet起一个别名-->
    <servlet-name>HelloServlet</servlet-name>
    <!--servlet-class 是Servlet程序的全类名-->
    <servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet>

<!-- servlet-mapping标签给Servlet程序配置访问地址 -->
<servlet-mapping>
    <!--servlet-name是告诉服务器,我当前配置的地址时给哪个Servlet程序使用-->
    <servlet-name>HelloServlet</servlet-name>
    <!--url-pattern配置访问地址 -->
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

4)访问路径 http://localhost:8080/06_Servlet/hello
在这里插入图片描述

3、servlet-url地址如何定位到servlet程序

在这里插入图片描述

4、Servlet程序的生命周期
  • 执行Servlet构造器方法
  • 执行init初始化方法 (第一、二步是在第一次访问的时候创建Servlet的程序时会调用)
  • 执行service方法 (第三步每次访问servlet程序时都会执行)
  • 执行destory销毁方法 (Tomcat容器停止的时候才会执行)
5、通过继承HttpServlet来实现Servlet接口

一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。

1)编写一个类去继承 HttpServlet 类

2)根据业务需要重写 doGet 或 doPost 方法

3)到 web.xml 中的配置 Servlet 程序的访问地址

public class HelloServlet2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求");
    }
}
6、使用IDEA创建Servlet程序

在这里插入图片描述

7、Servlet 类的继承体系

在这里插入图片描述

二、ServletConfig类

1、ServletConfig类的三大作用
  • 可以获取 Servlet 程序的别名 servlet-name 的值
  • 获取初始化参数 init-param
  • 获取 ServletContext 对象
2、如何获取到ServletConfig

1)在重写Servlet的init方法时,参数列表中携带ServletConfig

@Override
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("2 HelloServlet init方法");
    //1)可以获取 Servlet 程序的别名 servlet-name 的值
    String servletName = servletConfig.getServletName();
    System.out.println("servletName:"+servletName);

    //2)获取初始化参数 init-param
    String key = servletConfig.getInitParameter("key");
    System.out.println(key);

    //3)获取 ServletContext 对象
    servletConfig.getServletContext();
}

<!-- initparam的配置 -->
<servlet>
    <!--servlet-name 给Servlet起一个别名-->
    <servlet-name>HelloServlet</servlet-name>
    <!--servlet-classServlet程序的全类名-->
    <servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
    <init-param>
        <param-name>key</param-name>
        <param-value>i like reba</param-value>
    </init-param>
</servlet>

2)也可以在非init方法中获取到ServletConfig

通过 ServletConfig servletConfig = getServletConfig() 获取到ServletConfig

通过代码可以看到 这个方法是由GenericServlet 提供的,再往上走,就是tomcat在创建servlet程序时,创建了ServletConfig对象

public class HelloServlet2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
        ServletConfig servletConfig = getServletConfig();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求");
    }
}

【注意】但是此时,你如果重写了init方法,则必须调用父类的init方法,否则获取到的servletConfig 为null
在这里插入图片描述

三、ServletContext类

1、什么是 ServletContext
  • ServletContext是一个接口,它表示Servlet上下文
  • 一个web工程,只有一个ServletContext对象实例
  • ServletContext是一个域对象
  • ServletContext在web工程部署启动的时候创建,在web工程停止的时候销毁

什么是域对象?

域对象,是可以像 Map 一样存取数据的对象,叫域对象。 这里的域指的是存取数据的操作范围,整个 web 工程。

2、ServletContext类的四个作用
  • 获取 web.xml 中配置的上下文参数 context-param 2、获取当前的工程路径,格式: /工程路径
  • 获取当前的工程路径,格式: /工程路径
  • 获取工程部署后在服务器硬盘上的绝对路径
  • 像 Map 一样存取数
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    ServletContext servletContext = getServletConfig().getServletContext();
    String username = servletContext.getInitParameter("username");
    System.out.println("context-param 参数 username 的值是:" + username);
    System.out.println( "当前工程路径:" + servletContext.getContextPath() );
    System.out.println("工程部署的路径是:" + servletContext.getRealPath("/"));

    /*作为域保存数据*/
    servletContext.setAttribute("houchen", "帅哥");
}

四、Http协议

Cookie和Session

一、Cookie

1、什么是cookie?

Cookie 是服务器通知客户端保存键值对的一种技术;当客户端有了Cookie之后,之后的每次请求都会携带cookie;

【注意】每个cookie的大小不超过 4kb

2、如何创建 cookie ?

cookie是由服务器端进行创建,然后通知客户端保存cookie的
在这里插入图片描述

protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {
    //1 创建 Cookie 对象
    Cookie cookie = new Cookie("key4", "value4");
    //2 通知客户端保存 Cookie
    resp.addCookie(cookie);
    //1 创建 Cookie 对象
    Cookie cookie1 = new Cookie("key5", "value5");
    //2 通知客户端保存 Cookie
    resp.addCookie(cookie1);
    resp.getWriter().write("Cookie 创建成功");
}
3、服务器端如何获取cookie

服务器端获取客户端的cookie只需要一行代码 :

Cookie[] cookies = req.getCookies();
4、Cookie值的修改

方式一: 直接使用相同的key覆盖原来的cookie对象,调用 response.addCookie()通知客户端保存修改

Cookie cookie = new Cookie("key1","newValue1");
// 3、调用 response.addCookie( Cookie ); 通知 客户端 保存修改
resp.addCookie(cookie);

方式二:

先查找到需要修改的 Cookie 对象;调用 setValue()方法赋于新的 Cookie 值;调用 response.addCookie()通知客户端保存修改

Cookie cookie = CookieUtils.findCookie("key2", req.getCookies());
if (cookie != null) {
    // 2、调用 setValue()方法赋于新的 Cookie 值。
    cookie.setValue("newValue2");
    // 3、调用 response.addCookie()通知客户端保存修改
    resp.addCookie(cookie);
}
5、Cookie的生命控制

Cookie 的生命控制指的是如何管理 Cookie 什么时候被销毁(删除)

setMaxAge()

  • 正数 表示在指定的秒数后过期
  • 负数 表示浏览器一关,Cookie就会被删除
  • 0 表示马上删除cookie => 响应到了客户端就会被删除
Cookie cookie = new Cookie("life3600", "life3600");
cookie.setMaxAge(60 * 60); // 设置 Cookie 一小时之后被删除。无效
resp.addCookie(cookie);
resp.getWriter().write("已经创建了一个存活一小时的 Cookie");
6、Cookie有效路径 Path的设置

Cookie 的 path 属性可以有效的过滤哪些 Cookie 可以发送给服务器。哪些不发。
在这里插入图片描述

二、Session会话

1、什么是Session会话?
  • Session本质上就是一个接口 (HttpSession)

  • Session是一个会话,它是用来维护客户端和服务器之间关联的一种技术;每个客户端都有自己的一个Session会话,

    session会话中,经常用来你保存用户登录之后的信息

2、如何创建Session 和 获取

创建和获取Session ,它们的api是一样的。

request.getSession()

​ 第一次调用是:创建Session会话

​ 第二次调用是:获取前面创建好的Session会话对象

isNew(); 判断到底是不是刚创建出来的(新的)

​ true 表示刚创建

	false 表示获取之前创建

每个会话都有一个身份证号。也就是 ID 值。而且这个 ID 是唯一的。getId() 得到 Session 的会话 id 值。

3、Session的生命周期

session超时的理解

浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠时间)没有与服务器交互,服务器将此Session销毁,客户端再一次与服务器交互时之前的Session就不存在了,但服务器与客户端会产生一个新的会话,之前的session里的属性值全部丢失,产生新的sesssionId

public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位),超过指定的时长,Session就会被销毁。
值为正数的时候,设定 Session 的超时时长。
负数表示永不超时(极少使用)
public int getMaxInactiveInterval()获取 Session 的超时时间
public void invalidate() 让当前 Session 会话马上超时无效

Session 默认的超时时长是多少! Session 默认的超时时间长为 30 分钟。 因为在 Tomcat 服务器的配置文件 web.xml中默认有以下的配置,它就表示配置了当前 Tomcat 服务器下所有的 Session 超时配置默认时长为:30 分钟。

<session-config>
	<session-timeout>30</session-timeout>
</session-config>

如果说。你希望你的 web 工程,默认的 Session 的超时时长为其他时长。你可以在你自己的 web.xml 配置文件中做 以上相同的配置。就可以修改你的 web 工程所有 Seession 的默认超时时长。

<!--表示当前 web 工程。创建出来 的所有 Session 默认是 20 分钟 超时时长-->
<session-config>
	<session-timeout>20</session-timeout>
</session-config>

如果你想只修改个别 Session 的超时时长。就可以使用上面的 API。setMaxInactiveInterval(int interval)来进行单独的设 置。 session.setMaxInactiveInterval(int interval)单独设置超时时长

4、浏览器和session直接关联的技术内幕

Session 技术,底层其实是基于 Cookie 技术来实现
在这里插入图片描述

Filter过滤器

一、Filter是什么过滤器

  • Filter过滤器是JavaWeb的三大组件之一。三大组件分别是:Servlet程序、listener监听器,Filter过滤器
  • Filter 过滤器它是 JavaEE 的规范。也就是接口
  • Filter 过滤器它的作用是:拦截请求,过滤响应

二、Filter 初体验

Filter 过滤器的使用步骤:

  • 编写一个类去实现 Filter 接口
  • 实现过滤方法 doFilter()
  • 到 web.xml 中去配置 Filter 的拦截路

1、要求:在你的 web 工程下,有一个 admin 目录。这个 admin 目录下的所有资源(html 页面、jpg 图片、jsp 文件、等等)都必 须是用户登录之后才允许访问

2、filter的工作流程
在这里插入图片描述
3、filter的代码

public class AdminFilter implements Filter {
    /**
     * doFilter 方法,专门用于拦截请求。可以做权限检查
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain
            filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        HttpSession session = httpServletRequest.getSession();
        Object user = session.getAttribute("user");
// 如果等于 null,说明还没有登录
        if (user == null) {
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
            return;
        } else {
// 让程序继续往下访问用户的目标资源
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }
}

4、web.xml配置

<!--filter 标签用于配置一个 Filter 过滤器-->
<filter>
    <!--给 filter 起一个别名-->
    <filter-name>AdminFilter</filter-name>
    <!--配置 filter 的全类名-->
    <filter-class>com.atguigu.filter.AdminFilter</filter-class>
</filter>

三、Filter的生命周期

Filter 的生命周期包含几个方法

  • 构造器方法
  • init 初始化方法 (第 1,2 步,在 web 工程启动的时候执行)
  • doFilter 过滤方法 (第 3 步,每次拦截到请求,就会执行)
  • destroy 销毁 (第 4 步,停止 web 工程的时候,就会执行)

四、FilterConfig类

FilterConfig 类见名知义,它是 Filter 过滤器的配置文件

Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件

FilterConfig 类的作用是获取 filter 过滤器的配置内容

  • 获取 Filter 的名称 filter-name 的内容
  • 获取在 Filter 中配置的 init-param 初始化参数
  • 获取 ServletContext
@Override
public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("2.Filter 的 init(FilterConfig filterConfig)初始化");
    // 1、获取 Filter 的名称 filter-name 的内容
    System.out.println("filter-name 的值是:" + filterConfig.getFilterName());
    // 2、获取在 web.xml 中配置的 init-param 初始化参数
    System.out.println("初始化参数 username 的值是:" + filterConfig.getInitParameter("username"));
    System.out.println("初始化参数 url 的值是:" + filterConfig.getInitParameter("url"));
    // 3、获取 ServletContext 对象
    System.out.println(filterConfig.getServletContext());
}

web.xml中,filter的配置

<!--filter 标签用于配置一个 Filter 过滤器-->
<filter>
    <!--给 filter 起一个别名-->
    <filter-name>AdminFilter</filter-name>
    <!--配置 filter 的全类名-->
    <filter-class>com.atguigu.filter.AdminFilter</filter-class>
    <init-param>
        <param-name>username</param-name>
        <param-value>root</param-value>
    </init-param>
    <init-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost3306/test</param-value>
    </init-param>
</filter>

五、Filter过滤器链

在这里插入图片描述

六、Filter的拦截路径

精确匹配

<url-pattern>/target.jsp</url-pattern>
以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/target.jsp

目录匹配

<url-pattern>/admin/*</url-pattern>
以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/admin/*

后缀名匹配

<url-pattern>*.html</url-pattern>
以上配置的路径,表示请求地址必须以.html 结尾才会拦截到
<url-pattern>*.do</url-pattern>
以上配置的路径,表示请求地址必须以.do 结尾才会拦截到
<url-pattern>*.action</url-pattern>
以上配置的路径,表示请求地址必须以.action 结尾才会拦截到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/182428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-leetcode(设计循环队列)

1.学习内容&#xff1a; 今天 我们讲解一道能够很好的总结所学队列知识的题目---设计循环队列 622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; 2.题目描述&#xff1a; 让我们设计一个队列 要求是循环的 这和我们的双向链表有些类似 让我们按要求设计出这些相对…

视频云存储EasyCVR平台国标接入获取通道设备未回复是什么原因?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Python中的解析器argparse

import argparse## 构造解析器 argparse.ArgumentParser() parse argparse.ArgumentParser(description"caculateing the area of rectangle")## 添加参数 .add_argument() parse.add_argument("--length",typeint,default20,helpThe length of rectangle…

西米支付:如何设计和构建游戏支付系统?

如何设计和构建游戏支付系统&#xff1f; 目前&#xff0c;游戏开发中最常见的支付方式包括微信支付、支付宝支付和苹果支付等。今天&#xff0c;我将与大家分享游戏支付系统的架构和设计。 游戏支付的主要业务流程是指游戏玩家在游戏中购买虚拟物品或服务所进行的支付过程。一…

深入了解Java8新特性-日期时间API_LocalDate类

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概12000多字&#xff0c;预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…

使用 PowerShell 中的命令来删除共享目录

Remove-SmbShare -Name "ShareName" 请将 "ShareName" 替换为您要删除的实际共享目录的名称。 请注意&#xff0c;执行此命令需要具有适当的权限。确保您以管理员身份运行 PowerShell 或具有足够的权限来删除共享目录。

超详细的自动化测试教程

什么是自动化测试&#xff1f; 做测试好几年了&#xff0c;真正学习和实践自动化测试一年&#xff0c;自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念&#xff0c;广义上来讲&a…

微信小程序汽车租赁系统

微信小程序汽车租赁系统 本系统包含了3类用户&#xff0c;分别为客户、员工以及管理员&#xff0c;客户主要是满足自身的租车需求&#xff0c;员工主要负责车辆的调度问题和维修状况&#xff0c;管理员则是主要对人员、车辆和订单的管理。以下是对各自功能的详细介绍: 客户可…

简单聊聊加密和加签的关系与区别

大家好&#xff0c;我是G探险者。 平时我们在项目上一定都听过加密和加签&#xff0c;加密可能都好理解&#xff0c;知道它是保障的数据的机密性&#xff0c;那加签是为了保障啥勒&#xff1f;它和加密有啥区别&#xff1f; 带着这个疑问&#xff0c;我们就来聊聊二者的区别。…

测试15k薪资第1步 —— 自动化测试理论基础

目录 1、自动化测试定义 2、自动化测试分类&工具 3、未来发展趋势 1.1、什么是自动化测试 自动化测试指的是利用软件工具或脚本来执行测试任务&#xff0c;以替代手动测试过程的一种测试方法。它的主要目的是通过自动化执行、验证和评估软件应用的功能、稳定性、性能等方面…

Redis(哨兵模式)

哨兵模式的定义&#xff1a; 是Redis的一种高可用解决方案&#xff0c;通过运行多个Redis实例来监控主从Redis实例的状态&#xff0c;当主实例出现故障时&#xff0c;哨兵会自动选举一个从实例作为新的主实例&#xff0c;从而保证系统的高可用性。哨兵模式可以监控多个主从Red…

HCIP---MPLS---LDP

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 MPLS 基于标签转发表进行转发&#xff0c;与路由表类似&#xff0c;标签转发表有两种获取渠道&#xff1a;一是手动配置(类似静态路由)&#xff0c;二是通过协议自动学习(类似OSPF)。手动配…

ubuntu搭建phpmyadmin+wordpress

Ubuntu搭建phpmyadmin wordpress Linux系统设置&#xff1a;Ubuntu 22配置apache2搭建phpmyadmin配置Nginx环境&#xff0c;搭建wordpress Linux系统设置&#xff1a;Ubuntu 22 配置apache2 安装apache2 sudo apt -y install apache2设置端口号为8080 sudo vim /etc/apache…

【MISRA-C 2012】浓缩版解读

文章目录 1、前言2、简介2.1、如何看待MISRA-C 20122.2、准则(guidelines)里面的指示(Directive)和规则(Rule)2.3、准则(guidelines)的级别(Category) 3、若干重要的Directive和Rule3.1、指示(Directive)Dir 2.1&#xff08;必要&#xff09; 所有的源文件编译过程不得有编译错…

【机器学习 | ARIMA】经典时间序列模型ARIMA定阶最佳实践,确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

2023年广东成考成绩公布!分数线也出来了!

广东考试院最新公布&#xff0c;参加2023年成人高考的考生&#xff0c;在今天&#xff08;11月23日&#xff09;18:20分后将受到官方的成绩短信。 考生也可以通过考试院小程序和官网网站查询成绩。 另外&#xff0c;考生收到的短信分数为卷面分&#xff0c;不含25岁年龄加分&am…

RAD Studio 12 IDE 界面主题设置

RAD Studio 12 IDE 界面主题设置 RAD Studio 12 IDE 界面主题设置RAD Studio 安装完成后自身默认背景界面高亮的&#xff0c;由于长期编程累眼&#xff0c;一般要自己设置暗色界面。具体操作如下&#xff1a; Light 浅色或 Dark 深色主题Tools->Options->User Interf…

【LeetCode刷题】--59.螺旋矩阵II

59.螺旋矩阵II class Solution {public int[][] generateMatrix(int n) {int[][] res new int[n][n];int count 1;int left 0,right n-1,top 0,bottom n -1;while(left < right && top < bottom){for(int col left;col < right;col){ //从左往右res[to…

超级利器!Postman自动化接口测试让你提升测试效率,节省宝贵时间!

Postman自动化接口测试 该篇文章针对已经掌握 Postman 基本用法的读者&#xff0c;即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境&#xff1a; Window 7 - 64 Postman 版本&#xff08;免费版&#xff09;&#xff1a;Chrome App v5.5.3 …

unity shaderGraph实例-可交互瀑布

不要问我水在哪里&#xff0c;你自己相像这是一个瀑布&#xff0c;瀑布的效果我还不会做 效果展示 整体结构 这里片元着色器最后输出的baseColor应该是黑色&#xff0c;白色为错误。 各区域内容 区域1 计算球到瀑布的距离&#xff0c;然后减去一个值&#xff0c;实现黑色区域…
最新文章