【问题标题】:Handlng Controllers through dispatcher-servlet通过 dispatcher-servlet 处理控制器
【发布时间】:2013-12-19 19:07:23
【问题描述】:

好的,我可以根据需要使用多个控制器-

inedx.jsp

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <a href="hello/One.html">Say Hello One</a><br>
    <a href="hello/Two.html">Say Hello Two</a><br>
    <a href="hi/One.html">Say Hi One</a>

</body>

dispatcher-servel.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
etc...

<mvc:annotation-driven/>
<context:component-scan base-package="com.fastek.crm3" />

<mvc:resources mapping="/resources/**" location="/resources/"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>
</beans>

这里的两个控制器和它们的方法是as-

@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(value="/One")
public ModelAndView sayHello(@ModelAttribute("stdUser") StdUsers  stdUser,BindingResult result) {
    System.out.println("/////called from one-----------");
    String mess = "hello from one";
    StdCheckAccessV chk = new StdCheckAccessV();
    chk.setDFlag(1);
    stdUser.setChkAccessV(chk);
    return new ModelAndView(Screens.User, "message", mess);
}
@RequestMapping(value="/Two")
public ModelAndView sayHelloTwo(@ModelAttribute("stdUser") StdUsers  stdUser,BindingResult result) {
    System.out.println("/////called from two-----------");
    String mess = "hello from two";
    StdCheckAccessV chk = new StdCheckAccessV();
    chk.setDFlag(1);
    stdUser.setChkAccessV(chk);
    return new ModelAndView(Screens.User, "message", mess);
}
}

@Controller
@RequestMapping("/hi")
public class OtherController {

@RequestMapping(value="/One")
public ModelAndView sayHiOne(@ModelAttribute("stdUser") StdUsers  stdUser,BindingResult result) {
    System.out.println("/////called from hi one-----------");
    String mess = "hi from one";
    StdCheckAccessV chk = new StdCheckAccessV();
    chk.setDFlag(1);
    stdUser.setChkAccessV(chk);
    return new ModelAndView(Screens.User, "message", mess);
}
}

一切正常,正如我从这个例子中了解到的那样,控制器和方法将为相关 URL 执行。 由于我是 Spring 的新生,我只想知道有什么方法可以通过 dispatcher-servlet 控制 Controller 的调用?我的意思是我必须在 dispatcher-servlet 中写什么来实现这一点。 请帮忙。

【问题讨论】:

  • 你说的通过dispatcher-servlet控制Controller的调用到底是什么意思?
  • 你的意思是授权吗?
  • @Sotirios Delimanolis,先生,在目前的情况下,控制器及其方法是由 .jsp 页面发送的 url 模式识别的,首先它找到合适的控制器 /hello 然后是相关方法,即 /sayHello/sayHelloTwo。那么有没有办法在 dispatcher-servlet 中做到这一点,我的意思是我怎么能在 dispatcher servlet 中决定这个 url 应该使用这个控制器并且 url 应该使用另一个控制器以及他们的方法?

标签: spring spring-mvc


【解决方案1】:

Spring mvc 使用前端控制器模式。这意味着所有请求都由前端控制器(Dispatcher Servlet)处理,然后传递给您的应用程序以处理它们(您编写的控制器)。您不必与 Dispatcher Servlet 交互。它的目的只是将请求路由到您的控制器。您可以使用 RequestMapping 控制控制器调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2010-10-18
    • 1970-01-01
    相关资源
    最近更新 更多