首发地址:http://inmethetiger.iteye.com/blog/1678794
一个注解版的Spring mvc程序和一个非注解版的Spring mvc程序比起来有和区别
1:控制器不需要集成,而是在类上采用@Controller,并在方法上用@RequestMapping,表明对应处理类。
2:在xxxx-servlet.xml中增加如下代码:
<context:annotation-config></context:annotation-config> <context:component-scan base-package="org.spring.controller"></context:component-scan>
3:在xxxx-servlet.xml中删除控制器的声明,由容器自动寻找
4:将handlerMapping改为,org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping。
--------------------------------------------------------------------------------------------------------------------------------------------------
下面是一个简单实例。未改动的地方就不贴代码了,主要是把改动的地方帖代码
控制器:改成注解方式
package org.spring.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controllerpublic
class LoginController {
@RequestMapping(value = "/login.do")
protected ModelAndView anyName(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("login", "success");
mv.setViewName("success");
return mv;
}
}
因为,这个不好注释,当然也因为我懒,怎么修改,可以参考前面例子中的代码
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config></context:annotation-config> <context:component-scan base-package="org.spring.controller"></context:component-scan> <!-- HandlerMapping --> <!-- 帮助DispatchServlet进行web请求的url到具体处理类的匹配,默认为BeanNameUrlHandleMapping --> <!-- <bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> </bean> --> <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> </bean> <!-- Controller --> <!-- 控制器,自己实现,收集参数,绑定参数到命令对象,调用业务对象,选择视图模型,返回视图,模型,数据 --> <!-- <bean name="/login.do" class="org.spring.controller.LoginController"></bean> --> <!-- ViewResover --> <!-- DispatcherServlet根据Controller中指定的逻辑视图查找相应的视图实现 --> <bean id="defaultViewResover" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="order" value="2"></property> <property name="prefix" value="/WEB-INF/view/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
注意,被注释掉的部分。
当然,这是最浅显的基于注解的Spring mvc。
比如其他的注解符号,不如参数传递等都没有涉及。