简述:

结合Spring和Hibernate进行开发

使用@Autowired实现依赖注入, 实现一个学生注册的功能,做一个技术原型

从DAO(Repository) -> Service -> Controller

目录结构:

使用Maven做本地包管理,

pom.xml

[java] view plaincopy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>WebProject</groupId>
  4. <artifactId>StudentManagementWeb</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <packaging>war</packaging>
  7. <name>StudentManagementWeb</name>
  8. <url>http://maven.apache.org</url>
  9. <properties>
  10. <org.springframework.version>3.0.2.RELEASE</org.springframework.version>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>junit</groupId>
  16. <artifactId>junit</artifactId>
  17. <version>3.8.1</version>
  18. <scope>test</scope>
  19. </dependency>
  20. <!-- Project Requirements -->
  21. <dependency>
  22. <groupId>javax.servlet</groupId>
  23. <artifactId>servlet-api</artifactId>
  24. <version>2.5</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.slf4j</groupId>
  28. <artifactId>slf4j-log4j12</artifactId>
  29. <version>1.4.2</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework</groupId>
  33. <artifactId>spring-beans</artifactId>
  34. <version>${org.springframework.version}</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework</groupId>
  38. <artifactId>spring-jdbc</artifactId>
  39. <version>${org.springframework.version}</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework</groupId>
  43. <artifactId>spring-web</artifactId>
  44. <version>${org.springframework.version}</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework</groupId>
  48. <artifactId>spring-webmvc</artifactId>
  49. <version>${org.springframework.version}</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-orm</artifactId>
  54. <version>${org.springframework.version}</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.hibernate</groupId>
  58. <artifactId>hibernate-entitymanager</artifactId>
  59. <version>3.4.0.GA</version>
  60. </dependency>
  61. <dependency>
  62. <groupId>org.hibernate</groupId>
  63. <artifactId>hibernate-envers</artifactId>
  64. <version>3.5.6-Final</version>
  65. </dependency>
  66. <dependency>
  67. <groupId>taglibs</groupId>
  68. <artifactId>standard</artifactId>
  69. <version>1.1.2</version>
  70. </dependency>
  71. <dependency>
  72. <groupId>javax.servlet</groupId>
  73. <artifactId>jstl</artifactId>
  74. <version>1.1.2</version>
  75. </dependency>
  76. <dependency>
  77. <groupId>mysql</groupId>
  78. <artifactId>mysql-connector-java</artifactId>
  79. <version>5.1.10</version>
  80. </dependency>
  81. <dependency>
  82. <groupId>commons-dbcp</groupId>
  83. <artifactId>commons-dbcp</artifactId>
  84. <version>20030825.184428</version>
  85. </dependency>
  86. <dependency>
  87. <groupId>commons-pool</groupId>
  88. <artifactId>commons-pool</artifactId>
  89. <version>20030825.183949</version>
  90. </dependency>
  91. <dependency>
  92. <groupId>cglib</groupId>
  93. <artifactId>cglib</artifactId>
  94. <version>2.2.2</version>
  95. </dependency>
  96. <dependency>
  97. <groupId>org.aspectj</groupId>
  98. <artifactId>aspectjweaver</artifactId>
  99. <version>1.6.12</version>
  100. </dependency>
  101. </dependencies>
  102. </project>

各文件如下:

Web.xml

[java] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>StudentManagementWeb</display-name>
  4. <welcome-file-list>
  5. <welcome-file>StudentRegistration.jsp</welcome-file>
  6. </welcome-file-list>
  7. <resource-ref>
  8. <description>DB Connection</description>
  9. <res-ref-name>jdbc/smw</res-ref-name>
  10. <res-type>javax.sql.DataSource</res-type>
  11. <res-auth>Container</res-auth>
  12. </resource-ref>
  13. <context-param>
  14. <param-name>log4jConfigLocation</param-name>
  15. <param-value>/WEB-INF/log4j.properties</param-value>
  16. </context-param>
  17. <!-- Define LOG4J Listener -->
  18. <listener>
  19. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  20. </listener>
  21. <servlet>
  22. <!-- define the name of Servlet -->
  23. <servlet-name>dispatcherServlet</servlet-name>
  24. <!-- Servlet implementation class -->
  25. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  26. <!-- initialize the context -->
  27. <init-param>
  28. <param-name>contextConfigLocation</param-name>
  29. <!-- load configuration -->
  30. <param-value>/WEB-INF/applicationContext.xml</param-value>
  31. </init-param>
  32. <!-- set loading priority -->
  33. <load-on-startup>1</load-on-startup>
  34. </servlet>
  35. <servlet-mapping>
  36. <servlet-name>dispatcherServlet</servlet-name>
  37. <url-pattern>*.do</url-pattern>
  38. </servlet-mapping>
  39. </web-app>

applicationContext.xml

[html] view plaincopy
  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"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
  11. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  12. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
  13. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  14. <property name="configLocation">
  15. <value>classpath:hibernate.cfg.xml</value>
  16. </property>
  17. </bean>
  18. <!-- make spring look up annotation -->
  19. <context:annotation-config/>
  20. <context:component-scan base-package="smw.*"/>
  21. <!-- configure the transaction management -->
  22. <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  23. <property name="sessionFactory">
  24. <ref bean="sessionFactory" />
  25. </property>
  26. </bean>
  27. <tx:annotation-driven transaction-manager="txManager" />
  28. </beans>

hibernate.cfg.xml

[java] view plaincopy
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <property name="connection.datasource">java:comp/env/jdbc/smw</property>
  8. <property name="dialect">
  9. org.hibernate.dialect.MySQLDialect
  10. </property>
  11. <property name="show_sql">true</property><!-- show sql statement -->
  12. <!-- mapping files -->
  13. <mapping resource="smw/model/Student.hbm.xml"/>
  14. </session-factory>
  15. </hibernate-configuration>

由于使用了Tomcat的数据源,所以还需要在Tomcat的Context.xml中添加数据库连接配置

context.xml(Tomcat server中文件,eclispe中在workspace中的server project中)

context.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed to the Apache Software Foundation (ASF) under one or more
  4. contributor license agreements.  See the NOTICE file distributed with
  5. this work for additional information regarding copyright ownership.
  6. The ASF licenses this file to You under the Apache License, Version 2.0
  7. (the "License"); you may not use this file except in compliance with
  8. the License.  You may obtain a copy of the License at
  9. http://www.apache.org/licenses/LICENSE-2.0
  10. Unless required by applicable law or agreed to in writing, software
  11. distributed under the License is distributed on an "AS IS" BASIS,
  12. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. See the License for the specific language governing permissions and
  14. limitations under the License.
  15. --><!-- The contents of this file will be loaded for each web application --><Context>
  16. <!-- Default set of monitored resources -->
  17. <WatchedResource>WEB-INF/web.xml</WatchedResource>
  18. <!-- Uncomment this to disable session persistence across Tomcat restarts -->
  19. <!--
  20. <Manager pathname="" />
  21. -->
  22. <!-- Uncomment this to enable Comet connection tacking (provides events
  23. on session expiration as well as webapp lifecycle) -->
  24. <!--
  25. <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
  26. -->
  27. <Resource name="jdbc/smw" auth="Container" type="javax.sql.DataSource"
  28. maxActive="100" maxIdle="30" maxWait="10000"
  29. username="root" password="sql" driverClassName="com.mysql.jdbc.Driver"
  30. url="jdbc:mysql://localhost:3306/smw"/>
  31. </Context>

Student.java

[java] view plaincopy
  1. package smw.model;
  2. public class Student {
  3. private int sid;
  4. private String name;
  5. private String password;
  6. private String college;
  7. public int getSid() {
  8. return sid;
  9. }
  10. public void setSid(int sid) {
  11. this.sid = sid;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public String getPassword() {
  20. return password;
  21. }
  22. public void setPassword(String password) {
  23. this.password = password;
  24. }
  25. public String getCollege() {
  26. return college;
  27. }
  28. public void setCollege(String college) {
  29. this.college = college;
  30. }
  31. }

Student.hbm.xml (学生表的映射)

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping>
  5. <class name="smw.model.Student" table="tb_student" catalog="smw">
  6. <id name="sid" column="sid" type="int">
  7. <generator class="increment"/>
  8. </id>
  9. <property name="name" type="java.lang.String">
  10. <column name="name"  not-null="true" length="20">
  11. <comment>student's name</comment>
  12. </column>
  13. </property>
  14. <property name="password" type="java.lang.String">
  15. <column name="password"  not-null="false" length="10">
  16. <comment>student's password</comment>
  17. </column>
  18. </property>
  19. <property name="college" type="java.lang.String">
  20. <column name="college"  not-null="false" length="20">
  21. <comment>student's college</comment>
  22. </column>
  23. </property>
  24. </class>
  25. </hibernate-mapping>

IStudentDAO.java 

[java] view plaincopy
  1. package smw.dao;
  2. import smw.model.Student;
  3. public interface IStudentDAO {
  4. /**
  5. * Save Student into database
  6. * @param student
  7. */
  8. public void saveStudent(Student student);
  9. }

StudentDAOImpl.java

[java] view plaincopy
  1. package smw.dao.impl;
  2. import javax.annotation.Resource;
  3. import org.hibernate.SessionFactory;
  4. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
  5. import org.springframework.stereotype.Repository;
  6. import org.springframework.transaction.annotation.Transactional;
  7. import smw.dao.IStudentDAO;
  8. import smw.model.Student;
  9. @SuppressWarnings("restriction")
  10. @Repository("studentDAO")
  11. @Transactional
  12. public class StudentDAOImpl extends HibernateDaoSupport implements IStudentDAO{
  13. @Resource(name="sessionFactory")
  14. public void setSuperSessionFactory(SessionFactory sessionFactory){
  15. super.setSessionFactory(sessionFactory);
  16. }
  17. public void saveStudent(Student student){
  18. getHibernateTemplate().save(student);
  19. }
  20. }

IStudentManagementService.java

[java] view plaincopy
  1. package smw.service;
  2. import smw.model.Student;
  3. public interface IStudentManagementService {
  4. public void addStudent(Student student);
  5. }

StudentManagementServiceImpl.java

[java] view plaincopy
  1. package smw.service.impl;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;
  4. import org.springframework.transaction.annotation.Propagation;
  5. import org.springframework.transaction.annotation.Transactional;
  6. import smw.dao.IStudentDAO;
  7. import smw.model.Student;
  8. import smw.service.IStudentManagementService;
  9. @Service
  10. public class StudentManagementServiceImpl implements IStudentManagementService {
  11. @Autowired
  12. private IStudentDAO studentDAO;
  13. @Transactional(propagation=Propagation.REQUIRED)
  14. public void addStudent(Student student) {
  15. studentDAO.saveStudent(student);
  16. }
  17. }

StudentAction.java

[java] view plaincopy
  1. package smw.action;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.servlet.ModelAndView;
  8. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
  9. import smw.model.Student;
  10. import smw.service.IStudentManagementService;
  11. @Controller
  12. @RequestMapping("StudentAction.do")
  13. public class StudentAction extends MultiActionController{
  14. @Autowired
  15. private IStudentManagementService studentManagementService;
  16. @RequestMapping(params = "method=HandleStudentRegistrationFormSubmit")
  17. protected ModelAndView HandleStudentRegistrationFormSubmit(HttpServletRequest request
  18. , HttpServletResponse response) {
  19. Student student = new Student();
  20. String name = request.getParameter("name");
  21. String password = request.getParameter("password");
  22. String college = request.getParameter("college");
  23. student.setName(name);
  24. student.setPassword(password);
  25. student.setCollege(college);
  26. studentManagementService.addStudent(student);
  27. return new ModelAndView("StudentRegistered.jsp");
  28. }
  29. }

StudentRegistration.jsp

[java] view plaincopy
  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>User Registration</title>
  8. </head>
  9. <body>
  10. <h1 align="center">Student Registration Page</h1>
  11. <form method="post" action="StudentAction.do?method=HandleStudentRegistrationFormSubmit" class="form">
  12. <table width="280" border="0" align="center">
  13. <tr>
  14. <td width="87" align="center" valign="middle" >
  15. <div align="right">name:</div>
  16. </td>
  17. <td width="183">
  18. <label>
  19. <input name="name" type="text" id="name" maxlength="10" />
  20. </label>
  21. <td>
  22. </tr>
  23. <tr>
  24. <td height="37" align="center" valign="middle">
  25. <div align="right">password: </div>
  26. </td>
  27. <td>
  28. <label>
  29. <input name="password" type="password" id="password" maxlength="20" />
  30. </label>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td height="37" align="center" valign="middle">
  35. <div align="right">college: </div>
  36. </td>
  37. <td>
  38. <label>
  39. <input name="college" type="text" id="college" maxlength="20" />
  40. </label>
  41. </td>
  42. </tr>
  43. <tr>
  44. <td align="center" valign="middle">
  45. <input type="submit" name="Submit" value="submit" />
  46. </td>
  47. <td>
  48. <input name="reset" type="reset" id="reset" value="reset" />
  49. </td>
  50. </tr>
  51. </table>
  52. </form>
  53. </body>
  54. </html>

StudentRegistered.jsp

[html] view plaincopy
  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  7. <title>User Registered</title>
  8. </head>
  9. <body>
  10. <center>
  11. <span class="STYLE2">Student Registered</span>
  12. </center>
  13. <br>
  14. <table align="center" border="1">
  15. <tr>
  16. <td height="100"><span class="STYLE2">user name:</span></td>
  17. <td height="100"><span class="STYLE2">${param.name }</span></td>
  18. </tr>
  19. <tr>
  20. <td height="100"><span class="STYLE2">password:</span></td>
  21. <td height="100"><span class="STYLE2">${param.password }</span></td>
  22. </tr>
  23. <tr>
  24. <td height="100"><span class="STYLE2">college:</span></td>
  25. <td height="100"><span class="STYLE2">${param.college }</span></td>
  26. </tr>
  27. <tr>
  28. <td height="100" colspan="2" align="center"><a href="StudentRegistration.jsp" class="STYLE2">return to registration</a></td>
  29. </tr>
  30. </table>
  31. </body>
  32. </html>

结果:

跳转后,

数据库中新增记录,

http://blog.csdn.net/anialy/article/details/8251506

转载于:https://www.cnblogs.com/softidea/p/4486114.html

使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)相关推荐

  1. 实战SSM_O2O商铺_41【前端展示】店铺列表页面Dao+Service+Controller层的实现

    文章目录 概述 Dao层 接口 映射文件 单元测试 Service层 接口方法 单元测试 Controller层 增加 ShopListController 单元测试 Github地址 概述 在完成了 ...

  2. 实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现

    文章目录 概述 HeadLine Dao层 接口 映射文件 单元测试 HeadLine Service层 接口 实现类 单元测试 ShopCategory Dao层完善 映射文件完善 单元测试 Con ...

  3. 实战SSM_O2O商铺_36【商品】商品列表之Dao+Service+Controller层的实现

    文章目录 概述 Dao层 ProductDao.java ProductDao.xml 单元测试 Service层 ProductService.java ProductServiceImpl.jav ...

  4. Dao,Service,Controller层作用

    1.Dao层:全称Data Access Object.Dao层比较底层,负责与数据库打交道具体到对某个表.某个实体的增删改查 2.Service层:又叫服务层或业务层,封装Dao层的操作,使一个方法 ...

  5. 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)

    当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...

  6. Spring注入方式及用到的注解 -----@Component,@Service,@Controller,@Repository

    注入方式: 把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注 入时不要new 这个注入的类,因为spring会自动注入,如 ...

  7. Spring整合Mybatis之DAO层、Service层开发

    3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合:spr ...

  8. springboot中service中注入dao失败测试类中注入成功_聊一聊 Java 服务端中的乱象

    查尔斯·狄更斯在<双城记>中写道:"这是一个最好的时代,也是一个最坏的时代." 移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动:随着行业竞争加剧,互联网红利 ...

  9. Spring使用JPA进行Dao层的数据访问以及事务管理

    在上篇文章中,我们完成了SSH+JPA+Mysql的整合: https://blog.csdn.net/a745233700/article/details/81413306 在这篇文章中,我们主要介 ...

最新文章

  1. unicode编码转ascii编码
  2. Openstack Neutron : 安全
  3. 2019全球编程语言高薪排行榜登场;余承东正式宣布华为IFA2019 或发布麒麟990;OPPO、vivo和小米成立互传联盟…...
  4. STM32工作笔记0014---认识emWin图形设计框架
  5. JavaScript get set方法 ES5 ES6写法
  6. 阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
  7. 利用设计模式优化项目实际的申报业务
  8. C语言-顺序栈的基本操作
  9. php strlen 汉子,php使用strlen()判断中文汉字字符串长度
  10. Linux系统安装迷你世界,迷你世界国际服下载安装
  11. 常见计算机蓝屏代码,码住!常见电脑蓝屏代码和解决方法
  12. linux下,代码阅读工具,understand
  13. html全屏ipad顶部状态栏,iPad横屏和竖屏界面尺寸设计规范【最全】
  14. Spring——》谈谈你对Spring框架的理解
  15. 地理信息系统:利用ArcGIS制作校园地图
  16. sublime text3 去除python代码的白色框框方法
  17. 宝茱姐被丑不垃圾香菇蘑菇头拖下水
  18. 同步传输与异步传输的区别
  19. USB示波器数据传输,单入多出可分组队列
  20. 门户通专访朱则荣老师:中国网站培训第一人

热门文章

  1. 学python去哪做项目_有哪些适合 Python 刚入门者去做的项目?
  2. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
  3. authy不同账户间不同步_「第七期」shopify产品还能同步到微信小程序销售?看这里...
  4. 【spring】spring JDBC开发 、 将创建表生成sql语句的方法
  5. npm install 报错 npm ERR! code Z_BUF_ERROR 问题解决
  6. 关于SQL的基础知识点
  7. swift x输入流_SwiftUI 探索 - 状态和数据流
  8. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...
  9. Rushcrm:企业部署CRM系统做什么
  10. 20145240《网络对抗》MSF基础应用