servlet

Servlet Config (熟练)

ServletConfig对象对应web.xml文件中的<servlet>元素。例如你想获取当前Servlet在web.xml文件中的配置名,那么可以使用servletConfig.getServletName()方法获取!

你不能自己去创建ServletConfig对象,Servlet的init()方法的参数就是ServletConfig类型的。Tomcat在调用init()方法时,会传递ServletConfig对象。你可以在init()方法中使用它!

XML 复制代码
<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>cn.tx.servlet.Servlet1</servlet-class>
    <init-param>
        <param-name>username</param-name>
        <param-value>root</param-value>
    </init-param>
    <init-param>
        <param-name>password</param-name>
        <param-value>txjava</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
XML 复制代码
String username = Cservletonfig.getInitParameter("username");
System.out.println("username:"+username);
Enumeration<String> parameterNames = servletConfig.getInitParameterNames();
while (parameterNames.hasMoreElements()){
    String element = parameterNames.nextElement();
    System.out.println(element+":"+servletConfig.getInitParameter(element));
}

添加了两个初始化参数,第一个参数的名称为paramName1,第一个参数的值为paramValue1;第二个参数的名称为paramName2,第二个参数值为paramValue2。

在<servlet>元素中可以加载多个<init-param>,每个<init-param>表示一个参数。<init-param>下有两个子元素:<param-name>和<param-value>,其中<param-name>表示参数的名称,而<param-value>元素参数的值。

注意,<init-param>是添加到<servlet>元素中,而不是<servlet-mapping>中。

  使用ServletConfig对象的getInitParameter(String paramName)方法可以获取指定参数名称的参数值。getInitParameterNames()方法返回所有参数的名字,返回值类型为Enumeration。

S ervlet 路径映射(熟练)

关于Url-Pattern的配置:

  • 完全路径匹配 以/开头 例如 /aaa /aaa/bbb
  • 目录匹配 以/开头 例如 /aaa/* /*
  • 扩展名匹配 不能以/开头 例如 *.do *.action ....

优先级: 完全路径匹配 > 目录匹配 > 扩展名匹配

经典错误: /*.do

举例:

对于如下的一些映射关系:

  • Servlet11 映射到 /abc/*
  • Servlet22 映射到 /*
  • Servlet33 映射到 /abc
  • Servlet44 映射到 *.do

问题:

  • URL为"/abc/a.html","/abc/*"和"/*"都匹配,哪个servlet响应

Servlet引擎将调用Servlet1。同样是目录匹配所限定范围更精确的先匹配

  • URL为"/abc"时,"/abc/*"和"/abc"都匹配,哪个servlet响应

Servlet引擎将调用Servlet3。

  • URL为"/abc/a.do"时,"/abc/*"和"*.do"都匹配,哪个servlet响应

Servlet引擎将调用Servlet1。

  • URL为"/a.do"时,"/*"和"*.do"都匹配,哪个servlet响应

Servlet引擎将调用Servlet2.

  • URL为"/xxx/yyy/a.do"时,"/*"和"*.do"都匹配,哪个servlet响应

Servlet引擎将调用Servlet2。

服务器端路径 /demo4 (转发、包含...)

相对路径和绝对路径( 熟练 )

Java中使用的路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!

我们以下面的项目路径来进行举例:

绝对路径

绝对路径是指目录下的绝对位置,直接到达目标位置

带有协议完整路径 (跨网站) http://localhost/day5/hello

以/ 开始路径 (同一个站点内) : /day5/hello

服务器端和客户端对于/ 的区别

客户端访问路径:/day5/hello

服务器内部路径:/hello, 多用于服务器跳转, 页面包含(jsp)

测试结果

Servl etContext (熟练)

S ervlet Context 介绍

ServletContext是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。

  • WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
  • 由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
  • 查看ServletContext API文档,了解ServletContext对象的功能。
相关推荐
圣光SG1 天前
Servlet学习笔记
笔记·学习·servlet
智码看视界5 天前
Tomcat架构深度拆解:Connector和Container到底怎么配合的?
java·servlet·架构·tomcat·web服务器
qq_452396239 天前
第三篇:《Jenkins Pipeline as Code:Declarative Pipeline 深度实战》
java·servlet·jenkins
AIOps打工人19 天前
`create_agent` 没报错,但 Agent 就是不调工具
java·开发语言·servlet
sbjdhjd1 个月前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
ywl4708120871 个月前
springSecurity+jwt,简单版demo
java·前端·servlet
飞天狗1111 个月前
零基础JavaWeb入门——第五课第一小节:九大内置对象 · 第1个:request(请求对象)
java·开发语言·前端·后端·servlet
飞天狗1111 个月前
零基础JavaWeb入门——第4课:表单处理 —— 浏览器怎么把数据发给服务器
java·开发语言·前端·后端·servlet
未若君雅裁1 个月前
责任链模式详解:从Servlet过滤器到订单创建流程
servlet·责任链模式
逢君学术论文AI写作1 个月前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作