с помощью Spring MVC перенаправить шаблон URL на конкретный контроллер

1

я хотел бы перенаправить запрос примерно так

localhost: 8080/firstSpringProject/{uniqueusername}

к определенному контроллеру с именем "профиль":

@RequestMapping(value="/profile")
public String profiles(Model model){

    based on the uniqueusername i would like to render a profile page 

    return "profile";
}

Я использую весенний mvc; как я могу решить эту ситуацию, есть ли другой способ сделать это?

  • 1
    Непонятно, каков исходный шаблон. Вы просто имеете в виду что-то вроде @RequestMapping("/{uniqueUserName}") ?
  • 0
    запрос sourece может выглядеть так: firstSpringProject / username1 или firstSpringProject / username2 или около того, и я хотел бы перенаправить это в @RequestMapping (value = "/ profile"), а затем на основе URL-адреса, который я хотел бы отобразить в профиле пользователя (здесь это может быть username1 или 2)
Теги:
spring-mvc

2 ответа

1
Лучший ответ

Я думаю, вы можете использовать переменную весеннего пути здесь. Вам необходимо создать метод контроллера, который будет принимать имя пользователя в соответствии с вашим требованием к URL-адресу и перенаправится на метод профиля с параметром имени пользователя.

    @RequestMapping(value="/{username}")
    public String getUserName(Model model,@PathVariable("username") String username){

        //process username here and then redirect to ur profile method

        return "redirect : profile?username="+username;
    }

    @RequestMapping(value="/profile")
    public String profiles(Model model,String username){

        //have a username and render a profile page 

        return "profile";
    }

спасибо

  • 0
    работает отлично спасибо oomphfortuity
2

Весенняя документация говорит о переадресации:

Обратите внимание, что переменные шаблона URI из настоящего запроса автоматически становятся доступными при расширении URL-адреса переадресации и не нужно явно добавлять ни через модель, ни в RedirectAttributes. Например:

@RequestMapping(value = "/files/{path}", method = RequestMethod.POST)
public String upload(...) {
    // ...
    return "redirect:files/{path}";
}

Имейте в виду, что на версию ниже 3.1.4 влияет утечка памяти из-за кэширования переадресации.

Если вы используете Spring 3.1.3 или ниже, и вы делаете это

return "redirect : profile?username="+username;

вы когда-нибудь увидите OutOfMemoryError.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню