注解实现spring mvc的Controlle、service、dao。
1.注解Controller
创建注解Controller类。
package com.sunbin.test.testSpring.web.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.stereotype.Controller;
@Controller
public class AnnonationController {
@RequestMapping("/annonation")
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "annonation");
modelAndView.setViewName("helloWorld");
return modelAndView;
}
}
@Controller注解说明是一个controller类。
@RequestMapping("/annonation")注解可用在类、方法上,说明要将类或方法绑定到servlet下的/annonation路径。
在root-context.xml中加入以下配置以支持spring注解、扫描和mvc注解支持、默认解析器handler。
<!-- 注解声明,使用context:component-scan后可省略 -->
<context:annotation-config />
<!-- 开启controller注解支持 -->
<context:component-scan base-package="com.sunbin"></context:component-scan>
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven/>
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler />
部署后访问
http://localhost:8080/testSpringWeb/annonation可看到结果:
annonation
2.注解service、dao
按照
http://sb33060418.iteye.com/blog/2372867中的测试步骤,在相同包中创建接口类TestService、TestDao和实现类TestServiceAnnoImpl、TestDaoAnnoImpl。
新建TestController。
package com.sunbin.test.testSpring.web.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.sunbin.test.testSpring.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@RequestMapping(value = "/test")
public class TestController {
@Autowired
public TestService testService;
@RequestMapping(value = "/test")
public ModelAndView test(HttpServletRequest request,
HttpServletResponse reponse) throws Exception {
// TODO Auto-generated method stub
String param = request.getParameter("param");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", testService.test(param));
modelAndView.setViewName("helloWorld");
return modelAndView;
}
}
因类中使用@Controller、@Service、@Repository、@Autowired等注解,spring将创建bean并自动注入。
方法上@RequestMapping(value = "/test")注解的地址会/test在类注解/test之后被拦截。
重新部署后,访问
http://localhost:8080/testSpringWeb/test/test?param=anno看到结果:
testServiceImpl.test:testDaoImpl.test:anno
不是注解service、dao实现。
因为controller中被byName方式注入了xml文件配置的TestServiceImpl、TestDaoImpl。
注释掉root-context.xml中引入service、dao的配置
<!-- <import resource="services.xml"/>
<import resource="daos.xml"/> -->
再重新部署后,访问测试地址可看到期待的结果:
testServiceAnnoImpl.test:testDaoAnnoImpl.test:anno
3.Controller绑定多个地址
在实际应用中,经常会把一个模块下的多个资源放在一个Controller类中实现,以共享相同的service、变量定义等。这就需要为单个Controller的不同方法绑定不同地址。
在TestController中增加方法:
@RequestMapping(value = "/index")
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "test/index");
modelAndView.setViewName("helloWorld");
return modelAndView;
}
方法上的@RequestMapping(value = "/index")注解会将/index地址绑定到类地址/test后,拦截/test/index请求。
重新部署后,访问
http://localhost:8080/testSpringWeb/test/index和之前的/test/test可以看到不同的结果。
因注解实现Controller功能,因此类不需再实现Controller接口,也就不用再实现接口中的handleRequest抽象方法,可以使用其他方法名。
4.指定支持的请求方法
@RequestMapping(value = "/index")默认只支持get方法访问,如果使用post、put等方法访问时会报错:
405 Method Not Allowed
需要配置对不同请求方法的支持,修改注解如下:
@RequestMapping(value = "/index", method = { RequestMethod.GET,
RequestMethod.POST })
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
...
这样方法就可以通过get、post方式访问了。同样也可以配置put和delete方法,以实现支持restful样式的服务。
分享到:
相关推荐
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
主要介绍Spring MVC 的使用注解来配置的使用实例
Spring MVC非注解测试,用于理解spring mvc原理,然后再结合源码分析,更好的理解spring mvc
spring mvc mybatis 注解版 可直接使用
spring3.0MVC注解(附实例). spring3.0MVC注解(附实例). spring3.0MVC注解(附实例).
Spring MVC基于注解完整实例,学习的好东西
IT学习者Spring MVC注解实例.pdf
spring-mvc注解详情 ,网页版介绍注解,如果不好看,可以搜索里面的关键句子,百度就出来原文了,这方便没有网络的朋友学习
spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03
学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例
Spring MVC常用注解及源码分析,详细介绍各个注解的使用常用以及实现原理分析
Spring Mvc AOP通过注解方式拦截controller等实现日志管理
spring3.0MVC注解:spring3.0MVC注解spring3.0MVC注解spring3.0MVC注解
spring mvc + spring + hibernate 全注解整合开发视频教程 12
采用spring3.0 mvc 注解的方式,在页面显示helloworld
基于jpa+hibernate+spring+spring mvc注解方式项目案例带整体架构及一个页面操作小流程适合新手
Spring 2.5 基于注解驱动的Spring MVC 开发参考文档
网上很多人想使用注解拦截spring mvc action中的一个方法,实现方法很多,一般是通过在拦截器中分析url路径来实现, 使用自定义注解的方式来标注要拦截的 action 中的某个方法, 没有很好的解决方法, 如果通过借助spring...
spring mvc + spring + hibernate 全注解整合开发视频教程 11
spring mvc + spring + hibernate 全注解整合开发视频教程 04