springMVC controller配置方式总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于springMVC controller配置方式总结的主要内容,如果未能解决你的问题,请参考以下文章

使用注解开发SpringMVC

swagger常用注解说明

5SpringMVC:Controller 详解 及 RestFul风格

5SpringMVC:Controller 详解 及 RestFul风格

SpringMVC:获取请求参数

SpringMVC的controller提供了PUT和DELETE的请求方式怎么使