【问题标题】:Spring mvc: best practice to navigate between two jspsSpring mvc:在两个 jsps 之间导航的最佳实践
【发布时间】:2013-12-31 13:57:14
【问题描述】:

我正在使用 spring mvc + spring security 来构建一个简单的 web 应用程序。我实现了登录/注销(spring mvc),但我还想提供一个可以直接从 login.jsp 访问的注册 jsp。基本上我只需要一个从 login.jsp 到 regsiter.jsp 的简单链接,而无需传递任何参数或其他任何东西。我只想问你实现这一目标的最佳做法是什么?

有没有什么方法可以直接在两个 jsps 之间导航而不将请求路由到控制器? (或者这不是真正的spring mvc方式?)老实说,我唯一的“问题”只是在寄存器控制器中有一个单独的方法,它什么都不做,只是将请求路由到寄存器jsp。我的意思是:

注册控制器

@Controller  
public class RegisterController {

  @RequestMapping(value="/view_register.htm", method = RequestMethod.POST)
  /** Navigates to the register page */
  public String navigateToRegistration(ModelMap model) {
    return "register";
  }

  @RequestMapping(value="/register.htm", method = RequestMethod.POST)
  /** Handles request from the registration page and registers the user */
  public String registerUser(ModelMap model) {

    // hard stuff to register the user
    return "welcome";
  }

}

WEB-INF/pages/login.jsp

......
<tr>
   <td>Don't have an account yet.</td>
   <td> <a href="<c:url value='view_register.htm' />">Register here</a>
   </td>
</tr>
......

WEB-INF/pages/register.jsp

......
<form name='registration' action="<c:url value='register.htm' />"
        method='POST'>
......

WEB-INF/web.xml - 将每个请求路由到 spring mvc …… mvc 调度程序 /

WEB-INF/mvc-dispatcher-servlet

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <import resource="classpath:/applicationContext.xml" />

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

</beans>

我的实现是否正确?这是mvc方式吗?我只想知道我是否理解这一点并且没有做任何反模式的事情。让我感到困惑的是注册控制器中的这个额外的小方法,它什么都不做,只是从登录导航到注册。这种方法至少有任何命名约定吗?你会推荐一个可以充当管理器/调度器并且只管理这种导航请求的 ForwardController 吗?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    您的结构看起来正确:一个例外是/view_register.htm 应该是 GET,而不是 POST。 Spring MVC 使用前端控制器模式,因此每个请求都经过一个控制器。当请求所做的唯一事情是返回视图时,您可以使用ParameterizableViewController 配置映射,而不是编写控制器,但我倾向于编写一个方法,就像控制器中有多个相关请求时一样。随着您的应用程序的发展,您可能会发现需要添加一些会话设置,这只是将所有注册请求保留在同一个类中。

    不要忘记配置安全性以允许匿名访问您的注册请求。

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 2015-09-11
      • 2015-04-19
      • 2011-05-18
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多