精华内容
下载资源
问答
  • url-pattern >/< /url-pattern >和< url-pattern >/*< /url-pattern >的区别 标签< url-patten >的几种用法 1. < url-pattern >/*< /url-pattern > 当我们使用 /* 后,我们...

    < url-pattern >/< /url-pattern >和< url-pattern >/*< /url-pattern >的区别

    标签< url-patten >的几种用法

    1. < url-pattern >/*< /url-pattern >
    当我们使用 /* 后,我们可以匹配所有的请求,即所有的请求都会经过该标签对应的 Servlet ,即能匹配到所有的 url ,包括路径型的和后缀型的 url (包括/login,.jsp,.js和*.html等),此时就需要注意静态资源了,事实上很多静态资源都是不需要经过 Servlet 的,会造成资源浪费,此时就需要做特殊处理;

    2. < url-pattern >/< /url-pattern >
    会匹配到所有像 /login 这样的路径型url,但不会匹配到 后缀型的url(即 *.html等)。若使用该标签,则需要在 springmvc 配置文件中配置 静态资源映射

    <!-- 资源映射 -->
    <mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
    <mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
    <mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
    

    3. < url-pattern >*.do< /url-pattern > 推荐用法
    使用该标签,可以避免对静态资源的过滤,这样也就不需要像 方法1、2 那样需要对静态资源做特殊处理。

    4、最后,附上常见 SpringMVC 配置文件,希望对大家有用

    <!-- 解决post乱码
    	解决在url中传递中文参数时的乱码 -->
      <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>utf-8</param-value>
        </init-param>
        <init-param>
          <param-name>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <!-- 配置所有请求都经过该拦截器,即所有资源都统一使用 utf-8 防止乱码 -->
      <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    
    <!-- 前端控制器,提供SpringWebMVC的集中访问点,而且负责职责的分派 -->
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        
        <!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载 -->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!-- 
    	1、load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法);
    	2、当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
    	3、当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载;
    	4、正数的值越小,该servlet的优先级越高,应用启动时就越先加载;
    	5、当值相同时,容器就会自己选择顺序来加载。
    	-->
        <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
       <!-- 
    	1、welcome-file-list一般情况下只能使用静态网页,如果非要把他配置成SpringMVC的控制器URL就会报错;
    	2、若想使用动态网页(*.jsp),则 servlet 不能带有扩展名,否则就当成静态文件处理,即若想欢迎页面访问 *.jsp 页面,则扩展名不能有, <welcome-file>/pages/index</welcome-file>
    	-->
      <welcome-file-list>
        <welcome-file>/pages/index.html</welcome-file>
      </welcome-file-list>
    
    展开全文
  • 过滤器六:url-pattern设置过滤范围

    千次阅读 2021-03-01 22:36:53
    目录 一:引入问题: 二:url-pattern设置过滤范围简介: 三:案例演示 0.准备内容: 1.情况一:web.xml中的url-pattern是/test.jsp时: 2.情况二:web.xml中的url-pattern是/servlet/*时: 四:着重说明:“三:...

    目录

    一:引入问题:

    二:url-pattern设置过滤范围简介:

    三:案例演示

    0.准备内容:

    1.情况一:web.xml中的url-pattern是/test.jsp时:

    2.情况二:web.xml中的url-pattern是/servlet/*时:

    四:着重说明:“三:案例演示”部分的补充说明:几个需要注意的点

    1.第一个注意的点,Servlet的url设置成“/”,可以充当根路径,此时过滤器的url-pattern设置成“/”的时候,过滤器可以拦截这个Servlet

    2.第二个需要注意的点:默认的首页index.jsp会让第一点中的东西失效

    3.面对1、2两个注意点,一个不错的做法

    4.复合url-pattern:同时过滤多种url

    五:设置过滤范围:注解的写法


    一:引入问题:

            通常url-pattern设置成“/*”;即对所有请求进行过滤;但是当有特殊要求的时候,即改变过滤范围的时候如何做?


    二:url-pattern设置过滤范围简介:


    三:案例演示

    0.准备内容:

    案例:包括UrlPatternFilter过滤器类;SampleServlet1这个Servlet类;test.jsp;

    test.jsp:访问的url为:localhost:8080/url-pattern/test.jsp

    SampleServlet1这个Servlet:访问的url为:localhost:8080/url-pattern/servlet/sample1

    package com.imooc.filter;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class SampleServlet1
     */
    @WebServlet("/servlet/sample1")
    public class SampleServlet1 extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public SampleServlet1() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		// 仅为演示目的,这儿打印类名
    		response.getWriter().println("This is"+this.getClass().getSimpleName());
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request, response);
    	}
    
    }
    

    过滤器类:UrlPatternFilter:本篇博客的主要目的是url-pattern,所以在这个过滤器的doFilter方法中,就打印请求的url:

    package com.imooc.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class UrlPatternFilter implements Filter{
    
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    			throws IOException, ServletException {
    		// TODO Auto-generated method stub
    		HttpServletRequest req = (HttpServletRequest)request;
    		HttpServletResponse res = (HttpServletResponse)response;
    		// 这儿打印拦截到的url
    		System.out.println("拦截到"+req.getRequestURL()); // getRequestURL选用的是返回值为StringBuffer的那一个
    		chain.doFilter(request, response);
    		
    	}
    
    	@Override
    	public void init(FilterConfig arg0) throws ServletException {
    		// TODO Auto-generated method stub
    		
    	}
    
    }
    

    1.情况一:web.xml中的url-pattern是/test.jsp时:

    当web.xml中的url-pattern是/test.jsp时:即此时是资源的精准匹配。

    访问test.jsp时:

    但是如果,访问SampleServlet1的时候: 

         

    2.情况二:web.xml中的url-pattern是/servlet/*时:

    如果想让过滤器拦截到localhost:8080/url-pattern/servlet/sample1,url-pattern应该这样设置:

    效果:发现,此时可以拦截到localhost:8080/url-pattern/servlet/sample1了;

    注解:<url-pattern></url-pattern>标签中的url值,如只写/servlet/*就行了,而不用写成/url-pattern/servlet/*,即其省略了上下文路径!


    四:着重说明:“三:案例演示”部分的补充说明:几个需要注意的点

    /:映射的问题:需要说明的几个容易出错的问题!!!

    1.第一个注意的点,Servlet的url设置成“/”,可以充当根路径,此时过滤器的url-pattern设置成“/”的时候,过滤器可以拦截这个Servlet

    首先,创建SampleServlet2:这个Servlet的url为“/”,即代表,要把这个Servlet设置成项目的默认首页,即当直接访问localhost:8080/url-pattern/的时候,会访问这个Servlet,然后这个Servlet会转到特定的前端界面(html或jsp等啦);

    同时,web.xml中的过滤器的url-pattern设置为:“/”,以期访问SampleServlet2的时候,过滤器能够拦截这个请求:

    如果访问:localhost:8080/url-pattern/:后面不增加其他任何资源,其直接访问的是SampleServlet2(即此时,SampleServlet2看来就像是应用的“默认首页”(其实不能这么说啦));同时,过滤器也拦截了这个请求;

    但是,需要注意,这个“/”映射web应用根路径的时候,只对Servlet起作用!而且:默认的首页index.jsp会让其失效!!!

    …………………………………………………… 

    2.第二个需要注意的点:默认的首页index.jsp会让第一点中的东西失效

    如果此时在项目中,增加一个index.jsp:默认首页

    那么此时,访问localhost:8080/url-pattern/的时候,SampleServlet2和index.jsp哪个生效嘞?

    此时,再访问localhost:8080/url-pattern/:后面不增加其他任何资源的时候,访问的是默认首页index.jsp,而不是访问SampleServlet2了;同时在程序的控制台,也并没有被过滤器拦截的记录。

    疑问:即也配置了SampleServlet2的url为“/”,即设置了根路径,,也在web.xml中配置了过滤器url-pattern为“/”;为什么访问localhost:8080/url-pattern/的时候,不仅没有访问SampleServlet2,而且过滤器也没有对localhost:8080/url-pattern/进行拦截呐???

    原因:这里涉及到了Tomcat的一个底层机制,尽管在url中访问的是“/”(根路径,也就是localhost:8080/url-pattern/啦),但是因为web.xml配置了默认首页(就是index.html,index.jsp那些啦),实际上在访问localhost:8080/url-pattern/这个根路径的时候,隐式的跳转到了index.jsp;            同时过滤器并没有拦截index.jsp;

    同时发现,默认首页的优先级是比Servlet(url设置成"/")要高的,一旦设置了默认首页(如有了index.jsp)后,会让上面的那个路径设置成“/”的SampleServlet2失效,也就是上面所说的“默认首页index.jsp会让“/”的作用失效”。

    如果,已经有了index.jsp,还想让过滤器对index.jsp(默认首页)进行拦截的话,此时过滤器的url-pattern需要设置成:*.jsp,或者/index.jsp才行;

    ……………………………………………………

    3.面对1、2两个注意点,一个不错的做法

    为了避免上述问题,不错的做法是:在实际项目开发中,尽量不要设置index.jsp这样的默认首页;而是设置url为“/”的Servlet,通过这个映射到根路径的Servlet,来去跳转到指定的页面进行显示。这样做可以保证(url设置成“/”的)Servlet不会失效,又能手动的控制我们要显示的页面是哪个;!!!!!!!!!!

    ……………………………………………………

    4.复合url-pattern:同时过滤多种url

    对于过滤器来说,既想对默认根路径进行过滤,又想对所有jsp进行过滤,还想对所有Servlet前缀的url进行过滤,这种复合的应该怎么做?

    结果:发现,此时访问默认首页index.jsp也被过滤器拦截了:很简单,因为,index.jsp是默认首页,当浏览器访问localhost:8080/url-pattern/的时候,自然会访问index.jsp;但是,又因为在过滤器中添加了*.jsp,所以自然也会对index.jsp进行拦截了。


    五:设置过滤范围:注解的写法

     

    展开全文
  • <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app xmlns="http://java.sun.com/xml/ns/javaee" ...
    <!DOCTYPE web-app PUBLIC
                    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                    "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
             version="3.0">
    
    <!--代码典例24:过滤器Filter-->
    <servlet>
        <servlet-name>ShowServlet</servlet-name>
        <servlet-class>com.kuang.servlet.ShowServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ShowServlet</servlet-name>
        <!--有过滤器-->
        <url-pattern>/servlet/show</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ShowServlet</servlet-name>
        <!--没有过滤器-->
        <url-pattern>/show</url-pattern>
    </servlet-mapping>
    
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <!--只要是/servlet的任何请求,都会经过这个过滤器。-->
        <url-pattern>/servlet/*</url-pattern>              改为admin就报错???
        <!--过滤所有请求 <url-pattern>/*</url-pattern>-->
    </filter-mapping>
    
    </web-app>
    
    展开全文
  • 详解<url-pattern/>

    2021-04-28 21:08:33
    url-pattern/>常使用后辍匹配方式,如写为*.do。 不能写为/* 这里的 url-pattern 不能写为/*,因为 DispatcherServlet 会将向动态页面的跳转请求, 即向 JSP 页面的跳转请求也当作是一个普通的 Controller 请求。...

    配置详解

    建议写为*.do 形式

    在没有特殊要求的情况下, SpringMVC 的中央调度器 DispatcherServlet 的<url-pattern/>常使用后辍匹配方式,如写为*.do。

    不能写为/*

    这里的 url-pattern 不能写为/*,因为 DispatcherServlet 会将向动态页面的跳转请求, 即向 JSP 页面的跳转请求也当作是一个普通的 Controller 请求。 中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的,所以在这种情况下, 所有的 JSP 页面跳转均会报 404 错误。

    最好也不要写为/

    最好也不要写为/,因为 DispatcherServlet 会将向静态资源的获取请求,例如.css、 .js、 .jpg、 .png 等资源的获取请求,当作是一个普通的 Controller 请求。 中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的,所以在这种情况下,所有的静态资源获取请求也均会报 404 错误(动态资源不会提交)。

    静态资源访问

    1. 使用 Tomcat 中名为 default 的 Servlet

    在 Tomcat 中,有一个专门用于处理静态资源访问的 Servlet – DefaultServlet。 其<servlet-name/>为 default。可以处理各种静态资源访问请求。 该 Servlet 注册在 Tomcat 服务器的 web.xml 中。在 Tomcat 安装目录/conf/web.xml。

    {% asset_img mvc03.jpg %}

    直接在 web.xml 中注册<servlet-mapping/>即可使用。

    	<servlet-mapping>
    		<servlet-name>default</servlet-name>
    		<url-pattern>*.png</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
    		<servlet-name>default</servlet-name>
    		<url-pattern>*.css</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
    		<servlet-name>default</servlet-name>
    		<url-pattern>*.js</url-pattern>
    	</servlet-mapping>
    

    2. 使用<mvc:default-servlet-handler/*gt;

    	  <mvc:default-servlet-handler/>
    

    <mvc:default-servlet-handler/> 会将对静态资源的访问请求添加到 SimpleUrlHandlerMapping 的 urlMap 中, key 就是请求的 URI, 而 value 则为默认 Servlet 请求处理器 DefaultServletHttpRequestHandler 对象。而该处理器调用了 Tomcat 的 DefaultServlet 来处理静态资源的访问请求。

    注意:
    使用<mvc: …/>标签,需要引入 mvc 约束。

    3. 使用<mvc:resources/>

    在 Spring3.0.4 版本后, Spring 中定义了专门用于处理静态资源访问请求的处理器 ResourceHttpRequestHandler。并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问问题。 需要在 springmvc.xml 中添加如下形式的配置:

    	    <mvc:resources location="/images/" mapping="/images/**"/>
    
    • location 表示静态资源所在目录。 当然,这里的目录包含/WEB-INF/目录及其子目录。
    • mapping 表示对该资源的请求。 注意,后面是两个星号**。

    该配置会把对该静态资源的访问请求添加到 SimpleUrlHandlerMapping 的 urlMap 中, key 就是真正与 mapping 的 URI 匹配的 URI , 而 value 则为静态资源处理器对象 ResourceHttpRequestHandler。

    展开全文
  • 006_url-pattern配置

    2021-01-26 10:11:18
    url-pattern配置 1. 在web.xml里面注册Servlet映射(servlet-mapping), 在Servlet里面我们需要配置url-patternurl-pattern的作用就是在地址栏上的访问路径, 一定要以/打头。 2. 全路径匹配, 一级或者多级路径, ...
  • 一、概述在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆。本文来详细举例介绍下。下面的...
  • 一、概述在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆。本文来详细举例介绍下。下面的...
  • Servlet 编写过滤器filter配置多个url-pattern的方法如下:authoritycom.util.AuthorityFilterauthority/admin/*authority/manage/*如下登陆实例:publicvoiddoFilter(ServletRequestreq,ServletResponseresp,...
  • 但会拦截静态资源(除了servlet和jsp之外的css、html、js等静态文件) 静态资源拦截解决办法: (1)在springmvc配置文件中添加标签配置: (2)使用SpringMVC框架自己处理静态资源: mapping:静态资源的url规则 ...
  • JavaWeb Servlet中url-pattern的使用1.Sevlet和Filter的url-pattern相关说明一个页面请求根据url-pattern只匹配一个最佳的Servlet,而根据web.xml的filter-mapping标签的先后顺序,将满足要求的一个或者多个过滤器...
  • 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。1 前言关于servlet的路径映射有三种配置方法,通过配置xml文件中的url-patter...
  • 1、目录匹配:以斜杠“/”开头,以“/*”结尾的形式。 2、扩展名匹配:以“*.”开始,后接一个扩展名。 3、精确匹配:所有其他字符串都精确匹配。
  • 一、在配置DispatherServlet时url-pattern为/ <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</...
  • SSM整合servlet-mapping包含多个url-pattern servlet-mapping包含多个url-pattern <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.html</url-...
  • url-pattern用于配置处理请求的servlet,Tomcat会根据url-pattern的配置选择将请求交给哪个实体类。 <!--注册DispatcherServlet,配置Tomcat启动后就创建--> <servlet> <!--SpringMVC容器创建时,...
  • 9. Servlet入门 - Servlet执行原理、Servlet路径的配置url-pattern的三种方式前言在上一章中,我们已经掌握了使用 web.xml 配置 Servlet 路径...
  • servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。 一,servlet容器对url的匹配过程: 当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上...
  • 在使用springmvc时,都会在web.xml中配置一个dispatchservlet,如下:org.springframework.web.context.ContextLoaderListenerservletNameorg.springframework.web.servlet.DispatcherServlet1... url-pattern...
  • 一、概述在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆。本文来详细举例介绍下。下面的...
  • web.xml中有个url-pattern属性,如下: <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-...
  • ),在修改了url-pattern之后,在启动项目都无法进行了,是否相当于url-pattern要绑定(或者说链接)一个servlet.java?如果这样那么还需要所谓的servlet-class来指示类文件么? 所有主要的问题就两个:1、Jsp文件中...
  • 你可能想要为此使用改写URL过滤器(例如Tuckey的过滤器)(与Apache HTTPD的过滤器非常相似mod_rewrite),或者doFilter()在Filter侦听的方法中添加一个检查/*。String path = ((HttpServletRequest) request)....
  • 转载自:https://blog.csdn.net/hanghangde/article/details/51298221侵删最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下一、完全错误的方式Java代码 authoritycom.util....
  • Caused by: java.lang.IllegalArgumentException: Invalid [XXX] in servlet 报此错误的原因为配置servlet映射路径错误,检查@WebServlet()或者web.xml中的配置。正确的路径前有/
  • 现象:需要在filter标签后添加多个filter-mapping标签,一个url-pattern就对应一个filter-mapping标签,不能直接把多个url-pattern配置到同一个filter-mapping标签里,也不能直接把多个url直接配置到一个url-pattern...
  • url-pattern/> 3.1 配置详解 3.1.3 *.do 在没有特殊要求的情况下,SpringMVC的中央调度器DispatcherServlet的<url-pattern/>常使用后辍匹配方式,如写为*.do 或者 *.action, *.mvc 等。这种方式可以...
  • 当一个url匹配多个url-pattern时,会按照一定的优先顺序进行选择。而/*的优先级并不是最高的。 具体的说,它们的优先顺序是: 精确匹配 通配符路径匹配(且匹配路径越长,越优先) 文件扩展名匹配 /匹配 二、/ 捡漏...
  • <servlet-mapping> <servlet-name>contextServlet02servlet-name> <url-pattern>/context02url-pattern> <url-pattern>/servlet/context02url-pattern> <url-pattern>/test/servlet/context02url-pattern> servlet-...
  • 精确匹配 /具体的名称 只有url路径具体的名称的时候才会触发servlet 后缀匹配 *.xxxx 只要是xxx皆为的匹配触发servlet 通配符匹配 /* 匹配所有请求 包含服务器的所有资源 (不会拦截精确匹配) 通配符匹配 / 匹配...
  • JSP页面,通过url-pattern映射,直接当成Servlet来用。 前言 前些日子,需要从业务数据库里面提取一些数据,以Json的格式返回给第三方系统。开始想用Tomcat+JSP这样简单的组合就行了,但转念一想,现在还用JSP可能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 366,623
精华内容 146,649
关键字:

url-pattern