欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb 之Servlet 干货详解(二)

程序员文章站 2022-06-03 09:23:08
...

让我们续上篇继续来详解吧,话不多说,上货~~

Servlet

一.url-pattern设置

<url-pattern>某个servlet在浏览器的访问路径(路径映射)</url-pattern>

 

一个Servlet可以设置多个url-pattern

 

url-pattern配置方式共有三种:

  • 完全路径匹配 :只有浏览器访问路径和我们设置的路径完全相同时,才能访问。

格式:以 / 开始

例如:  /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6

  • 目录匹配 :只要浏览器的访问路径中的目录 和 我们设置的路径中的目录 完全相同,就能访问。

格式:以 / 开始 需要以 * 结束

例如: /*  (所有) ,/aaa/* (aaa目录下的所有) ,/aaa/bbb/*

  • 扩展名匹配 :只要浏览器访问路径中的扩展名  和 我们设置路径中的扩展名 完全相同,就能访问。

格式:不能以 / 开始 以 * 开始的. 例如: *.do , *.action 、*.jsp 、*.jpg

 

<servlet>
    <servlet-name>Demo1Servlet</servlet-name>
    <servlet-class>com.czxy.demo1.web.servlet.Demo1Servlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Demo1Servlet</servlet-name>
    <url-pattern>/hehe/d1</url-pattern>
    <url-pattern>/xixi/*</url-pattern>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>JavaWeb 之Servlet 干货详解(二)

  • 缺省路径 /

通常情况访问 html页面时,首先从当前web项目的web.xml文件寻找匹配路径,如果如果没有找到,再从tomcat默认的web.xml匹配,将使用缺省servlet

 

tomcat获得匹配路径时,优先级顺序:完全匹配 > 目录匹配 > 扩展名匹配 > 缺省匹配

 

 

优先级:

任何请求路径,都会进行如下的四个匹配

if(完全路径匹配){

 

}else if(目录匹配){

 

}else if(扩展名匹配){

 

}else{

缺省匹配

}

 

JavaWeb 之Servlet 干货详解(二)

Http://localhost:8080/javaweb_day04_1/hehe/d1     完全路径匹配

http://localhost:8080/javaweb_day04_1/xixi/nihao    目录匹配

http:// localhost:8080/javaweb_day04_1/hehe/nihao.do  扩展名匹配

http:// localhost:8080/javaweb_day04_1/login.html   缺省匹配

http:// localhost:8080/javaweb_day04_1/007.jpg      缺省匹配

 

 

tomcat自带的一个缺省Servlet。

缺省servlet:帮我将资源找到,写出到响应体中

特殊:如果资源找不到

JavaWeb 之Servlet 干货详解(二)

 

 

练习:

JavaWeb 之Servlet 干货详解(二)

 

 

 

 

二.ServletConfig对象

一个Servlet有一个ServletConfig对象,相当于某个servlet的身份证

方法名

返回值类型

描述

getInitParameter(name)

String

获得Servlet的初始化参数的

getServletContext()

ServletContext

获得ServletContext上下文对象的引用

getServletName()

String

获得Servlet在web.xml中配置的name的值。

及<servlet-name>标签配置内容。

 

某个Servlet是有初始化参数的:

<servlet>
    <servlet-name>Demo2Servlet</servlet-name>
    <servlet-class>com.czxy.demo1.web.servlet.Demo2Servlet</servlet-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</servlet>

 

public String run1(){
    String value = getServletConfig().getInitParameter("encoding");
    String name = getServletConfig().getServletName();
    return null;
}

 

 

 

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多! 

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!

注: 如果本篇有需要改进的地方或错误,欢迎大神们指定一二~~