版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简单写一个搭建Spring MVC3.0的流程(以Spring3.0.5为列),数据库交互使用SpringJdbcTemplate,附件有项目(没有jar包)。整个项目结构如下图所示: 1、去官网下载3.0.5所有jar包,所需jar包,见附件图片,每个jar包得用处如下:org.springframework.aop- 3.0.0.RELEASE-Spring的面向切面编程,提供AOP(面向切面编程)实现org.springframework.asm- 3.0.0.RELEASE-Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar
2、包.3.0开始提供他自己独立的asmJarorg.springframework.aspects- 3.0.0.RELEASE-Spring提供对AspectJ框架的整合org.springframework.beans- 3.0.0.RELEASE-SpringIoC(依赖注入)的基础实现org.springframework.context.support- 3.0.0.RELEASE-Spring-context的扩展支持,用于MVC方面org.springframework.context- 3.0.0.RELEASE-Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级
3、服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等org.springframework.core- 3.0.0.RELEASE-Spring3.0的核心工具包org.springframework.expression- 3.0.0.RELEASE-Spring表达式语言org.springframework.instrument.tomcat- 3.0.0.RELEASE-Spring3.0对Tomcat的连接池的集成org.springframework.instrument- 3.0.0.RELEASE-Spring3.0对服务器的代理
4、接口org.springframework.jdbc- 3.0.0.RELEASE-对JDBC的简单封装org.springframework.jms- 3.0.0.RELEASE-为简化JMS API的使用而作的简单封装org.springframework.orm- 3.0.0.RELEASE-整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现org.springframework.oxm-3.0.0.RELEASE-Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换org.springframework.tes
5、t- 3.0.0.RELEASE-对Junit等测试框架的简单封装org.springframework.transaction- 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.0 Servlet3.0的支持org.springframework.web.struts- 3.0.0.RELEASE-整合Stru
6、ts的时候的支持org.springframework.web- 3.0.0.RELEASE-SpringWeb下的工具包 说明:jar包库使用官方提供的,无需全部加载到项目中。 、spring对jdk的依赖: · JDK 6+ for Spring Framework 4.x· JDK 5+ for Spring Framework 3.x 、对spring的maven依赖以及介绍,请看官方简介; 、spring各个版本的jar包全量下载地址,请点击这里,有惊喜! 、什么?! 有些人想只要
7、获取spring的一个jar包,不想全部都下载,那就请点击这里。 2、借鉴spring官网写法,建立一个src-resources Source Folder,再新建目录META-INF,存放springmvc-servlet.xml和jdbc-context.xml文件(事务和数据库连接池的管理);以及perties和perties。 JDBC-context.xml文件:Xml代码 1. <?xml version="1.0" encoding="UT
8、F-8"?> 2. <beans xmlns="/schema/beans" 3. xmlns:xsi="/2001/XMLSchema-instance" 4. xmlns:aop="http:/www.
9、/schema/aop" 5. xmlns:tx="/schema/tx" 6. xmlns:context="/schema/context" 7.
10、; xsi:schemaLocation=" 8. /schema/beans 9. http:/www.springframework.or
11、g/schema/beans/spring-beans-3.0.xsd 10. /schema/tx 11. /schema/t
12、x/spring-tx-3.0.xsd 12. /schema/context 13. /schema/context/spring-con
13、text-3.0.xsd 14. /schema/aop 15. /schema/aop/spring-aop-3.0.xsd&
14、quot; default-autowire="byName"> 16. 17. <context:property-placeholder location="classpath:perties"/> 18. 19. <
15、;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 20. <property name="driverClass" value="$mysql.driverclass">&
16、lt;/property> 21. <property name="jdbcUrl" value="$mysql.jdbcurl"></property> 22. <property name="user" value=&quo
17、t;$mysql.user"></property> 23. <property name="password" value="$mysql.password"></property> 24. <property name="
18、acquireIncrement" value="5"></property> <!- 当连接池中的连接用完时,C3P0一次性创建新连接的数目2 -> 25. <property name="initialPoolSize" value="10"></property>
19、160;<!- 初始化时创建的连接数,必须在minPoolSize和maxPoolSize之间 -> 26. <property name="minPoolSize" value="20"></property> 27. <property&
20、#160;name="maxPoolSize" value="20"></property> 28. <!- 最大空闲时间,超过空闲时间的连接将被丢弃 29. 需要注意:mysql默认的连接时长为8小时(28800)【可在my.ini中添加 wait_timeout=3
21、0(单位秒)设置连接超时】,这里设置c3p0的超时必须<28800 30. -> 31. <property name="maxIdleTime" value="300"></property> 32.
22、60; <property name="idleConnectionTestPeriod" value="60"></property> <!- 每60秒检查连接池中的空闲连接 -> 33. <property name="maxStatement
23、s" value="20"></property> <!- jdbc的标准参数 用以控制数据源内加载的PreparedStatement数量,但由于预缓存的Statement属 于单个Connection而不是整个连接 -> 34. </bean> 35.
24、;36. <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 37. <property name="dataSource" ref="dataSource
25、"></property> 38. </bean> 39. 40. <!- 声明式事务管理 -> 41. <aop:config> 42.
26、 <aop:advisor pointcut="execution(* com.aokunsang.service.impl.*ServiceImpl.*(.)" advice-ref="myAdvice"/> 43. </aop:config> 44. <tx:a
27、dvice id="myAdvice" transaction-manager="txManager"> 45. <tx:attributes> 46. <tx:method name="add*"
28、160;propagation="REQUIRED"/> 47. <tx:method name="update*" propagation="REQUIRED"/> 48.
29、60;<tx:method name="*" read-only="true" rollback-for="com.aokunsang.util.DaoException"/> 49. </tx:attributes> 50. </tx:advice>
30、;51. 52. <!- 自动扫描组件,需要把controller去掉,否则影响事务管理 -> 53. <context:component-scan base-package="com.aokunsang"> 54.
31、; <context:exclude-filter type="regex" expression="com.aokunsang.web.*"/> 55. </context:component-scan> 56. </beans> springmvc-servlet.xml文件: Xml代码
32、160;1. <?xml version="1.0" encoding="UTF-8"?> 2. <beans xmlns="/schema/beans" 3. xmlns:xsi="/2001/XMLSchema-instance" xmlns:p=&q
33、uot;/schema/p" 4. xmlns:context="/schema/context" 5. xmlns:mvc="/schema/mvc"
34、 6. xsi:schemaLocation=" 7. /schema/beans 8. ht
35、tp://schema/beans/spring-beans-3.0.xsd 9. /schema/context 10.
36、160;/schema/context/spring-context-3.0.xsd 11. /schema/mvc 12. &
37、#160;/schema/mvc/spring-mvc-3.0.xsd"> 13. 14. <!- 启动扫描所有的controller -> 15. <context:component-scan base-package="com.aokunsang.w
38、eb"/> 16. 17. <!- 主要作用于Controller,激活该模式 18. 19. 下面是一种简写形式,完全可以手动配置替代这种简写形式; 2
39、0. 它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean, 21. 是spring MVC为Controllers分发请求所必须的 22.
40、0;-> 23. <mvc:annotation-driven/> 24. 25. <!- 这里拦截器还有一种配置方法【针对路径进行配置】 推荐使用这个,方便直观-> 26. <mvc:interceptors> 27.
41、 <mvc:interceptor> 28. <mvc:mapping path="/user/MyHome"/> 29. <
42、mvc:mapping path="/usermanager/*"/> 30. <bean class="erceptor.MyInterceptor"></bean> 31.
43、60;</mvc:interceptor> 32. </mvc:interceptors> 33. 34. <!- 全局配置 35. <mvc:interceptors> 36.
44、160; <bean class="erceptor.MyInterceptor"></bean> 37. </mvc:interceptors> 38. -> 39. <!- 配置js,css等静态文件直接映射到
45、对应的文件夹,不被DispatcherServlet处理 40. mapping - WebRoot里面的静态文件位置目录 41. location - 访问地址 42. -> 43. <mvc:resources location=
46、"/resources/*" mapping="/WEB-INF/resources/"/> 44. 45. <!- 46. 配置/WEB-INF/views/目录里面的jsp文件不被DispatcherServlet处理,可以直接通过浏览器访问。 47.
47、; view-name - /WEB-INF/views/里面的jsp文件名(不许后缀即可) 48. path - 访问地址 49. -> 50. <mvc:view-controller path="/header"
48、0;view-name="header"/> 51. 52. <!- jsp页面解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在/WEB-INF/views/目录下,查找XXX.jsp文件-> 53. <bean class="org.springframework.web.servlet.view.InternalResourc
49、eViewResolver"> 54. <property name="prefix" value="/WEB-INF/views/"></property> 55. <property name="suffix" v
50、alue=".jsp"></property> 56. </bean> 57. </beans> 3、修改web.xml文件如下: Xml代码 1. <!- Log4j的配置(在同一容器中部署多个应用时, 2. 不能使用默认的webAppRootKey,必须指定唯一KEY,以免冲突)
51、; 3. -> 4. <context-param> 5. <param-name>webAppRootKey</param-name> 6. <param-value>springmvc.root</param-value> 7. </context-param> 8
52、. 9. <context-param> 10. <param-name>contextConfigLocation</param-name> 11. <param-value>classpath:/META-INF/jdbc-context.xml</param-value> 12. </context-param>
53、; 13. 14. <listener> 15. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 16. </listener> 17. 18.
54、 <servlet> 19. <servlet-name>spring-mvc</servlet-name> 20. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 21. <init-p
55、aram> 22. <param-name>contextConfigLocation</param-name> 23. <param-value>classpath:/META-INF/springmvc-servlet.xml</param-value> 24.
56、0; </init-param> 25. <load-on-startup>1</load-on-startup> 26. </servlet> 27. 28. <servlet-mapping> 29. <servlet-name
57、>spring-mvc</servlet-name> 30. <url-pattern>/</url-pattern> 31. </servlet-mapping> 32. 33. <filter> 34. <filter-name>enco
58、dingFilter</filter-name> 35. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 36. </filter> 37. 38. <filter-mapping> 39
59、. <filter-name>encodingFilter</filter-name> 40. <url-pattern>/*</url-pattern> 41. </filter-mapping> 4、从springmvc-servlet.xml中可以知道,我把jsp页面放在WEB-INF/views目录中,静态文件(图片,j
60、s,css等)放在Resources目录中,便于管理。 5、以上配置文件基本完成,下面开始代码编写:首先说几个常用的注解: Java代码 1. Autowired和Qualifier 自动注入根据类型注入 2. Autowired 可以对成员变量、方法以及构造函数进行注释, 3. Qualifier 的标注对象是成员变量、方法入参、构造函数入参。 4. ps:两者结合使用相当
61、于Resourcede效果。 5. Resource 自动注入根据名称注入,可写参数name="" 6. Controller 表示控制器 7. Service 表示业务处理层一般在serviceImpl 8. Repository 表示持久层一般在daoImpl 9. Component 当你的类不清楚是哪一层的时候使用该注解
62、60;10. ResponseBody 异步返回数据类型为json 11. RequestMapping 路径,请求类型等设置 12. InitBinder 数据绑定 13. RequestBody、ModeleAttributes、SessionAttributes等 注解的详细介绍: 也可以参考: <a>首先写一个BaseController,可做一些数据绑定之类的全局操
63、作(如:把日期字符串转换为Date日期)。 Java代码 1. Controller 2. public class BaseController 3. 4. InitBinder 5. protected void ininBinder(WebDataBinder binder) 6.
64、0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 7. binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf,true); 8.
65、60; 9. <b>然后写一个拦截器,拦截器有两种实现方式,1、继承HandlerInterceptorAdapter类,2、实现HandlerInterceptor接口。 Java代码 1. /* 2. * 自定义拦截器 3. * author tushen 4. * date Nov 5, 2011 5. */
66、 6. public class MyInterceptor extends HandlerInterceptorAdapter 7. 8. /* 9. * 最后执行,可用于释放资源 10. */ 11. Ove
67、rride 12. public void afterCompletion(HttpServletRequest request, 13. HttpServletResponse response, Object handler, Exception ex) 1
68、4. throws Exception 15. / TODO Auto-generated method stub 16. super.afterComple
69、tion(request, response, handler, ex); 17. 18. 19. /* 20. * 显示视图前执行 21. */ 22. Override
70、 23. public void postHandle(HttpServletRequest request, 24. HttpServletResponse response, Object handler, 25. &
71、#160; ModelAndView modelAndView) throws Exception 26. 27. System.out.println(request.getContentType()+"-"+request.getChar
72、acterEncoding()+"-"+request.getContextPath(); 28. System.out.println("MyInterceptor.postHandle()-viewName:"+modelAndView.getViewName(); 29. super.postHandle(reque
73、st, response, handler, modelAndView); 30. 31. 32. /* 33. * Controller之前执行 34. */ 35. Overrid
74、e 36. public boolean preHandle(HttpServletRequest request, 37. HttpServletResponse response, Object handler) throws Exception
75、;38. 39. String url = request.getRequestURI(); 40. 41. Sys
76、tem.out.println("MyInterceptor.preHandle()"+url); 42. 43. return super.preHandle(request, response, handler); 44. &
77、#160;45. <c>在Util包中DBUtil.java中实现Spring JDBC Template的封装,操作数据库;写一个DaoException继承spring的运行时异常类NestedRuntimeException,在数据库操作异常时抛出该异常,在controller层进行处理。<d>写一个抽象的BaseDao接口和BaseDaoImpl实现类,让所有模块共享使用(详见附件)。 Java代码 1. /* 2. * 3. */
78、0; 4. package com.aokunsang.dao; 5. 6. import java.io.Serializable; 7. import java.util.List; 8. import java.util.Map; 9. 10. /* 11. * author tushen 12. * date Nov
79、160;5, 2011 13. */ 14. public interface BaseDao 15. 16. /* 17. * 保存或者更新实体 18. * param sql 19.
80、160;* param entry 20. */ 21. <T extends Serializable> void saveOrUpdateObject(String sql,T entry); 22. 23. /*
81、0;24. * 查询实体列表 25. * param sql 26. * param className 27. * param obj 28. * return 29. */ 30.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ICU侵袭性真菌病及防治策略课件
- 网吧连锁行政文员招聘合同
- 2024年09月内蒙古2024年中信银行呼和浩特分行校园招考笔试历年参考题库附带答案详解
- 2024年09月2024届华夏银行杭州分行校园招聘笔试历年参考题库附带答案详解
- 2024年09月2024中国银行审计部贵州分部辖属机构校园招聘1人笔试历年参考题库附带答案详解
- 2024年09月2024中国农业银行陕西省分行校园招聘566人笔试历年参考题库附带答案详解
- 2024年08月苏州银行零售银行总部企划综合部招考1名网点服务岗人员笔试历年参考题库附带答案详解
- 2024年08月湖北省农村信用社(农商银行)招录1273名高校毕业生笔试历年参考题库附带答案详解
- 2024年08月浙江泰隆商业股份有限公司总行外呼营销岗招聘笔试历年参考题库附带答案详解
- 小肠扭转病人护理查房
- GB/T 44890-2024行政许可工作规范
- 二年级下册加减混合竖式练习360题附答案
- (完整版)四年级上册数学竖式计算题100题直接打印版
- 音乐常识知识考试题库(300题版)
- 酵素行业分析研究报告
- 股东变更情况报告表
- 苏教版五年级数学下册解方程五种类型50题
- 部编人教版九年级语文上册全册课后教学反思汇总
- (完整版)居家养老服务项目收费标准一览表
- 玻璃瓶罐的缺陷产生原因及解决方法63699
- 高层住宅(23-33层)造价估算指标
评论
0/150
提交评论