servlet在web.xml中怎么配置url-pattern?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet在web.xml中怎么配置url-pattern?相关的知识,希望对你有一定的参考价值。

参考技术A

url-pattern是给外部提供的一个访问DoGetDemo类的接口,可以自己随意定义,然后在IE里面写入这个配置内容。

<url-pattern>:

<url-pattern>是我们用Servlet做Web项目时需要经常配置的标签,例:

<servlet>

<servlet-name>index</servlet-name>

<servlet-class>com.we.servlet.IndexServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>index</servlet-name>

<url-pattern>/index</url-pattern>

</servlet-mapping>

当我们在浏览器的地址栏里输入http://localhost:8080/we/index时[假设我部署在webapps目录下的项目名为we]

就会匹配到我们指定的<url-pattern>中,即/index然后一步一步找到对应的<servlet-class>

那我们输入的URL:http://localhost:8080/we/index又是如何与<url-pattern>中的/index匹配的呢?

首先我们要知道URL的组成

http://localhost:8080    我们可以理解为是我们的服务器地址,而该地址之后的部分我们统称为:RequestURI

RequestURI是我们需要重点注意的部分,其又可以分解为几部分:

1、/we是我们的ServletConext的上下文地址,我们称为ServletContext Path,可以简单理解为部署项目时的webapps目录下的项目名

2、/index是我们的Servlet的地址,我们称为Servlet Path,这里就是需要与我们的<url-pattern>匹配的内容

注:在/index后边我们还可以跟其他的信息,例如:/index?name=admin&pass=admin  这是其中一种明文表示的方式

在servlet中的xml配置

今天弄了大半天,才弄好了,还是请教了别人,主要原因在于把web.xml文件放在了WEB-INF文件夹下面了,正常的情况是在WebRoot下面的。

还有一个,我是在MyEclipse中操作的,起初不知道,在创建web project时候,没有出现web.xml文件,所以web.xml文件都是复制过来的。

在这里,给大家讲讲怎么在创建web project的时候也一起创建了web.xml文件。

(1)在创建web project工程时,写好name后,不要直接点Finish,我就是直接点了Finish才不行的,这个时候点击Next,如下图

(2)点击Next后,看到下图所示,我们还是点击Next

(3)点击Next后,看到下图所示,这个时候,我们应该把图片上的那个方框打上勾才行,这样才可以创建web.xml文件

(4)打上勾后,再点击Finish就行了

 

 

 

 

 

 

回归正文,主要的内容还是在xml文件的配置中,文件名就不写了,直接看图

 

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <title>input.html</title>
 5 
 6   </head>
 7   
 8   <body>
 9     <form action="InputServlet" method="post">
10     输入内容:<input type="text" name="info">
11     <input type="submit" value="提交">
12     </form>
13   </body>
14 </html>

 

 1 package org.lxh.serletdemo;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 public class InputServlet extends HttpServlet{
11 
12     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
13             throws ServletException, IOException {
14         String info= req.getParameter("info");
15         PrintWriter out = resp.getWriter();
16         out.print("<html>");
17         out.print("<head><title>MLDNJAVA</title></head>");
18         out.print("<body>");
19         out.print("<h1>"+info+"</h1>");
20         out.print("<body>");
21         out.print("</html>");
22         out.close();
23 
24     }
25 
26     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
27             throws ServletException, IOException {
28         this.doGet(req, resp);
29     }    
30 }

 

<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">
<servlet>                                                    <!-- 定义servlet -->
        <servlet-name>input</servlet-name>                    <!--与servlet-mapping相对应  -->
        <servlet-class>                                        <!-- 定义包.类名称 -->
        org.lxh.serletdemo.InputServlet
        </servlet-class>        
    </servlet>
    <servlet-mapping>                                        <!-- 映射路径 -->
        <servlet-name>input</servlet-name>                    <!-- 与servlet相对应 -->
        <url-pattern>/InputServlet</url-pattern>            <!-- 页面的映射路径 -->
    </servlet-mapping>
</web-app>

 

 

在input.html中的action="InputServlet"  这个表示的示表单提交就会跳转到另一个页面中去,在web.xml这件中又配置了<url-pattern>/InputServlet</url-pattern> <!-- 页面的映射路径 -->,这个 <url-pattern>配置的是input.html这件中action要跳转的路径,但是在web.xml中有映射路径,也有定义了servlet,所有这个时候又跳转到servlet设置的文件中去,在这里就是

<servlet-class> <!-- 定义包.类名称 --> org.lxh.serletdemo.InputServlet </servlet-class>,所以这个时候就跳转到

执行InputServlet.java中去

 

如图:

点击提交后

 

以上是关于servlet在web.xml中怎么配置url-pattern?的主要内容,如果未能解决你的问题,请参考以下文章

spring boot框架的web.xml文件怎么配置

在servlet中的xml配置

spring boot框架的web.xml文件怎么配置

在web.xml文件中配置Servlet时,主要配置哪些信息?

servlet在web.xml的配置

Spring MVC中,applicationContext.xml [ServletName]-servlet.xml配置文件在web.xml中的配置详解...