• 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中是否一定要实现或继承上述红色字体的接口/类,再调查,以后再添加对此的理解。

  • 相关阅读:
    Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1288372549423476738' for key 'PRIMARY'
    环形数组循环
    less命令
    ln命令
    Vue中$refs的理解
    cut命令
    除数博弈
    find命令
    file命令
    最长公共前缀
  • 原文地址:https://www.cnblogs.com/ysloong/p/6388962.html
Copyright © 2020-2023  润新知