springMVC controller配置方式总结
第一种:不配置controller 的bean。(注解的方式)
在dispatch-servlet.xml中,在beans节点下配置context:component-scan节点
<!-- 启用spring注解--> <context:component-scan base-package="com.loong.controller" />
这种方式需要在Controller对象上使用@RequestMapping("hello")指定方法对应处理的路径,比如一下两种方式:
举例1:url:http://localhost:8080/demo1/welcome/hello
@Controller @RequestMapping("/welcome") public class HelloWorldController { @RequestMapping(value="/hello" ,method=RequestMethod.GET) public String printWelcome(ModelMap model){ model.addAttribute("message" ,"Spring 3 MVC Hello World"); return "hello"; } }
举例2:url:http://localhost:8080/demo1/home
@Controller public class HomeController { @RequestMapping("home") public String home(){ return "home"; } }
第二种方式配置controller的bean(url匹配bean)
在xxx-servlet.xml中
<context:component-scan base-package="com.controller" /> <!-- HandlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 处理器 --> <bean name="/hello" class="com.controller.HelloWorldController" />
BeanNameUrlHandlerMapping:表示将请求的URL和Bean名字映射,如URL为 “上下文/hello”,则Spring配置文件必须有一个名字为“/hello”的Bean,上下文默认忽略。
SimpleControllerHandlerAdapter:表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。
提示:关于写不写HandlerMapping 和HandlerAdapter的问题,参考:
http://www.imooc.com/article/4293
这种情况Controller类要实现Controller接口:
public class HelloWorldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { // TODO Auto-generated method stub ModelAndView mv = new ModelAndView(); mv.addObject("message", "HelloWorld"); mv.setViewName("hello"); return mv; } }
第三种配置Controller中bean的方式,使用一个统一配置集合,对各个URL对应的Controller做关系映射
在xxx-servlet中
<bean id="loginController" class="com.msm2.controller.LoginController" /> <bean id="mainController" class="com.msm2.controller.MainController" /> <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="login">loginController</prop> <prop key="userLogin">mainController</prop> </props> </property> </bean>
在Controller类中
url:http://localhost:8080/msm2/login
@Controller public class LoginController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("login"); return mav; } }
原文地址:http://www.cnblogs.com/ysloong/p/6388962.html
谢谢您的来访,欢迎关注交流!以下是我的个人联系方式
电子邮箱:spring.wind2006@163.com,QQ:402085437,微信号:tm402085437