2013-03-06 3 views
2

Предположим, у меня есть 3 шаблонов URL, который должен быть обработан Spring MVC следующим образом:Handle шаблон URL, который имеет имя пользователя как часть URL

1) www.example.com/login (для входа страницы)

2) www.example.com/home (на моей домашней странице)

3) www.example.com/john (на главную страницу пользователя)

Я хотел бы знать, что такое лучший способ обработки шаблона url, который имеет имя пользователя как часть URL-адреса (примером для реального мира является facebook fanpage www.face boo.com/{fanpage-name})

Я придумал свое решение, но не уверен, что это чистый способ или возможно сделать это.

В моем подходе мне нужно перехватить запрос до его отправки диспетчеру Spring MVC, затем запросить базу данных для преобразования имени пользователя в userid и изменить URI запроса на шаблон, который Spring MVC может распознать как www.example/пользователь/идентификатор пользователя = 45. Но я не уверен, если это выполнимо, так как ServletAPI не метод присваивателя requestURI (у него есть метод получения для requestURI)

Или, если у вас есть лучшее решение, пожалуйста, поделитесь со мной. Заранее благодарю :-)

ответ

2

Spring MVC должен уметь справляться с этим просто отлично с помощью PathVariables.

Один обработчик для/login, один обработчик для/home и один обработчик для/{имя_пользователя}. В обработчике имени пользователя вы можете выполнить поиск, чтобы получить пользователя. Что-то вроде этого:

@RequestMapping(value="/login", method=RequestMethod.GET) 
public String getLoginPage() { 
    // Assuming your view resolver will resolve this to your jsp or whatever view 
    return "login"; 
} 

@RequestMapping(value="/home", method=RequestMethod.GET) 
public String getHomePage() { 
    return "home"; 
} 

@RequestMapping(value="/{userName}", method=RequestMethod.GET) 
public ModelAndView getUserPage(@PathVariable() String userName) { 
    // do stuff here to look up the user and populate the model 
    // return the Model and View with the view pointing to your user page 
} 
Смежные вопросы