이 기사에서는 서블릿의 URL 패턴 규칙을 소개하고 귀하와 공유합니다. 세부 사항은 다음과 같습니다.
먼저 몇 가지 혼란스러운 규칙을 명확히해야합니다.
1. 서블릿 컨테이너의 일치하는 규칙은 단순한 와일드 카드 나 일반 표현이 아니라 특정 규칙입니다. 따라서 서블릿의 URL 패턴을보기 위해 와일드 카드 나 정규 표현식 일치 규칙을 사용하지 마십시오.
2. Servlet 2.5에서 시작하여 Servlet은 여러 URL 패턴 규칙을 사용할 수 있습니다. <Servlet-Mapping> 태그는 서블릿에 해당하는 일치하는 규칙을 선언하고 각 <url-pattern> 태그는 1 개의 일치하는 규칙을 나타냅니다.
3. 서블릿 컨테이너가 브라우저에서 시작한 URL 요청을 수신하면 컨테이너는 URL을 사용하여 현재 응용 프로그램의 컨텍스트 경로를 빼고 나머지 문자열을 서블릿 매핑으로 사용합니다. URL이 http : // localhost : 8080/appdemo/index.html이고 그 응용 프로그램 컨텍스트가 Appdemo 인 경우 컨테이너는 http : // localhost : 8080/appdemo를 제거하고 나머지/index.html을 사용하여 서틀 매핑을 일치시킵니다.
4. URL 패턴 매핑 매칭 프로세스가 우선 순위가 있습니다
5. 서블릿이 성공적으로 일치 할 때 나머지 서블릿은주의를 기울이지 않습니다.
1. 4 개의 일치하는 규칙
1 정확히 일치합니다
<url-pattern>에 구성된 항목은 URL과 정확히 일치해야합니다.
<servlet-mapping> <servlet-name> myservlet </servlet-name> <url-pattern> /user/users.html </url-pattern> <url-pattern>/index.html </url-pattern> <url-pattern> /user/adduser.action </url-pattern>
브라우저에서 다음 URL을 입력하면 서블릿과 일치합니다.
http : // localhost : 8080/appdemo/user/user.html
http : // localhost : 8080/appdemo/index.html
http : // localhost : 8080/appdemo/user/adduser.action
알아채다:
http : // localhost : 8080/appdemo/user/adduser/는 불법 URL이며 http : // localhost : 8080/appdemo/user/adduser로 인식되지 않습니다.
또한 위의 URL에 이어 모든 쿼리 조건이 이어질 수 있으며 다음과 같은 일치합니다.
http : // localhost : 8080/appdemo/user/adduser? username = tom & age = 23은 myservlet에 일치합니다.
2 경로 일치
"/"문자로 시작하고 "/*"로 끝나는 문자열은 경로 일치에 사용됩니다.
<servlet-mapping> <servlet-name> myservlet </servlet-name> <url-pattern>/user/*</url-pattern> </servlet-mapping>
경로는 /user /로 시작하며 다음 경로는 임의적 일 수 있습니다. 예를 들어 다음 URL이 일치합니다.
http : // localhost : 8080/appdemo/user/user.html
http : // localhost : 8080/appdemo/user/adduser.action
http : // localhost : 8080/appdemo/user/updateuser.actionl
3 연장 일치
"*"로 시작하는 문자열. 확장 일치에 사용됩니다
<servlet-mapping> <servlet-name> myservlet </servlet-name> <Url-pattern>*
그러면 확장자 JSP 또는 조치가 포함 된 모든 URL 요청이 일치합니다. 예를 들어 다음 URL이 일치합니다.
http : // localhost : 8080/appdemo/user/user.jsp
http : // localhost : 8080/appdemo/tohome.action
4 기본 일치
<servlet-mapping> <servlet-name> myservlet </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2. 일치 순서
1. 정확한 일치, servlet-mapping1 : <url-pattern> /user/users.html </url-pattern>, servlet-mapping2 : <url-pattern>/*</url-pattern>. 요청이 http : // localhost : 8080/appdemo/user/user.html이 오면, 서블릿 맵핑 1은 더 이상 Servlet-Mapping2와 일치하지 않습니다.
2. 경로 일치, 먼저 가장 긴 경로와 일치 한 다음 가장 짧은 경로 서블릿 매핑 1 : <Url-Pattern>/user/*</url-pattern>, servlet-mapping2 : <url-pattern>/*</url-pattern>. 요청이 http : // localhost : 8080/appdemo/user/user.html이 오면, 서블릿 맵핑 1은 더 이상 Servlet-Mapping2와 일치하지 않습니다.
3. Extension Mathering, Servlet-Mapping1 : <Url-Pattern>/user/*</url-pattern>, Servlet-Mapping2 : <Url-Pattern>*. Action </url-pattern>. 요청이 http : // localhost : 8080/appdemo/user/adduser.action이오고, Servlet-Mapping1은 더 이상 Servlet-Mapping2와 일치하지 않습니다.
4. 기본 일치는 위의 서블릿에서 찾을 수 없으므로 기본 서블릿을 사용하여 <url-pattern>/</url-pattern>으로 구성하십시오.
언급해야 할 문제
1 경로 일치 및 연장 일치는 동시에 설정할 수 없습니다.
경로 일치 ( "/"문자로 시작하고 "/*"로 끝나는), 확장 일치 ( "*."부터 시작) 또는 정확한 일치하는 세 가지 일치 방법 만 있습니다. 세 가지 일치하는 방법을 결합 할 수 없으므로 와일드 카드 나 일반 규칙을 사용하도록 당연한 것으로 생각하지 마십시오.
예를 들어, <url-pattern>/user/*. Action </url-pattern>은 불법입니다
또한 참고 : <Url-Pattern>/aa/*/bb </url-pattern>은 정확히 일치하고 합법적입니다. * 여기에는 야생 경기의 의미가 없습니다.
2 "/*"및 "/"는 다른 의미를 갖습니다
Tomcat은 %catalina_home %/conf/web.xml 파일의 기본 서플릿을 구성하고 구성 코드는 다음과 같습니다.
<Servlet> <servlet-name> 기본값 </servlet-name> <servlet-class> org.apache.catalina.servlets.defaultservlet </servlet-class> <init-param> <param-name> debug </param-name> <param- value> 0 </param-value> <init-param> <param-param> <param-param> <param-param> <Param-value> false </param- value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-name> jsp </servlet-name> <servlet-class> org.apache.jasper.servlet.jspservles </servletclass> <init-param> <param-name> fork <Param-value> false </param- value> </init-param> <init-param> <param-name> xpoweredby </param-name> <param- value> false </param-value> </init-param> <load-on-startup> 3 </load-on-startup> </servlet> <servlet-name> deblet-name> </servlet-name> <Url-pattern>/</url-pattern> </servlet-mapping> <!-JSP Servlet의 매핑-> <servlet-mapping> <servlet-name> jsp </servlet-name> <Url-pattern>*. jsp </url-pattern>.
IV. 예를 들어보세요
| 매핑 URL | 해당 서블릿 |
| /안녕하세요 | servlet1 |
| /bbs/admin/* | servlet2 |
| /bbs/* | servlet3 |
| *.jsp | servlet4 |
| / | Servlet5 |
실제 요청 매핑의 결과
컨텍스트 경로의 나머지 경로를 제거하십시오 | 요청을 처리하는 서블릿 |
/안녕하세요 | servlet1 |
/bbs/admin/로그인 | servlet2 |
/bbs/admin/index.jsp | servlet2 |
/bbs/디스플레이 | servlet3 |
/bbs/index.jsp | servlet3 |
/BBS | servlet3 |
/index.jsp | servler4 |
/hello/index.jsp | servlet4 |
/hello/index.html | Servlet5 |
/소식 | Servlet5 |
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.