SpringMVC+ mybatis 企业级开发实战连载(二)

示例:  基于注解的控制器

      spring2.5版新増了可基于注解的控制器, 也就是说控制器不用实现 Controller接口,通过注释类型来描述。下面将 springMvcTest这个 Web应用进行修改,演示一个基于注解的控制器 Spring MVC的 Web1立用 。

使用上次的项目,修改两个地方

1.修改controller类

HelloController类不需要 controller接口,改为使用注解类型来描述,用来处理/hello请求。 

package org.fkit.controller;



import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;



/**  
 *  HelloController是一个基于注解的控制器,  
 *  可以同时处理多个请求动作,并且无须实现任何接口。  
 *  org.springframework.stereotype.Controller注解用于指示该类是一个控制器  
 */  
@Controller
public class HelloController {  
  
     private static final Log logger = LogFactory  
                .getLog(HelloController.class);


   /**
    * org.springframework.web.bind.annotation.RequestMapping注解
    * 用来映射请求URL和请求的方法等。本利用来映射"/hello"
    * hello只是一个普通方法。
    * 该方法返回一个  包含视图名和模型的ModelAndView对象。
    */
  @RequestMapping(value="/hello")
  public ModelAndView hello(){
	logger.info("hello方法 被调用");
	//创建  准备返回的ModelAndView对象该对象返回了视图名,模型的名称以及模型对象
	ModelAndView mv=new ModelAndView();
	//添加模型数据,可以是任意的POJO对象
	mv.addObject("message","Hello.World!");
	//设置逻辑视图名,视图解析器会根据名字解析到具体的视图页面
	mv.setViewName("/WEB-INF/content/welcome.jsp");
	//返回ModelAndView对象。
	return mv;
	  
  }

}

HelloController是一个基于注解的控制器,org.springframework.stereotype.Controller 注释类型用于指示Spring类的实例是一个控制器。org.springframework.web.bind.annotation.RequestMapping注释类型用来映射一个请求和请求方法,value="/hello"表示请求由hello方法进行处理。方法返回一个包含视图名或视图名和模型的ModelAndView对象。


2.修改SpringMVC的配置文件

修改springmvc-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.2.xsd  ">  
          
    <!--spring可以自动去扫描base-pack下面的包或者子包下面的Java文件
         如果有扫描到Spring的相关注解类,则把这些类注册为Spring的bean -->  
    <context:component-scan base-package="org.fkit.controller"/>
      
    <!-- 配置annotation类型的处理映射器 -->  
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>  
       
     <!-- 配置annotation类型的处理器适配器-->  
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>  
  
  
<!-- 视图解析器 -->  
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>  

</beans>  

由于使用了注解类型,因此不需要再在配置文件使用XML描述Bean. Spring使用扫描机制查找应用程序中所有基于注解的控制器类。<context:component-scan base-package="org.fkit.controller"/>  指定需要Spring扫描org.fkit.controller包及其子包下面的所有Java文件。

        此处还配置了一个annotation类型的处理映射器RequestMaooingHandlerMapping,它根据请求查找映射;同时配置了annotation类型的处理器适配器RequestMappingHandlerAdapter,来完成对HelloController类的@RequestMapping标注方法的调用;最后配置了视图解析器InternalResourceViewResolver来解析视图,将View呈现用户。

4.测试

部署项目,在浏览器输入URL来测试应用:

http://localhost:8080/SpringMVCTest/hello  

看到以下结果表示成功:


猜你喜欢

转载自blog.csdn.net/u014645946/article/details/80363729