1

어떻게 같은 tuckey's UrlRewriteFilter과 SpringMVC에 URL을 다시 작성할 수 있습니다 :SpringMVC의 URL 재 작성은

http://localhost:8080/demo/api.do?method=getUser&uid=1001

컨트롤러 조각

http://localhost:8080/demo/api/user/1001

에서 :

@Controller 
@RequestMapping("/api.do") 
public class APIController { 

    @RequestMapping(params = "method=getUser") 
    public String methodName(HttpServletRequest request) { 
     //CODE BLOCK 
    } 
} 

답변

3

당신이 당신의 의 web.xml

을에 필터를 사용 받는다는에게

<dependency> 
    <groupId>org.tuckey</groupId> 
    <artifactId>urlrewritefilter</artifactId> 
    <version>4.0.3</version> 
</dependency> 

를 사용하는 경우 종속성을 추가입니다

<filter> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

에 다음 규칙을 추가하십시오. WEB-INF/urlrewrite.xml

<urlrewrite> 
    <rule> 
     <from>^/demo/api.do?method=getUser&amp;uid=(.*)$</from> 
     <to>/demo/api/user/$1</to> 
    </rule> 
</urlrewrite> 
2

정말 URL 재 작성 필터를 사용해야합니까? 당신은 단지 객체를 보내는 경우 왜 SpringMVC에서 처리를

@RequestMapping(value = "/demo/api.do?"....) 
public void method1(){ 
    //... 
    handler(); 
} 
@RequestMapping(value = "/demo/api/user/{user-id}"....) 
public void method1(){ 
    //... 
    handler(); 
} 

private void handler(){ 
    //This method will have all the controller logic 
} 
1

를 처리하는 하나의 방법에 URL 및 경로의 두 가지 유형의 두 가지 방법을 정의하지, 당신은 그것을 단순히

@Controller 
@RequestMapping("/api") 
public class APIController { 

    @RequestMapping("/user") 
    public ModelAndView methodName(HttpServletRequest request) { 
     //CODE BLOCK 

     // to redirect other view 
     new ModelAndView("...your view page"); 
    } 

    @RequestMapping("/user/{user_id}") 
    @ResponseBody 
    public String methodName(HttpServletRequest request) { 
     //CODE BLOCK 
    } 
} 

@ResponseBody 값들 할 수

또한 당신은 PARAM

public String methodName(@RequestParam("user_id") String userid, Model model) 

user_id을 보낼 수 있습니다 당신이보기 해결을 위해 Bean 추가가 중요한 것은 여기에 주석을 기반으로 예를

@Bean 
public UrlBasedViewResolver setupViewResolver() { 
    UrlBasedViewResolver resolver = new UrlBasedViewResolver(); 
    resolver.setPrefix("/WEB-INF/pages/");   
    resolver.setSuffix(".jsp"); // what you used 
    resolver.setViewClass(JstlView.class); 
    return resolver; 
} 
관련 문제