zoukankan      html  css  js  c++  java
  • springMVC controller配置方式总结

    一直弄不清在配置文件里怎么配置与controller相关的bean,今天一次性就自己知道的做个总结。

    第一种:不配置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
    1.@Controller 
    2.@RequestMapping("/welcome") 
    3.public class HelloWorldController {    
    4.@RequestMapping(value="/hello" ,method=RequestMethod.GET)  
    5.public String printWelcome(ModelMap model){   
    6.model.addAttribute("message" ,"Spring 3 MVC Hello World");  
    7. return "hello";     }    
    8.}
    
    举例2:url:http://localhost:8080/demo1/home
    1.@Controller 
    2.public class HomeController {
    3. @RequestMapping("home") 
    4. public String home(){   
    5.return "home";  }
    6.}
    
    第二种方式配置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>
    <!-- 处理器 -->
        <bean name="/hello" class="com.controller.HelloWorldController" />
    
    提示:关于写不写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; } }

    至于在Controller中是否一定要实现或继承上述红色字体的接口/类,再调查,以后再添加对此的理解。

  • 相关阅读:
    [总结]学习目录
    PHP基础知识之————PDO预处理语句
    Main Thread Pinning
    Process/Thread Pinning Overview
    cpu三大架构 numa smp mpp
    NUMA(非一致性内存架构)
    Linux 的 NUMA 技术
    [安装] mac安装PHP7经历
    ThinkPHP5.X PHP5.6.27-nts + Apache 通过 URL 重写来隐藏入口文件 index.php
    laravel框架应用和composer扩展包开发
  • 原文地址:https://www.cnblogs.com/ysloong/p/6388962.html
Copyright © 2011-2022 走看看