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中是否一定要實現或繼承上述紅色字體的接口/類,再調查,以后再添加對此的理解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM