справка о проблемах отображения контроллера Spring - PullRequest
0 голосов
/ 27 августа 2011

У меня проблемы во время весеннего примера проекта.

Мое намерение заключается в том, чтобы перейти по ссылке в index.jsp, перейти на страницу входа. как это <a href="/login.html">log in</a> Контроллер входа покрывает процесс входа в систему и перенаправляет на форму входа из индекса.

И HTML отображается в web.xml

<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

если я нажму на ссылку, получим «HTTP Status 404 - /login.html» помогите мне плз!

кусочек таких кодов.

LoginController.java

@Controller
@RequestMapping("/login")
@SessionAttributes("login")
public class LoginController {
    private LoginValidator loginValidator;
    private MemberService memberService;
    private Provider<LoginInfo> loginInfoProvider;

    @Inject     
    public void setLoginInfoProvider(Provider<LoginInfo> loginInfoProvider) {
        this.loginInfoProvider = loginInfoProvider;
    }

    @Autowired
    public void init(LoginValidator loginValidator, MemberService memberService) {
        this.loginValidator = loginValidator;
        this.memberService = memberService;
    }

    @RequestMapping(method=RequestMethod.GET)
    public ModelAndView showform(){
    return new ModelAndView("redirect:/login.html");
}

    @RequestMapping(method=RequestMethod.POST)
    public String login(@ModelAttribute @Valid Login login, BindingResult result, SessionStatus status) {
        if (result.hasErrors()) return "login";

        this.loginValidator.validate(login, result);
        if (result.hasErrors()) {
            return "login";
        }
        else {
            memberService.login(loginInfoProvider.get().currentMember());
            status.setComplete();
            return "redirect:/members.html"; // don't mind this... modifing.....
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 28 августа 2011

спасибо за ваш ответ, но я уже использую коды.

<bean id="jspViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/view/" />
    <property name="suffix" value=".jsp" />
</bean>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
0 голосов
/ 17 декабря 2011

Мне кажется, что вы неправильно определяете отображение.Ваш LoginController отвечает на запросы "/ login";однако запросы на "/login.html", скорее всего, отображаются на другой контроллер и метод, определенный в другом месте.То есть "/ login"! = "/Login.html".

На вашем месте я бы использовал более RESTful стиль отображения URL, связав его следующим образом: <a href="/login/">log in</a>.Тогда ваш LoginController будет отображаться чисто.При ссылках на страницы из вашего HTML, старайтесь не использовать расширения (.html, .jsp, .whhaps).Вместо этого просто укажите ссылки на необработанные пути, заканчивающиеся суффиксом "/".

Полный пример:

HTML: <a href="/login/">Login</a>

Java:

@Controller
@RequestMapping("/login/")
...

PS: Я бы даже вообще избавился от кода обработки форм и вместо этого использовал бы Spring Security для обработки аутентификации.

0 голосов
/ 27 августа 2011

Во-первых, убедитесь, что вы загрузили сервлет Spring Dispatcher, прежде чем отобразить их в своем файле web.xml

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

Исходя из вашего кода, я предполагаю, что вы используете распознаватель представлений, поэтому дважды проверьте, есть ли у вас этона месте

<bean id="viewResolver"
  class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...