Servlet url-pattern /与/*区别
2016-03-14 16:47
495 查看
以前在使用Servlet的时候,配置url-pattern基本上都是指定的路径,也没有仔细的研究,最近突然发现了一个问题,我们将url-pattern配制成/*,那么Servlet会处理与其匹配的路径,那么我们配制成/是不是效果一样呢?下面我们将通过实际示例来验证一下。
首先我们新建一个Web程序,创建过程这里就不再叙述了。然后我们再创建一个Servlet用于测试
这个Servlet很简单,只是向页面输出一句话,我们需要在web.xml中进行配置,让其生效。首先我们先将
运行程序,通过浏览器访问一下:
我们在浏览器地址栏输入:
Tomcat会把这个请求交给我们刚才创建的Servlet去处理,再输入一些其他的地址也会交给这个Servlet来处理,那么我们是不是可以推断,当
我们继续创建两个文件:test.jsp和test.html
test.html
test.jsp
然后我们通过浏览器访问
下面,修改
web.xml
修改完成后,我们先来访问
这个时候访问到了真正的jsp页面,而不是由我们的Servlet来处理请求。
最后,我们来总结一下:当
以上为个人的疑问以及验证的过程,有不对的地方,欢迎指正。
首先我们新建一个Web程序,创建过程这里就不再叙述了。然后我们再创建一个Servlet用于测试
package com.gujin.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UrlPatternTest extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter writer = resp.getWriter(); writer.print("this is UrlPatternTest Servlet."); writer.flush(); writer.close(); } }
这个Servlet很简单,只是向页面输出一句话,我们需要在web.xml中进行配置,让其生效。首先我们先将
url-pattern配制成
/*看一下效果。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Servlet</display-name> <servlet> <servlet-name>test</servlet-name> <servlet-class>com.gujin.servlet.UrlPatternTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
运行程序,通过浏览器访问一下:
我们在浏览器地址栏输入:
http://127.0.0.1/Servlet/,查看页面显示结果:
Tomcat会把这个请求交给我们刚才创建的Servlet去处理,再输入一些其他的地址也会交给这个Servlet来处理,那么我们是不是可以推断,当
url-pattern配置成
/*的时候,Tomcat会将所有的请求全部交由对应的Servlet进行处理。当访问的地址正好有对应的文件存在时,依然如此吗?我们来验证一下。
我们继续创建两个文件:test.jsp和test.html
test.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> </head> <body>this is test page. </body> </html>
test.jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> </head> <body>this is test.jsp page. </body> </html>
然后我们通过浏览器访问
http://127.0.0.1/Servlet/test.html和
http://127.0.0.1/Servlet/test.jsp,我们发现请求依然是交给了我们的Servlet去处理。
下面,修改
url-pattern为
/,我们来验证一下与
/*是否相同
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Servlet</display-name> <servlet> <servlet-name>test</servlet-name> <servlet-class>com.gujin.servlet.UrlPatternTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
修改完成后,我们先来访问
http://127.0.0.1/Servlet/,结果好像与原来一样,再访问
http://127.0.0.1/Servlet/test.html,结果还是一样,我们现在可能会想这两者会不会就没区别呢?别急,我们还有一个地址,好吧,我们最后再访问
http://127.0.0.1/Servlet/test.jsp,神奇的事情出现了,结果与原来不一样了。
这个时候访问到了真正的jsp页面,而不是由我们的Servlet来处理请求。
最后,我们来总结一下:当
url-pattern配置成
/*的时候,Tomcat会将所有的请求交给对应的Servlet进行处理,当
url-pattern配置成
/的时候,多数情况下与
/*效果一致,但是,当访问的路径正好对应jsp文件时,Tomcat会访问真实的jsp文件而不是把请求交给对应的Servlet处理。
以上为个人的疑问以及验证的过程,有不对的地方,欢迎指正。
相关文章推荐
- Java Servlet生成JSON格式数据并用jQuery显示的方法
- jsp和servlet中实现页面跳转的方式实例总结
- java servlet结合mysql搭建java web开发环境
- Servlet与JSP间的两种传值情况
- JSP、Servlet中get请求和post请求的区别总结
- jsp和servlet的区别探讨
- Struts2访问servlet分享
- java中Servlet处理乱码的方法
- Servlet 过滤器详细介绍
- JSP+Servlet+JavaBean实现登录网页实例详解
- servlet中session简介和使用例子
- 在Jsp Servlet中页面重新定向总汇
- JSP使用Servlet作为控制器实现MVC模式实例详解
- JSP使用Servlet过滤器进行身份验证的方法
- Servlet动态网页技术详解
- jsp和servlet操作mysql中文乱码问题的解决办法
- 基于jsp+servlet实现的简单博客系统实例(附源码)
- js调用后台servlet方法实例
- 利用JQuery和Servlet实现跨域提交请求示例分享