Springmvcrestful 설정에서 만나는 작은 구덩이

2616 단어 springmvcrestful
우선 웹.xml 구성

<!-- spring-mvc -->
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
url-pattern 설정/하면 됩니다. 설정/*하면 질문이 나오고 보기 jsp로 되돌아오는 것도 차단됩니다. 구체적인 원인은 원본 코드를 보십시오.
질문: 이렇게 설정하면 모두가 한 가지 문제를 무시할 수 있습니다. 바로 a/b/c는 접근할 수 있지만 a/b/c.do입니다.a/b/c.mm;a/b/c.zz는 모두 a/b/c의 controller에 접근할 수 있습니다. 원본 코드를 수정하지 않는 상황에서
이 문제를 해결하는 것은 모두/이런 요청을 차단했지만 우리는 a/b/c와 같은 요청만 컨트롤러에 들어가게 하고 [.]404페이지로 바로 가기
해결 방법:
web.xml 가입 filte

<!--  url  -->
<filter>
<filter-name>servletRequest</filter-name>
<filter-class>cn.tomcat.quickstart.common.filter.ServletRequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>servletRequest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ServletRequestFilter.java
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;
/**
* 
*  url , filter ,springmvc <url-pattern>/</url-pattern>
*  ,ex:a/b/c.do,a/b/c.html,a/b/c.action,a/b/c
*  , restful , a/b/c 
* 
*/
public class ServletRequestFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String requestPath = request.getServletPath();
// , *.js,*.css , web.xml 
// 【.】 404, 
if(requestPath.lastIndexOf(".")!=-1){
request.getRequestDispatcher("/WEB-INF/pages/error/404.jsp").forward(request, response);
}else{
filterChain.doFilter(request, response);
}
}
}
지니다엔딩은 바로 go404, 하하, 이렇게 하면 정적 파일도 필터되지 않겠냐고 물어볼지도 몰라요.유사하다js,*.css,.....N에는 이러한 유형의 파일이 많습니다.

좋은 웹페이지 즐겨찾기