【发布时间】: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