JSP 中的Servlet的映射

 写好一个 叫HelloWorld的servlet,之后直接在地址栏中输入链接http://localhost:8080/servlet/HelloWorld,结果并不能得到想要的运行结果,server会报错:Error 404--Not Found

这是什么原因了?

Servlet必须使用(Tomcat所在路径)/Tomcat/webapps/ROOT/WEB-INF这个目录下面的web.xml文件进行注册,打开这个web.xml文件,在里面加入:

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/helloworld</url-pattern>
</servlet-mapping> 

下面解释下这个结构的作用

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>

表示指定包含的servlet类。而以下的结构:

<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>

表示指定HelloServlet应当映射到哪一种URL模式。

<servlet-mapping>元素为一个servlet实例提供一个URL pattern。<servlet-mapping>元素必须包含<servlet-name>元素和<url-pattern>元素。
 <servlet-name>元素必须和在 web.xml 文件某处<servlet>元素中定义的<servlet-name>元素一致。由于一个容器中同一个servlet可能有多个实例在运行,容器就使用<servlet-name>来确定一个servlet的映射。


上例的/servlet/HelloWorld 被映射到一个叫HelloWorld的servlet。如果一个servlet 被一个容器定义在 http://localhost:8080/, 那末这个元素就告诉容器HelloWorld servlet 要以以下开头的 requests来访问
http://localhost:8080/servlet/HelloWorld

在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/servlet/HelloWorld,就没有问题了

同时,需要注意,不同的pattern可以映射到同一个servlet,但同一个pattern不能映射到不同的servlet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值