Tomcat Notes: URL Mapping

This is a personal study notes of Apache Tomcat. Below are main reference material.

  • [1、URL Mapping To Resources](#1、URL Mapping To Resources)
    • [1.1、What we request for when hitting a URL](#1.1、What we request for when hitting a URL)
    • [1.2、Mapping Code](#1.2、Mapping Code)
      • [1.2.1、Mapping To Resources](#1.2.1、Mapping To Resources)
        • [1.2.1.1、Access Resourses in ROOT](#1.2.1.1、Access Resourses in ROOT)
      • [1.2.2、Mapping To Service](#1.2.2、Mapping To Service)

1、URL Mapping To Resources

1.1、What we request for when hitting a URL

When we hit a URL on browser like localhost:8080/example/hellowe are actually reqeusting a resource or service.

Resource refer to a file like .html,.image. For example when we hit example root full path which is localhost:8080/example, we are requesting index.htmland this file will be explained and rendered by browser and showed in a readable way.

I perceive those static files as a kind of resource.

But sometims we only request a service rather than a static file.

For example we click a buttton then browser sends a http request, supposing it's URL is https://www.system.com/delete?id=1.

A Tomcat application recieve the request and provide service which is deleting a record in database.

This is requesting for a servcie.

1.2、Mapping Code

Mapping to a resource is easy. It usually is like access file system.

But mapping to a service is more tricky.

I'm going to show how Tomcatmapping URL to a resource or service.

Supposing our web application's root URL is localhost:8080/myweb/

we have a war file like below. I omit some files for readability.

复制代码
myweb.war
----index.html
----assets
--------hello.img
----WEB-INF
---------web.xml
---------classes
-------------HelloServlet.class
----META-INF

1.2.1、Mapping To Resources

As i mentioned, mapping URL to a resource basically is similar to accessing a file in file system.

For example, If we want to get index.html, just call localhost:8080/myweb/index.html.

If wanting hello.img, just call localhost:8080/myweb/assets/hello.img.

So it's very similiar to file system.

Just notice that web root URL localhost:8080/myweb/represents hello.war's first level subdirectory. Then you can get all static resources hierarchyly just as the same way in file system.

1.2.1.1、Access Resourses in ROOT

Tomcat can have mutiple web applications which are located under webappsfolder.

复制代码
webapps
----myweb
----myweb1
----myweb2
----ROOT
---------root.txt

What I just showed is how to access static resources in myweb.

If accessig files in myweb, we should take localhost:8080/mywebas root URL.

If accessig files in myweb1, we should take localhost:8080/myweb1as root URL.

So mywebor myweb1is context which specifies which web apps you want to access.

Besides those web applicaton developed by programmer, Tomcatalways has a folder called ROOTunder webapps.

If you want to access static resources under ROOT, root.txtfor example, just remove the context and take localhost:8080/as the root URL representig the first level subdirectory of ROOT.

Thus just call localhost:8080/root.txtthen you can get root.txt.

1.2.2、Mapping To Service

Mapping URL to service could be more tricky. Because Java servlet classes usually have more deeper file structure, making URL too long.

复制代码
com.org.servlet.MyServlet.java			# It has 4 levels directory in total
acme.personnel.management.MedicalPlan	# very long

For readability Tomcat has a configuration file called web.xmlto map to resources with a more simple name.

Supposing we have a servlet called DeleteRecordServletwhose doGetmethod is to delete a record in database, whose location is myweb.war/com/org/servlet/DeleteRecordServlet.java.

复制代码
myweb.war			# omit some files
----com
--------org
------------servlet
----------------DeleteRecordServlet.java
----META-INF
--------web.xml
--------classes
------------com
----------------org
--------------------servlet
------------------------DeleteRecordServlet.class

Now we need to configure some mapping in web.xml, mapping a shorter url to DeleteRecordServlet.

xml 复制代码
<?xml version = "1.0" encoding = "ISO-8859-1"?>
<web-app>
    <servlet>
        <servlet-name>deleteServlet</servlet-name>
        <servlet-class>com.org.servlet.DeleteRecordServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>deleteServlet</servlet-name>
        <url-pattern>/delete</url-pattern>
    </servlet-mapping>
    
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

In this way we can hit localhost:8080/myweb/deletewhich is more simple than normal url to call DeleteRecordServlet.

相关推荐
毕设源码-郭学长3 分钟前
【开题答辩全过程】以 基于java的校园安全管理系统为例,包含答辩的问题和答案
java·开发语言
雨中飘荡的记忆21 分钟前
拼团系统设计与实现
java·spring boot
青云交21 分钟前
Java 大视界 -- Java 大数据在智能医疗影像数据标注与疾病辅助诊断模型训练中的应用
java·大数据·多模态融合·医疗影像标注·辅助诊断·临床 ai·dicom 处理
雨中飘荡的记忆22 分钟前
Step Builder模式实战
java·设计模式
悦来客栈的老板23 分钟前
AST反混淆实战|reese84_jsvmp反编译前的优化处理
java·前端·javascript·数据库·算法
悟空码字26 分钟前
SpringBoot实现日志系统,Bug现形记
java·spring boot·后端
iナナ26 分钟前
Java自定义协议的发布订阅式消息队列(二)
java·开发语言·jvm·学习·spring·消息队列
狂奔小菜鸡26 分钟前
Day24 | Java泛型通配符与边界解析
java·后端·java ee
天天摸鱼的java工程师31 分钟前
🐇RabbitMQ 从入门到业务实战:一个 Java 程序员的实战手记
java·后端
ZHang......31 分钟前
JDBC 笔记
java·笔记