spring各对⽤jar包及spring常⽤注解
1.spring的各个jar包的作⽤
org.springframework.aop-3.0.0.RELEASE--------------------Spring的⾯向切⾯编程,提供AOP(⾯向切⾯编程)实现
org.springframework.asm-3.0.0.RELEASE--------------------Spring独⽴的asm程序,相遇Spring2.5.6的时候需要asmJar 包.3.0开始提供他⾃⼰独⽴的asmJar
org.springframework.aspects-3.0.0.RELEASE----------------Spring提供对AspectJ框架的整合\
org.springframework.beans-3.0.0.RELEASE------------------SpringIoC(依赖注⼊)的基础实现
t.support-3.0.0.RELEASE--------Spring-context的扩展⽀持,⽤于MVC⽅⾯
t-3.0.0.RELEASE----------------Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的⽀持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等
-3.0.0.RELEASE-------------------Spring3.0的核⼼⼯具包
pression-3.0.0.RELEASE-------------Spring表达式语⾔
org.at-3.0.0.RELEASE------Spring3.0对Tomcat的连接池的集成
org.springframework.instrument-3.0.0.RELEASE-------------Spring3.0对服务器的代理接⼝
org.springframework.jdbc-3.0.0.RELEASE-------------------对JDBC的简单封装
org.springframework.jms-3.0.0.RELEASE--------------------为简化JMS API的使⽤⽽作的简单封装
-3.0.0.RELEASE--------------------整合第三⽅的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现
-3.0.0.RELEASE--------------------Spring 对Object/XMl的映射⽀持,可以让Java与XML之间来回切换
st-3.0.0.RELEASE--------------------对Junit等测试框架的简单封装
ansaction-3.0.0.RELEASE-------------为JDBC、Hibernate、JDO、JPA等提供的⼀致的声明式和编程式事务管理
org.springframework.web.portlet-3.0.0.RELEASE-------------SpringMVC的增强
org.springframework.web.servlet-3.0.0.RELEASE-------------对JEE6.0Servlet3.0的⽀持
org.springframework.web.struts-3.0.0.RELEASE--------------整合Struts的时候的⽀持
org.springframework.web-3.0.0.RELEASE--------------------SpringWeb下的⼯具包
2.spring的常⽤注解
使⽤Spring MVC的注解及其⽤法和其它相关知识来实现控制器功能。
jquery框架定义之前在使⽤Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使⽤Spring⾃带的spring-webmvc组件来实现同样的功能,⽽且⽐之以前更简单。另外,还省掉了整合两个框架带来的不稳定因素。
对于Spring MVC框架,我主要讲⼀下它的常⽤注解,再结合⼀些⽰例进⾏说明,⽅便⼤家能够快速理解。
⼀、Spring MVC常⽤注解说明
@Controller
在类上⾯定义,表明该类为控制器,返回字符串与redirect:xxx
@RequestMapping
在类或⽅法上⾯使⽤此注解,设置URL访问地址。它有两个属性,value指定访问路径,method指定指定请求⽅式,请求⽅式在RequestMethod这个类中,全部以常量形式定义,它默认使⽤GET请求。
@RequestParam
指定Request请求参数,在⽅法参数中定义,相当于传统的Parameter()。
@PathVariable
获取URL访问路径变量,这是Spring MVC 3.0框架才加⼊的特性,基于RESTful风格的URL访问路径。
@ModelAttribute
全局式的⽅法,在⼀组URL访问路径中,每次都会执⾏,⽅法返回结果保存在module会话中。
@Service
在类上⾯定义,指定被注解的类是业务逻辑组件,如果不指定具体的Bean ID,则采⽤默认命名⽅式,即类名的⾸字母⼩写。之前在SSH2中,⼤象曾对Dao组件使⽤
@Repository,本例只有业务层,所以就只⽤@Service注解。
@Autowired
IoC⾃动注⼊功能,替换以前的set写法,在SSH2中就已经开始使⽤了。
@Qualifier
对同⼀接⼝类有不同实现指定具体的实现类。
@ResponseBody
同样定义在⽅法上,Ajax调⽤声明,指定⽅法返回结果为Ajax回调函数结果。这是Spring MVC 3.0框架中增加的⼀个新特性。
@InitBinder
初始化数据绑定与类型转换,将传⼊的参数转换为⾃定义类型,或者对参数进⾏⾃定义处理。
⼆、⽰例
@RequestMapping在类名上⾯定义,相当于指定的URL是此控制器内的所有其它访问路径的⽗路径。如果在某个⽅法上⾯定义@RequestMapping注解,则相对于⽗路径来说,是其⼦路径。如果不定义value值,那么按⽗路径访问就会被默认执⾏。但请注意,默认的访问⽅式只能有⼀个。
对于UserController的list⽅法REST访问URL为localhost:8080/ssm3/user,⽽且它同时接收GET和POST两种请求。另外,Spring MVC 3.0有⼀个很灵活的特性,可以⾃定义⽅法参数。看看list⽅法,我设定了两个参数,⼀个Model,⼀个User对象。Model是⽤来渲染数据,⽣成页⾯⽤的。相当于request.setAttribute,你可以这样理解,但不能就这样认为,Model以及另⼀个ModelMap,都是作为视图模型传递参数的,它们的作⽤域为request。除此之外,你还可以定义HttpServletRequest、HttpServletResponse等等各种各样的参数。
如果⼀个类还要定义其它资源访问怎么办呢?请看下⾯的RoleController
在RoleController上定义了全局路径/role,这样⼀来,对于和⾓⾊相关的资源都会以/role开头,⽐如创建⾓⾊/role/new;编辑⾓⾊/role/edit/{id}等等。
上图edit⽅法中的{id}写法,就是RESTful URL风格,与@PathVariable搭配来⼀起实现该功能。它表⽰所请求的URL中,可以将变量值作为参数进⾏动态的传递。例如:localhost:8080/ssm3/role/edit/1,另外,除了可以⽤数字,还可以⽤字符串,还可以多定义⼏个变量:/role/edit/{id}/{type}等等。
每个⽅法的返回值,其实都对应着⼀个结果页⾯,这⼀点和struts2-convention这个插件很相像。本例使⽤FreeMarker模板引擎作为展⽰层,页⾯的后缀为.html,页⾯中除了标准的HTML之外,其余的数据填充,条件判断之类,都要⽤到FreeMarker指令。
对于save⽅法返回值写法表⽰的是重定向,相当于执⾏localhost:8080/ssm3/role,⽽这个URL对应的其实就是RoleController这个类⾥⾯list⽅法。如果要带上参数之类的,⼀定要符合所定义的REST资源路径才可以。
@ResponseBody⽤来标识Ajax⽅法调⽤,在上⾯这个⽅法中,⽤到了@RequestParam注解,它的作⽤就和Parameter("name")⼀样。Spring MVC框架⽀持好⼏种返回格式,例如:String/JSON/XML等等。不过以这种格式的字符串值形式返回是最简便的⼀种⽅式,⽽且利⽤JavaScript解析也⼗分⽅便。页⾯调⽤的时候请⽤jQuery的$.ajax()这种原⽣⽅式来定义,这种写法不会出问题,也很灵活,⽽且其它⼏种⽅式最终也是调⽤它来完成请求。
对于拥有相同的⼀组访问规则的URL,如果都需要获得相同的数据,则使⽤@ModelAttribute注解。以RoleController为例,上⾯这个注解与⽅法的含义,相当于是在它⾥⾯所有的访问路径⽅法中都调⽤这个写法:module.addAttribute(“allRoles”,Roles())。也即,不管是访问create还是edit,都会执⾏preperList,都会获得allRoles这个List。
注册⾃定义类型编辑器,在Spring MVC中,对于时间类型,框架不会⾃动帮你转换绑定,需要你⾃⼰来定义属性编辑器。除此之外,还可以对某些特殊字符进⾏转义符处
理,都可以放在@InitBinder注解的⽅法中进⾏。如果所有的Controller都需要注册相同的属性编辑器,则可以实现WebBindingInitializer接⼝,定义⼀个全局的属性编辑器。
三、在web容器中部署
想要让Spring MVC框架帮助我们完成⼯作,就需要在Web容器中配置好它。
DispatcherServlet是Spring MVC的核⼼,是处理⼀切请求转发的核⼼控制器。⼤象曾在本系列的第⼆篇⽂章中就详细描述了Spring MVC的流程结构,如果没什么印象的
话请再去看看。
Spring MVC有⼀个默认规则,Web容器启动之后,会⾃动查/WEB-INF/<servlet-name>.xml这个Spring类型的配置⽂件。如果想⾃定义配置⽂件路径,就按上⾯的写
法,指定contextConfiglocation这个属性,⼤象采⽤maven构建项⽬,所以l这个配置⽂件放在resource⽬录下。
四、MVC配置
Spring MVC 3.0对使⽤和配置作了较⼤的改进,除了提供注解来简化控制器的开发之外,在配置⽂件上⾯也进⾏了简化。
基于Spring MVC注解的配置就是上⾯这两⾏,还有⼀种更简化的配置写法是只写这⼀句:<mvc:annotation-driven />就可以了,Spring启动的时候会⾃动注册上⾯这两个
bean。为什么⼤象要在这⾥显⽰的注册两个bean呢?因为,我们在真正使⽤的时候,⼀般来说,使⽤默认的⽅式满⾜不了我们的系统或业务要求。⽐如,⽐如数据验
证,⽐如返回消息格式转换等等⼀些⾃定义设置。他们都需要配置在这两个bean⾥⾯。因为本例是⽤来作为⼊门教程,所以这些东西都没有加进来。
DefaultAnnotationHandlerMapping这个类是将所有标注了@RequestMapping注解的Controller类,都放到了⼀个HandlerMapping对象中,当有请求时,就在这个对
象中进⾏查是否有与之匹配的路径,AnnotationMethodHandlerAdapter是管理所有@RequestMapping注解的⽅法。
转载⾃: www.oschina/code/snippet_1165954_23354
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-thumbsup"></use>
</svg><span class="name">点赞</span>
<span class="count">1</span>
</a></li>
<li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-Collection-G"></use>
</svg><span class="name">收藏</span></a></li>
<li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-fenxiang"></use>
</svg>分享</a></li>
<!--打赏开始-->
<!--打赏结束-->
<li class="tool-item tool-more">
<a>
<svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="/2000/svg" p-id="5717" xmlns:xlink="/1999/xlink" width="200" height="200"><d </a>
<ul class="more-box">
<li class="item"><a class="article-report">⽂章举报</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="person-messagebox">
<div class="left-message"><a href="blog.csdn/wangcunhuazi">
<img src="profile.csdnimg/D/4/F/3_wangcunhuazi" class="avatar_pic" username="wangcunhuazi">
<img src="g.csdnimg/static/user-reg-year/2x/7.png" class="user-years">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit"><a href="blog.csdn/wangcunhuazi" data-report-click="{"mod":"popu_379"}" target="_blank">平凡的华仔</a></span> </div>
<div class="text"><span>发布了72 篇原创⽂章</span> · <span>获赞 29</span> · <span>访问量 130万+</span></div>
</div>
<div class="right-message">
<a href="bbs.csdn/topics/395530431" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-messageboard">他的留⾔板
</a>
<a class="btn btn-sm bt-button personal-watch" data-report-click="{"mod":"popu_379"}">关注</a>
</div>
</div>
</div>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论