通过dispatcher-servlet处理控制器

时间:2013-12-19 19:07:24

标签: spring spring-mvc

好的,我得到了使用多个控制器的方式 - 我希望 -

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>

调度员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>

这里有两个控制器及其方法为 -

@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的新生,我只想知道有没有办法通过调度程序-servlet控制Controller的调用?我的意思是我必须在dispatcher-servlet中编写实现它。 请帮忙。

1 个答案:

答案 0 :(得分:1)

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