




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用了大半年的Spring MVC3.0,用着感觉不错。简单写一个搭建Spring MVC3.0的流程(以Spring3.0.5为列),数据库交互使用spring JDBC Template,附件有项目(没有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
2、的时候需要asmJar 包.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
4、-Spring3.0对服务器的代理接口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.sp
5、ringframework.test- 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
6、.0.RELEASE-整合Struts的时候的支持org.springframework.web- 3.0.0.RELEASE-SpringWeb下的工具包 2、借鉴spring官网写法,建立一个src-resources Source Folder,再新建目录META-INF,存放springmvc-servlet.xml和jdbc-context.xml文件(事务和数据库连接池的管理);以及perties和perties。JDBC-context.xml文件: Xml代码 1. <span style
7、="font-size: x-small;"><?xml version="1.0" encoding="UTF-8"?> 2. <beans xmlns="/schema/beans" 3. xmlns:xsi="/2001/XMLSch
8、ema-instance" 4. xmlns:aop="/schema/aop" 5. xmlns:tx="/schema/tx" 6. x
9、mlns:context="/schema/context" 7. xsi:schemaLocation=" 8. /schema/beans
10、160; 9. /schema/beans/spring-beans-3.0.xsd 10. /schema/tx 1
11、1. /schema/tx/spring-tx-3.0.xsd 12. /schema/context 13.
12、160; /schema/context/spring-context-3.0.xsd 14. /schema/aop 15. &
13、#160; /schema/aop/spring-aop-3.0.xsd" default-autowire="byName"> 16. 17. <context:property-placeholder location="classpath:perties"
14、;/> 18. 19. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 20.
15、0; <property name="driverClass" value="$mysql.driverclass"></property> 21. <property name="jdbcUrl" value="$mysql.jdbcurl"></property> 22.
16、160; <property name="user" value="$mysql.user"></property> 23. <property name="password" value="$mysql.password"></prop
17、erty> 24. <property name="acquireIncrement" value="5"></property> <!- 当连接池中的连接用完时,C3P0一次性创建新连接的数目2 -> 25. <
18、property name="initialPoolSize" value="10"></property> <!- 初始化时创建的连接数,必须在minPoolSize和maxPoolSize之间 -> 26. <property name="minPoolSize" value="5&quo
19、t;></property> 27. <property name="maxPoolSize" value="20"></property> 28. <!- 最大空闲时间,超过空闲时间的连接将被丢弃 29.
20、160; 需要注意:mysql默认的连接时长为8小时(28800)【可在my.ini中添加 wait_timeout=30(单位秒)设置连接超时】,这里设置c3p0的超时必须<28800 30. -> 31. <property name=&q
21、uot;maxIdleTime" value="300"></property> 32. <property name="idleConnectionTestPeriod" value="60"></property> <!- 每60秒检查连接池中的空闲连接 ->
22、; 33. <property name="maxStatements" value="20"></property> <!- jdbc的标准参数 用以控制数据源内加载的PreparedStatement数量,但由于预缓存的Statement属 于单个Connection而不是整个连接 -> 34.
23、 </bean> 35. 36. <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 37. &
24、#160; <property name="dataSource" ref="dataSource"></property> 38. </bean> 39. 40. <!- 声明式事务管理
25、60;-> 41. <aop:config> 42. <aop:advisor pointcut="execution(* com.aokunsang.service.impl.*ServiceImpl.*(.)" advice-ref="myAdvice"/> 43.
26、60; </aop:config> 44. <tx:advice id="myAdvice" transaction-manager="txManager"> 45. <tx:attributes> 46.
27、160; <tx:method name="add*" propagation="REQUIRED"/> 47. <tx:method name="update*" propagation="REQU
28、IRED"/> 48. <tx:method name="*" read-only="true" rollback-for="com.aokunsang.util.DaoException"/> 49.
29、60;</tx:attributes> 50. </tx:advice> 51. 52. <!- 自动扫描组件,需要把controller去掉,否则影响事务管理 -> 53. <context:compone
30、nt-scan base-package="com.aokunsang"> 54. <context:exclude-filter type="regex" expression="com.aokunsang.web.*"/> 55. </context:component-scan&
31、gt; 56. 57. </beans></span> springmvc-servlet.xml文件: Xml代码 1. <span style="font-size: x-small;"><?xml version="1.0" encoding="UTF-8"?>
32、;2. <beans xmlns="/schema/beans" 3. xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p" 4.
33、; xmlns:context="/schema/context" 5. xmlns:mvc="/schema/mvc" 6. xsi:schemaLocation=" 7. &
34、#160; /schema/beans 8. /schema/beans/spring-beans-3.0.xsd 9
35、. /schema/context 10. /schema/context/spring-context-3.0.xsd
36、60;11. /schema/mvc 12. /schema/mvc/spring-mvc-3.0.xsd"> 13.
37、160; 14. <!- 启动扫描所有的controller -> 15. <context:component-scan base-package="com.aokunsang.web"/> 16. 17.
38、;<!- 主要作用于Controller,激活该模式 18. 19. 下面是一种简写形式,完全可以手动配置替代这种简写形式; 20. 它会自动注册DefaultAnnotationHandlerMappi
39、ng与AnnotationMethodHandlerAdapter 两个bean, 21. 是spring MVC为Controllers分发请求所必须的 22. -> 23. <mvc:annotation-driven/> 24.
40、 25. <!- 这里拦截器还有一种配置方法【针对路径进行配置】 推荐使用这个,方便直观-> 26. <mvc:interceptors> 27. <mvc:interceptor> 28.
41、; <mvc:mapping path="/user/MyHome"/> 29. <mvc:mapping path="/usermanager/*"/> 30.
42、; <bean class="erceptor.MyInterceptor"></bean> 31. </mvc:interceptor> 32. </mvc:interceptors>
43、 33. 34. <!- 全局配置 35. <mvc:interceptors> 36. <bean class="erceptor.MyInterc
44、eptor"></bean> 37. </mvc:interceptors> 38. -> 39. <!- 配置js,css等静态文件直接映射到对应的文件夹,不被DispatcherServlet处理 -> 40. <mvc:resou
45、rces location="/WEB-INF/resources/*" mapping="/resources"/> 41. 42. <!- jsp页面解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在/WEB-INF/views/目录下,查找XXX.jsp文件-> 43.
46、60;<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 44. <property name="prefix" value="/WEB-INF/views/"></property> 45.
47、60; <property name="suffix" value=".jsp"></property> 46. </bean> 47. 48. </beans></span> 3、修改web.xml文件如下: X
48、ml代码 1. <span style="font-size: x-small;"><context-param> 2. <param-name>contextConfigLocation</param-name> 3. <param-value>classpath:/META-INF/jdbc-context.xml</param-val
49、ue> 4. </context-param> 5. 6. <listener> 7. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 8.
50、;</listener> 9. 10. <servlet> 11. <servlet-name>spring-mvc</servlet-name> 12. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>&
51、#160; 13. <init-param> 14. <param-name>contextConfigLocation</param-name> 15. <param-value>classpath:/META-INF/springmvc-servlet.
52、xml</param-value> 16. </init-param> 17. <load-on-startup>1</load-on-startup> 18. </servlet> 19. 20. <servlet-mapping> &
53、#160;21. <servlet-name>spring-mvc</servlet-name> 22. <url-pattern>/</url-pattern> 23. </servlet-mapping> 24. 25. <filter> 26
54、. <filter-name>encodingFilter</filter-name> 27. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 28. </filter> 29. 30.
55、 <filter-mapping> 31. <filter-name>encodingFilter</filter-name> 32. <url-pattern>/*</url-pattern> 33. </filter-mapping></span> 4、从spring
56、mvc-servlet.xml中可以知道,我把jsp页面放在WEB-INF/views目录中,静态文件(图片,js,css等)放在Resources目录中,便于管理。 5、以上配置文件基本完成,下面开始代码编写:首先说几个常用的注解: Java代码 1. <span style="font-size: x-small;">Autowired 自动注入根据类型注入<span style="font-size: 12px; white-space:
57、 normal;"><code style="font-size: small !important;">Autowired</code> 可以对成员变量、方法以及构造函数进行注释,而 <code style="font-size: small !important;">Qualifier</code> 的标注对象是成员变量、方法入参、构造函数入参。</span>
58、60;2. Resource 自动注入根据名称注入,可写参数name="" 3. Controller 表示控制器 4. Service 表示业务处理层一般在serviceImpl 5. Repository 表示持久层一般在daoImpl 6. Component 当你的类不清楚是哪一层的时候使用该注解 7. ResponseBody
59、; 异步返回数据类型为json 8. RequestMapping 路径,请求类型等设置 9. InitBinder 数据绑定</span> 注解的详细介绍: 也可以参考: <a>首先写一个BaseController,可做一些数据绑定之类的全局操作(如:把日期字符串转换为Date日期)。 Java代码 1. Controller 2. public cl
60、ass BaseController 3. 4. InitBinder 5. protected void ininBinder(WebDataBinder binder) 6. SimpleDateFormat sdf = new
61、160;SimpleDateFormat("yyyy-MM-dd"); 7. binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf,true); 8. 9. <b>然后写一个拦截器,拦截器有两种实现方式,1、继承Handle
62、rInterceptorAdapter类,2、实现HandlerInterceptor接口。 Java代码 1. /* 2. * 自定义拦截器 3. * author tushen 4. * date Nov 5, 2011 5. */ 6. public class MyInterceptor extends HandlerInterceptorAdap
63、ter 7. 8. /* 9. * 最后执行,可用于释放资源 10. */ 11. Override 12. public void afterCompletion(HttpServl
64、etRequest request, 13. HttpServletResponse response, Object handler, Exception ex) 14. throws Excep
65、tion 15. / TODO Auto-generated method stub 16. super.afterCompletion(request, response, handler, ex); 17.
66、 18. 19. /* 20. * 显示视图前执行 21. */ 22. Override 23. public void postHandle(HttpServletRequest r
67、equest, 24. HttpServletResponse response, Object handler, 25. ModelAndView modelAndView) throws Exceptio
68、n 26. 27. System.out.println(request.getContentType()+"-"+request.getCharacterEncoding()+"-"+request.getContextPath(); 28.
69、60; System.out.println("MyInterceptor.postHandle()-viewName:"+modelAndView.getViewName(); 29. super.postHandle(request, response, handler, modelAndView); 30.
70、 31. 32. /* 33. * Controller之前执行 34. */ 35. Override 36. public boolean preHandle(HttpServletReque
71、st request, 37. HttpServletResponse response, Object handler) throws Exception 38. 39.
72、; String url = request.getRequestURI(); 40. 41. System.out.println("MyInterceptor.preHandle()"+url); 42.
73、; 43. return super.preHandle(request, response, handler); 44. 45. <c>在Util包中DBUtil.java中实现Spring JDBC Template的封装,操作数据库;写一个Da
74、oException继承spring的运行时异常类NestedRuntimeException,在数据库操作异常时抛出该异常,在controller层进行处理。<d>写一个抽象的BaseDao接口和BaseDaoImpl实现类,让所有模块共享使用(详见附件)。 Java代码 1. /* 2. * 3. */ 4. package com.aokunsang.dao; 5. 6. import java.io.Seria
75、lizable; 7. import java.util.List; 8. import java.util.Map; 9. 10. /* 11. * author tushen 12. * date Nov 5, 2011 13. */ 14. public interface BaseDao &
76、#160;15. 16. /* 17. * 保存或者更新实体 18. * param sql 19. * param entry 20. */ 21.
77、 <T extends Serializable> void saveOrUpdateObject(String sql,T entry); 22. 23. /* 24. * 查询实体列表 25. * p
78、aram sql 26. * param className 27. * param obj 28. * return 29. */ 30. <T extends Serializable> List<T> getObjList(String
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省秦皇岛市抚宁县驻操营学区初级中学初中信息技术《比赛》说课稿
- 2025年秋新人教版三年级上册数学整册同步教案
- 一、春天的约会教学设计-2025-2026学年小学综合实践活动四年级下册鲁科版
- 2025年四级心理学考试试卷【附答案】
- 雅安雨城区2024-2025学年下学期期末考试七年级语文试卷
- 范县初中期中考试卷子(3篇)
- 常心电图及常见心电图的识别及处理
- 茶艺课考试基础简答题及答案
- 线描画展题目大全及答案
- 葡萄肥料专业知识培训总结课件
- 图形动画毕业设计
- 工会劳动竞赛课件
- 2025-2026学年苏教版小学数学五年级上册教学计划及进度表
- 2025年建筑工程-安全员C证-安全员(C证·上海)历年参考题库典型考点含答案解析
- 光伏项目施工组织设计方案
- 2025政府采购评审专家入库题库与答案
- 仪表安全知识培训课件
- 2025年三级老年人能力评估师考试题库(附答案)
- 婴幼儿营养与喂养理论知识考核试题及答案
- 工程设计图纸技术交底
- 2025甘肃行政执法资格考试模拟卷及答案(题型)
评论
0/150
提交评论