* Servlet 想要被访问,必须配置其访问路径(urlPatterns)
1.一个Servlet,可以配置多个urlPatterns
例如:@WebServlet(urlPatterns = {"/demo7","/demo8"})
2.urlPatterns配置规则
(1)精确匹配(通过WebServlet对Servlet 配置的这个路径,和你浏览器访问的这个路径是一致的,就是精确匹配)
配置路径:@WebServlet("/user/select")
访问路径:localhost:8080//web-demo/user/select
示例代码:
- package itheima.web;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
- /**
- * urlPatterns匹配规则
- * 1.精确匹配
- */
- @WebServlet(urlPatterns = "/user/select")
- public class ServletDemo8 extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为post.demo8");
- }
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为get.demo8");
- }
- }
浏览器访问示例
控制台示例 (调用doGET方法)
(2)目录匹配
配置路径:@WebServlet(" /user/* ")
访问路径:
localhost:8080//web-demo/user/aaa
localhost:8080//web-demo/user/bbb
示例代码:
- package itheima.web;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
- /**
- * urlPatterns匹配规则
- * 2.目录匹配
- */
- @WebServlet(urlPatterns = "/user/*")
- public class ServletDemo9 extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为post.demo8");
- }
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为get.demo9");
- }
- }
浏览器访问示例:
控制台示例 :调用doGET方法)
(3)扩展名匹配
配置路径:@WebServlet(" *.do ")
访问路径:
localhost:8080//web-demo/aaa.do
localhost:8080//web-demo/bbb.do
示例代码:
- package itheima.web;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
- /**
- * urlPatterns匹配规则
- * 2.扩展名匹配匹配
- */
- @WebServlet(urlPatterns = "*.do")
- public class ServletDemo10 extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为post.demo8");
- }
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为get.demo10");
- }
- }
浏览器访问示例:
控制台示例 :调用doGET方法)
(4)任意匹配
配置路径:
@WebServlet("/")
@WebServlet(" /* ")
访问路径:
localhost:8080//web-demo/haha
localhost:8080//web-demo/hehe
/*与/的区别:
*如果项目中部署了”/“,会覆盖掉tomcat中的DefaultServlet,当其他的urlPatterns斗匹配不上时,就会走这个servlet
*如果项目中部署了”/*“,意味着可以匹配任意访问路径
示例代码:
- package itheima.web;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
- /**
- * urlPatterns匹配规则
- * 2.扩展名匹配匹配
- */
- @WebServlet(urlPatterns = "/")
- public class ServletDemo11 extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为post.demo8");
- }
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("你现在使用的是method为get.demo11");
- }
- }
浏览器访问示例:
控制台示例 :调用doGET方法)