gpt4 book ai didi

java - 具有相同@RequestMapping的Spring MVC多个 Controller

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:56 63 4
gpt4 key购买 nike

我正在尝试制作一个允许用户从着陆页 index.htm 登录的网络应用程序。此操作与 LoginController 映射,在成功登录后将用户带回相同的 index.htm 但作为已登录用户并向用户致意欢迎消息。

index.htm 还有另一种名为itemform 的形式,它允许用户将项目名称作为文本添加。此操作由 itemController 控制。

我的问题是我的 LoginControlleritemController 有相同的 @RequestMapping,因此我得到这个错误:

Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0' defined in ServletContext resource [/WEB-INF/tinga-servlet.xml]: Initialization of bean failed; nested exception is java.lang.IllegalStateException: Cannot map handler [loginController] to URL path [/index.htm]: There is already handler [com.tinga.LoginController@bf5555] mapped.

Cannot map handler [loginController] to URL path [/index.htm]: There is already handler [com.tinga.LoginController@bf5555] mapped.

我应该如何着手解决这个问题?

最佳答案

@RequestMapping(value="/login.htm")
public ModelAndView login(HttpServletRequest request, HttpServletResponse response) {
// show login page if no parameters given
// process login if parameters are given
}

@RequestMapping(value="/index.htm")
public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
// show the index page
}

最后,您需要一个 servlet 过滤器来拦截请求,如果您不请求 login.htm 页面,则必须检查以确保用户已登录。如果您允许过滤器链继续。如果没有,您将转发到/login.htm

public class LoginFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {

HttpServletRequest httpServletRequest = (HttpServletRequest)request;

boolean loggedIn = ...; // determine if the user is logged in.
boolean isLoginPage = ...; // use path to see if it's the login page

if (loggedIn || isLoginPage) {
chain.doFilter(request, response);
}
else {
request.getRequestDispatcher("/login.htm").forward(request, response);
}
}
}

在 web.xml 中

来 self 的部署描述符的示例:

<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>LoginFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>

这全是靠内存,但它应该能让您大致了解如何进行此操作。

关于java - 具有相同@RequestMapping的Spring MVC多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11607396/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com