`
goodsense
  • 浏览: 31944 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring mvc 注解介绍

    博客分类:
  • Java
阅读更多

spring mvc 基于注解的使用,相当于配置文件的使用简单的多.下面讲一下spring mvc 注解的使用

 

先看一下再未使用注解前,spring mvc的配置文件

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="        
  7.            http://www.springframework.org/schema/beans        
  8.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        
  9.            http://www.springframework.org/schema/context        
  10.            http://www.springframework.org/schema/context/spring-context-3.0.xsd       
  11.            http://www.springframework.org/schema/mvc        
  12.            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
  13.            
  14.     <bean  
  15.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  16.         <property name="prefix" value="/" />  
  17.         <property name="suffix" value=".jsp" />  
  18.     </bean>  
  19.       
  20.     <!-- 声明一个Controller中使用多个方法 -->  
  21.     <bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">  
  22.         <!-- 传参数时用这个作为名称 -->  
  23.         <property name="paramName" value="action"></property>  
  24.     </bean>  
  25.       
  26.     <!-- 声明DispatcherServlet不要拦截下面声明的目录 -->  
  27.     <mvc:resources location="/images/" mapping="/images/**"/>  
  28.       
  29. </beans>  

 

上面我们声明在一个控制器中使用多个方法.

 

再看看spring mvc使用注解配置文件的配置:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="        
  7.            http://www.springframework.org/schema/beans        
  8.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        
  9.            http://www.springframework.org/schema/context        
  10.            http://www.springframework.org/schema/context/spring-context-3.0.xsd       
  11.            http://www.springframework.org/schema/mvc        
  12.            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
  13.     <!-- 开启注解扫描功能 -->  
  14.     <context:component-scan base-package="gd.hz.springmvc.controller"></context:component-scan>       
  15.       
  16.     <!-- 开启注解 DefaultAnnotationHandlerMapping:映射相应的类,DefaultAnnotationHandlerMapping相应的类方法 -->  
  17.     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>  
  18.     <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>  
  19.       
  20.     <bean  
  21.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  22.         <property name="prefix" value="/" />  
  23.         <property name="suffix" value=".jsp" />  
  24.     </bean>  
  25.   
  26. </beans>  

 上面我们开启了注解扫描,注入了AnnotationMethodHandlerAdapter作用是对有RequestMapping注解的控制器进行HTTP路径、HTTP方法和请求参数解析.DefaultAnnotationHandlerMapping作用是映射处理程序方法级别的HTTP路径.

 

上面的两个注解也可以用mvc标签表示:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="        
  7.            http://www.springframework.org/schema/beans        
  8.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        
  9.            http://www.springframework.org/schema/context        
  10.            http://www.springframework.org/schema/context/spring-context-3.0.xsd       
  11.            http://www.springframework.org/schema/mvc        
  12.            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
  13.     <!-- 开启注解扫描功能 -->  
  14.     <context:component-scan base-package="gd.hz.springmvc.controller"></context:component-scan>       
  15.   
  16.     <mvc:annotation-driven/>  
  17.       
  18.     <bean  
  19.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  20.         <property name="prefix" value="/" />  
  21.         <property name="suffix" value=".jsp" />  
  22.     </bean>  
  23. </beans>  

 

 接下来新建一个控制器:

Xml代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import org.springframework.web.servlet.ModelAndView;  
  6.   
  7. @Controller("userController")  
  8. public class UserController {     
  9.     @RequestMapping("addUser")  
  10.     public ModelAndView addUser()  
  11.     {  
  12.         return new ModelAndView("hello");  
  13.     }  
  14. }  

注解 @Controller标志该类为控制器.注解@RequestMapping,映射相应的路径.

我们可以这样访问:http://localhost/Springmvc/addUser , 其中 addUser 就是@RequestMapping映射的名称,名字随意.接下来我们将对spring mvc的注解进行介绍.

 

首先用@Controller("userController")标志一个类为控制器,@Controller负责一个bean注册到spring上下文中,bean的ID默认是类名首字母小写,也可以自己定义,下面我显示的把名字定义为userController.

Java代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4.   
  5. @Controller("userController")  
  6. public class UserController {  
  7.    
  8. }  

 

@RequestMapping,用来定义访问的URL,可以定义在类上也可以定义在方法上.把它定义在类方法上,类下面的所有方法访问路径都要它之下.看下面的例子:

Java代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4.   
  5. import org.springframework.web.servlet.ModelAndView;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7.   
  8. @Controller("userController")  
  9. @RequestMapping("user")  
  10. public class UserController {  
  11.     //当有两个以上的配置时value不可以省略,url路径可以省去"/"  
  12.     @RequestMapping("addUser")  
  13.     public ModelAndView addUser()  
  14.     {  
  15.         String str = "Springmvc 您好啊!!--->addUser" ;  
  16.         return new ModelAndView("hello");  
  17.     }  
  18. }  

 我们在UserController 上使用了@RequestMapping("user"),在方法上使用了@RequestMapping("addUser")这样的话,我们访问这个方法的URL为:http://localhost/项目名称/user/addUser,并返回一个名为hello的视图

 

 下面是注解@RequestMapping的一些常用用法,其中当有配置有二个属性时,value不可省略.另外"result" , str ,是返回数据,我的下一章会介绍.

Java代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4.   
  5. import org.springframework.stereotype.Controller;  
  6. import org.springframework.web.bind.annotation.PathVariable;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RequestMethod;  
  9. import org.springframework.web.bind.annotation.RequestParam;  
  10. import org.springframework.web.servlet.ModelAndView;  
  11.   
  12. @Controller("userController")  
  13. @RequestMapping("user")  
  14. public class UserController {  
  15.       
  16.     //method=RequestMethod.POST  
  17.     @RequestMapping(value="addUser/tow" , method=RequestMethod.GET)  
  18.     public ModelAndView addUser2()  
  19.     {  
  20.         String str = "Springmvc 您好啊!!--->addUser2" ;  
  21.         return new ModelAndView("hello" , "result" , str);  
  22.     }  
  23.       
  24.     //URL为user/addUser/thread  
  25.     @RequestMapping("addUser/thread")  
  26.     public ModelAndView addUser3()  
  27.     {  
  28.         String str = "Springmvc 您好啊!!--->addUser3" ;  
  29.         return new ModelAndView("hello" , "result" , str);  
  30.     }  
  31.       
  32.     //访问文件二级路径 URL为user/addUser/thread 返回定义目录下的test目录的Hello.jsp文件  
  33.     @RequestMapping("addUser/six")  
  34.     public String addUser6(HttpServletRequest request)  
  35.     {  
  36.         String str = "Springmvc 您好啊!!--->addUser6" ;  
  37.         request.setAttribute("result", str);  
  38.         return "test/hello" ;  
  39.     }  
  40. }  

 

 

 @RequestParam:

 required :参数是否必须,boolean类型,可选项,默认为true

 value: 传递的参数名称,String类型,可选项,如果有值,对应到设置方法的参数 
 defaultValue:String类型,参数没有传递时为参数默认指定的值

默认情况下,当从表单或者以GET传来的参数跟Controller中的方法中的参数名不一样时就要使用此注解:

Java代码  收藏代码
  1. @RequestMapping("/addUser/eight")    
  2.     public void addUser8(int id, @RequestParam("name") String username) {    
  3.         //这样做进行URL请求访问这个方法的时候,就会先从request中获取参数id的值赋给参数变量id,  
  4.         //从request中获取参数name的值赋给参数变量username    
  5.     }    

 

 

@PathVariable:可以利用请求路径传值,当指定名称跟变量名不一样时需要指定名字,如下.

Java代码  收藏代码
  1. @RequestMapping("addUser/{seven}")  
  2.     public String addUser7(@PathVariable("seven") String name , HttpServletRequest request)  
  3.     {  
  4.         request.setAttribute("result", name);  
  5.         return "test/hello" ;  
  6.     }  

  {seven}当url传来什么他就是什么,但是当接收它的变量名不一样时需要用@PathVariable指定.

分享到:
评论

相关推荐

    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的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心注解** - `@Controller`:标记一个类为处理HTTP请求的控制器。这是Spring...

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。Spring MVC通过注解可以实现控制器、方法映射、模型数据绑定、视图解析等关键功能。本实例将深入探讨Spring MVC中常见的注解及其应用。 1. `@...

    IT学习者Spring MVC注解实例.pdf

    IT学习者Spring MVC注解实例.pdf

    Spring MVC jar包

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...

    基于注解Spring MVC环境搭建

    在“基于注解的Spring MVC环境搭建”中,我们将深入探讨如何利用注解来简化配置,快速建立一个运行中的Web项目。这篇博文(尽管描述为空,但提供了链接)很可能是关于创建一个基本的Spring MVC项目并使用注解来管理...

    Spring3.0MVC注解(附实例)

    本节将深入探讨Spring MVC注解及其在实际应用中的实现方式。 首先,Spring MVC注解允许开发者以声明式的方式配置控制器,避免了传统的XML配置文件。这极大地简化了代码,提高了可读性和维护性。例如,`@...

    基于jpa+hibernate+spring+spring mvc注解方式项目

    **基于JPA+Hibernate+Spring+Spring MVC注解方式项目详解** 在现代Java Web开发中,Spring框架扮演了核心角色,而Spring MVC作为其MVC(Model-View-Controller)实现,提供了强大的Web应用程序构建能力。同时,JPA...

    Spring MVC注解项目实例

    总结起来,这个"Spring MVC注解项目实例"涵盖了Spring MVC框架的核心元素,包括注解驱动的控制器、拦截器的使用,以及数据库操作。它为初学者提供了一个动手实践的机会,帮助他们快速掌握Spring MVC的开发技巧。

    spring mvc 注解例子

    以上就是Spring MVC中一些关键注解的介绍。通过这些注解,开发者可以轻松地构建出松散耦合、易于测试的Web应用。在提供的链接文章"spring mvc 注解实现"中,你应该能发现更多关于如何实际应用这些注解的例子和详细...

    最全最经典spring-mvc教程

    Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...

    spring mvc 4.0

    3. **注解驱动的控制器**:Spring MVC 4.0广泛使用了Java注解,如@Controller、@RequestMapping等,使控制器类的定义更加简洁,减少了XML配置。 4. **路径变量**:在@RequestMapping注解中,可以使用路径变量(path...

    spring mvc 注解实例

    在这个注解实例中,我们将深入探讨Spring MVC中的核心注解以及如何利用它们实现对数据库表的增删改查(CRUD)操作。拦截器是Spring MVC中的另一个重要概念,它允许我们在请求处理前后执行自定义逻辑。 首先,让我们...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...

    spring mvc mybatis 整合源码,带数据库脚本,带详细注释

    总结,这个压缩包提供了一个完整的Spring MVC和MyBatis整合的示例,包含了数据库脚本和详尽的注释,无论你是初学者还是有经验的开发者,都能从中受益。通过研究源码,你可以掌握Web应用的开发流程,理解Spring MVC和...

    Mastering Spring MVC 4(2015.09)源码

    在Spring MVC中,开发者可以通过@Autowired注解自动装配依赖,使得代码更易于测试和维护。 此外,Spring MVC还提供了数据绑定和验证功能。表单提交的数据可以直接绑定到控制器方法的参数上,通过@ModelAttribute...

    Spring MVC 教程快速入门 深入分析

    十六、Spring MVC关于写几个配置文件的说明:介绍了在Spring MVC项目中需要配置哪些文件以及这些文件的作用,包括DispatcherServlet的配置文件、web.xml配置等。 十七、Spring MVC如何取得Spring管理的bean:阐述了...

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个教程“Spring MVC - A Tutorial”旨在帮助开发者深入理解和掌握Spring MVC的核心概念和...

    spring mvc + spring + hibernate 全注解整合开发视频教程 12

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...

Global site tag (gtag.js) - Google Analytics