Spring MVC搭建全过程_第1页
Spring MVC搭建全过程_第2页
Spring MVC搭建全过程_第3页
Spring MVC搭建全过程_第4页
Spring MVC搭建全过程_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用了大半年的Spring MVC3.0,用着感觉不错。简单写一个搭建Spring MVC3.0的流程(以为列),数据库交互使用spring JDBC Template,附件有项目(没有jar包)。整个项目架构如下图所示:1、去官网下载所有jar包,所需jar包,见附件图片,每个jar包得用处如下:的面向切面编程,提供AOP(面向切面编程)实现独立的asm程序,相遇的时候需要asmJar包.3.0开始提供他自己独立的asmJar提供对AspectJ框架的整合SpringIoC(依赖注入)的基础实现的扩展支持,用于MVC方面提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服

2、务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等的核心工具包表达式语言对Tomcat的连接池的集成对服务器的代理接口对JDBC的简单封装为简化JMS API的使用而作的简单封装整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现org.springframework.oxm-3.0.0.RELEASE-Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换对Junit等测试框架的简单封装为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理SpringMVC的增强

3、对JEE6.0 Servlet3.0的支持整合Struts的时候的支持SpringWeb下的工具包2、借鉴spring官网写法,建立一个src-resources Source Folder,再新建目录META-INF,存放springmvc-servlet.xml和jdbc-context.xml文件(事务和数据库连接池的管理);以及perties和perties。JDBC-context.xml文件:Xml代码 1. 2. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. !-最大空闲时间,超过

4、空闲时间的连接将被丢弃29. 需要注意:mysql默认的连接时长为8小时(28800)【可在my.ini中添加wait_timeout=30(单位秒)设置连接超时】,这里设置c3p0的超时必须31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. springmvc-servlet.xml文件:Xml代码 1. 2. 13. 14. 15. 16. 17. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.

5、33. 34. !-全局配置35. 36. 37. 38. -39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 3、修改web.xml文件如下:Xml代码 1. 2. contextConfigLocation3. classpath:/META-INF/jdbc-context.xml4. 5. 6. 7. 8. 9. 10. 11. spring-mvc12. 13. 14. contextConfigLocation15. classpath:/META-INF/springmvc-servlet.xml16. 17. 118. 19. 20. 21. sp

6、ring-mvc22. /23. 24. 25. 26. encodingFilter27. 28. 29. 30. 31. encodingFilter32. /*33. 4、从springmvc-servlet.xml中可以知道,我把jsp页面放在WEB-INF/views目录中,静态文件(图片,js,css等)放在Resources目录中,便于管理。5、以上配置文件基本完成,下面开始代码编写:首先说几个常用的注解:Java代码 1. Autowired自动注入根据类型注入Autowired可以对成员变量、方法以及构造函数进行注释,而Qualifier的标注对象是成员变量、方法入参、构造函

7、数入参。2. Resource自动注入根据名称注入,可写参数name=3. Controller表示控制器4. Service表示业务处理层一般在serviceImpl5. Repository表示持久层一般在daoImpl6. Component当你的类不清楚是哪一层的时候使用该注解7. ResponseBody异步返回数据类型为json8. RequestMapping路径,请求类型等设置9. InitBinder数据绑定注解的详细介绍:也可以参考:首先写一个BaseController,可做一些数据绑定之类的全局操作(如:把日期字符串转换为Date日期)。Java代码 1. Contro

8、ller2. publicclassBaseController3. 4. InitBinder5. protectedvoidininBinder(WebDataBinderbinder)6. SimpleDateFormatsdf=newSimpleDateFormat(yyyy-MM-dd);7. binder.registerCustomEditor(Date.class,newCustomDateEditor(sdf,true);8. 9. 然后写一个拦截器,拦截器有两种实现方式,1、继承HandlerInterceptorAdapter类,2、实现HandlerIntercepto

9、r接口。Java代码 1. /*2. *自定义拦截器3. *authortushen4. *dateNov5,20115. */6. publicclassMyInterceptorextendsHandlerInterceptorAdapter7. 8. /*9. *最后执行,可用于释放资源10. */11. Override12. publicvoidafterCompletion(HttpServletRequestrequest,13. HttpServletResponseresponse,Objecthandler,Exceptionex)14. throwsException15

10、. /TODOAuto-generatedmethodstub16. super.afterCompletion(request,response,handler,ex);17. 18. 19. /*20. *显示视图前执行21. */22. Override23. publicvoidpostHandle(HttpServletRequestrequest,24. HttpServletResponseresponse,Objecthandler,25. ModelAndViewmodelAndView)throwsException26. 27. (request.getContentTy

11、pe()+-+request.getCharacterEncoding()+-+request.getContextPath();28. (MyInterceptor.postHandle()-viewName:+modelAndView.getViewName();29. super.postHandle(request,response,handler,modelAndView);30. 31. 32. /*33. *Controller之前执行34. */35. Override36. publicbooleanpreHandle(HttpServletRequestrequest,37

12、. HttpServletResponseresponse,Objecthandler)throwsException38. 39. Stringurl=request.getRequestURI();40. 41. (MyInterceptor.preHandle()+url);42. 43. returnsuper.preHandle(request,response,handler);44. 45. 在Util包中DBUtil.java中实现Spring JDBC Template的封装,操作数据库;写一个DaoException继承spring的运行时异常类NestedRuntimeE

13、xception,在数据库操作异常时抛出该异常,在controller层进行处理。写一个抽象的BaseDao接口和BaseDaoImpl实现类,让所有模块共享使用(详见附件)。Java代码 1. /*2. *3. */4. package;5. 6. import;7. import;8. import;9. 10. /*11. *authortushen12. *dateNov5,201113. */14. publicinterfaceBaseDao15. 16. /*17. *保存或者更新实体18. *paramsql19. *paramentry20. */21. voidsaveOr

14、UpdateObject(Stringsql,Tentry);22. 23. /*24. *查询实体列表25. *paramsql26. *paramclassName27. *paramobj28. *return29. */30. ListgetObjList(Stringsql,ClassclassName,Objectobjs);31. 32. /*33. *查询实体34. *param35. *paramsql36. *paramobjs37. *return38. */39. TgetObject(Stringsql,Classclazz,Objectobjs);40. 41. /

15、*42. *查询一个Map集合43. *paramsql44. *paramobjs45. *return46. */47. Mapfind(Stringsql,Objectobjs);48. 49. /*50. *批量操作51. *paramsql52. *paramobjLs53. */54. voidbatchOperate(Stringsql,ListobjLs);55. 56. /*57. *判断实体是否存在58. *paramsql59. *paramobj60. *return61. */62. intisExist(Stringsql,Objectobj);63. 64. /*65. *编辑操作66. *paramsql6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论