开发环境:

Java 1.8

Spring Tool Suite 3.6.4

Spring faramework 4.1.6

Hibernate 4.3.8

Maven 2.9

数据库是MySQL 5.6

server是Pivotal tc Server Developer Editionv 3.1





第一步:创建数据库表

create
database usersdb;
 
CREATE
TABLE `users` (
  `user_id`
int(11) NOT NULL AUTO_INCREMENT,
  `username`
varchar(45) NOT NULL,
  `password`
varchar(45) NOT NULL,
  `email`
varchar(45) NOT NULL,
  PRIMARY
KEY (`user_id`)
)
ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1

填写数据:

insert into users values(1,'John James','Jamesjohn','Johnjames@gmail.com'),(2,'zhang san','Sanzhang','Zhangsan@gmail.com'),(3,'Li Si','Sili','Lisi@gmail.com'),(4,'Wang Wu','Wuwang','Wangwu@gmail.com'),(5,'Xu liu','Liuxu','Xueliu@gmail.com');

第二步:创建项目

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGV4dGZpcmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

设置项目名称。我设置的是:MVCHBN.

设置根包名称。

这个东西也不要马虎。设错了。也是要返工的。

这是项目最后完毕时的文件夹结构

第三步:设置Mave的依赖关系:

<properties>
    <java-version>1.8</java-version>
    <org.springframework-version>4.1.6.RELEASE</org.springframework-version>
</properties>

这是Java的版本号设置和框架版本号设置。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${org.springframework-version}</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

这是spring框架的依赖关系。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.8.Final</version>
</dependency>

这是Hibernate的依赖关系.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
    <scope>provided</scope>
</dependency>

这是jsp的依赖关系。

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

这是jstl的依赖关系。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.0</version>
</dependency>

这是DBCP依赖关系。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.34</version>
</dependency>

这是MySQL的连接器。

第四步:创建模块类并配置Hibernate.

先创建一个包com.bzb.mvchbn.models,然后在这个包以下创建一个User类。


package com.bzb.mvchbn.models;





public class User {

    private int id;

    private String username;

    private String password;

    private String email;

 

    public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

 

}

接下来为模块类创建Hibernate的XML映射(就是通过Hibernate把类关联到数据库表)。文件名称为user.cfg.xml,放在com.bzb.mvchbn.models包里面:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.bzb.mvchbn.models">

    <class name="User" table="USERS">

        <id name="id" column="USER_ID">

            <generator class="native"/>

        </id>

        <property name="username" column="USERNAME" />

        <property name="password" column="PASSWORD" />

        <property name="email" column="EMAIL" />

    </class> 

</hibernate-mapping>

创建一个hibernate.cfg.xml文件。放在src/main/java文件夹下。

<?

xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>       

  <session-factory>

    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    <property name="show_sql">true</property> 

    <mapping resource="com/bzb/mvchbn/models/User.hbm.xml"/>

  </session-factory>

</hibernate-configuration>

第五步:创建数据訪问对象模板:

先创建一个名叫com.bzb.mvchbn.dao的包,然后在这个包里创建一个名叫UserDAO的接口。

package com.bzb.mvchbn.dao;





import java.util.List;





import com.bzb.mvchbn.models.User;

 

public interface UserDAO {

    public List<User> list();

}

然后再创建一个名叫UserDAOImple的类。

package com.bzb.mvchbn.dao;

import java.util.List;

import javax.transaction.Transactional;

import org.hibernate.Criteria;

import org.hibernate.SessionFactory;

import com.bzb.mvchbn.models.User;

 

public class UserDAOImpl implements UserDAO {

    private SessionFactory sessionFactory;

 

    public UserDAOImpl(SessionFactory sessionFactory) {

        this.sessionFactory = sessionFactory;

    } 

    @Override

    @Transactional

    public List<User> list() {

        @SuppressWarnings("unchecked")

        List<User> listUser = (List<User>) sessionFactory.getCurrentSession()

                .createCriteria(User.class)

                .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();

 

        return listUser;

    } 

}

在这里有一个构造器,通过它spring把Hibernate的SessionFactory对象注入进当前类里来了。

而list()方法就能够简单地通过SessionFactory获取当前的session,从而查询到数据库表中全部的用户。

注意这里的@Transactional凝视。它的功能是由spring提供的:当某个方法带有@Transactional凝视时,Spring将会把交易支持代码注入到该方法中,从而令该方法具有处置交易的能力。

第六步:配置Spring应用程序的上下文。

Spring应用程序上下文配置文件名是servlet-context.xml。它位于src/main/webapp/WEB-INF/spring/appServlet文件夹。这个文件是受web.xml文件控制的。STS在创建SPring
MVC项目的时候。已经包括了下列内容:

<annotation-driven />

<resources mapping="/resources/**"
location="/resources/" />

<context:component-scan base-package="com.bzb.mvchbn"
/>

<beans:bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="/WEB-INF/views/" />

<beans:property name="suffix" value=".jsp" />

</beans:bean>

接下来通过Apache Commons DBCP配置支持连接池功能的数据源。

<beans:bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"

destroy-method="close">

<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />

<beans:property name="url"

value="jdbc:mysql://localhost:3306/usersdb" />

<beans:property name="username" value="root" />

<beans:property name="password" value="admin" />

</beans:bean>

这个地方须要注意更换自己的MySQLusername、password和url。

接下来配置会话工厂。

<beans:bean id="sessionFactory"

class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

<beans:property name="dataSource" ref="dataSource" />

<beans:property name="configLocation" value="classpath:hibernate.cfg.xml" />

</beans:bean>

注意LocalSessionFactoryBean须要使用前面配置的数据源DataSource设置,而configLocation属性定义的是Hibernate配置文件。

接下来配置交易管理Bean。

<beans:bean id="transactionManager"

class="org.springframework.orm.hibernate4.HibernateTransactionManager">

<beans:property name="sessionFactory" ref="sessionFactory" />

</beans:bean>


<tx:annotation-driven transaction-manager="transactionManager" />

这时候须要改动sevlet-context.xml文件的头部,否则tx凝视语句会报错。

在大约第六行位置添加一行:

xmlns:tx="http://www.springframework.org/schema/tx"

然后在大约第十三行添加两行:

http://www.springframework.org/schema/tx 

          http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

另外还须要把第十行和第十二行改动一下,添加版本。不能低于2.5,我这里设置的是3.1:

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/context/spring-context-3.1.xsd

接下来配置数据訪问对象的实现:

<beans:bean id="userDao" class="com.bzb.mvchbn.dao.UserDAOImpl">

    <beans:constructor-arg>

        <beans:ref bean="sessionFactory" />

    </beans:constructor-arg>

</beans:bean>

第七步:控制器类

创建一个com.bzb.mvchbn.controllers包。把默认生成的HomeController类移到这个包里(纯属习惯)。然后把内容改动成例如以下模样:

package com.bzb.mvchbn.controllers;





import java.util.List;





import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;





import com.bzb.mvchbn.dao.UserDAO;

import com.bzb.mvchbn.models.User;





/**

 * Handles requests for the application home page.

 */

@Controller

public class HomeController {

     

    @Autowired

    private UserDAO userDao;

     

    @RequestMapping(value="/home")

    public ModelAndView home() {

        List<User> listUsers = userDao.list();

        ModelAndView model = new ModelAndView("home");

        model.addObject("userList", listUsers);

        return model;

    }     

}

在这里UserDAO接口的实现被Spring自己主动地注入到控制器类中了,注意这里使用了@Autowired凝视。

就是前面在servlet0contect.xml中配置的UserDAOImpl,是它让当前控制器HomeCotroller的home方法能够使用它来列表显示数据库中的全部用户。

第八步:创建视图页面

视图页面的名称须要与控制当中的定义相吻合,即home。加上后缀名即home.jsp,位于 src/main/webapp/WEB-INF/views文件夹里,其内容例如以下:

<%@page contentType="text/html"
pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

   "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>Home</title>

    </head>

    <body>

        <div align="center">

            <h1>Contact List</h1>

            <table border="1">

                <!-- <th>No</th>

                <th>Username</th>

                <th>Email</th> -->

                 

                <c:forEach var="user" items="${userList}" varStatus="status">

                <tr>

                    <td>${status.index + 1}</td>

                    <td>${user.username}</td>

                    <td>${user.email}</td>

                             

                </tr>

                </c:forEach>             

            </table>

        </div>

    </body>

</html>

第九步:測试

右击项目名称MVCHBN。选择Run as -> Run on Server。结果例如以下:

多余文件说明:假设细心观察项目文件插图,会发现一些多余文件和一个目录,它们是template目录,contact.jsp文件、tiles.xml文件、index-first.jsp文件、index-contact.jsp文件和indexljsp文件。它们和本项目无关,不用管它。假设还有疑问能够回复。

STS 3.6.4 SpringMVC 4.1.6 Hibernate 4.3.8 MySQL的更多相关文章

  1. SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分

    SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分 辞职待业青年就是有很多时间来写博客,以前在传统行业技术强度相对不大,不处理大数据,也不弄高并发 ...

  2. springMVC,spring和Hibernate整合(重要)

    springMVC,spring和Hibernate整合 https://my.oschina.net/hugohxb/blog/184715 第一步:搭建一个springmvc工程,需要的jar有: ...

  3. SpringMVC+Apache Shiro+JPA(hibernate)

    http://my.oschina.net/moziqi/blog/305412 http://my.oschina.net/miger/blog/283526 spring4.1.0+spring ...

  4. SpringMVC 2.5.6 +Hibernate 3.2.0

    spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时 ...

  5. springmvc流程 struts2 spring Hibernate 优缺点 使用场景介绍

    为什么使用HandlerAdapter? SpringMVC使用一个Servlet(DispacherServlet)代理所有的请求 , SpringMVC中的处理器是方法级别的处理器,而非类级别的处 ...

  6. springmvc配置mybatis与hibernate的不同点

    相信每个人对springmvc+hibernate或者springmvc+mybatis都不会陌生,拿来一个项目也都会开发.但是自己配置的情况下却很少,即使自己配置过,长时间不写也会忘,在这里记录一下 ...

  7. Spring,SpringMVC,MyBatis,Hibernate,Servlet的生命周期,jsp有哪些内置对象,Tomcat,Cookie和Session的作用以及区别,oracle,MYSQL等面试题总结

    1. 什么是Spring,谈谈你对Spring的理解 Spring是我们JAVA开发人员在搭建后台时选用的一个轻量级的开源框架,Spring框架目前也是功能丰富,十分优秀企业级采用最多的一个框架. S ...

  8. spring整合springMVC、mybatis、hibernate、mongodb框架

    开发环境 eclipse Mars 4.5 JDK 1.7 框架 spring 4.0.5 mybatis 3.2.7 hibernate 4.3.6 mongodb 1.7 数据库 MySQL 5. ...

  9. maven springmvc spring data jpa hibernate sqlserver demo

    搭建费了半天费,各种报错,缺少各种jar包,不兼容等,给那些没弄过的一个参考. 点击我下载

随机推荐

  1. 有点坑爹的GDALComputeRasterMinMax函数

    作者:朱金灿 来源:http://blog.csdn.net/clever101 GDALComputeRasterMinMax函数是gdal库为了求取指定波段的极值而提供的接口.最近看了这个接口的源 ...

  2. C# winform利用反射和自定义特性加载功能模块(插件式开发)

    由于在实际的工作中, 碰见这样的一个问题: 一个软件, 销售给A客户 他需要所有功能, 但是销售给B客户, 他只需要其中的一部分, 1.如果我们在实际的开发过程中, 没有把一些功能模块区分开来的话, ...

  3. Android中的帧动画与补间动画的使用

    前言 在日常开发中,我们有时候须要一些好看的动画效果,这时能够充分利用Android提供的这几种动画来实现. Android提供了3种类型的动画: 补间动画:补间动画能够应用于View,让你能够定义一 ...

  4. 使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?(非常稳定、捕获所有异常、非常适合从头开始,但大公司已经有现成的C++框架、所以不会使用)

    使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?和C Socket服务器比起来有什么优劣?可行性怎么样? 从2013年起,经朋友推荐开始用Golang编写游戏登陆服务器, 配合C++做第三方 ...

  5. 3lession-python编程规范

    今天继续学习python,内容主要就是python编程过程中的一些规范,包括注释.换行等 1.注释 所有的注释都是以#开头,注释可以单独占有一行,也可以放到语句的末尾.因为python没有多行注释,所 ...

  6. python报错Nonetype object is not iterable

    https://www.cnblogs.com/zhaijiahui/p/8391701.html 参考链接:http://blog.csdn.net/dataspark/article/detail ...

  7. treap-名次树-树堆

    #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; struc ...

  8. 使用 STL 辅助解决算法问题

    不要重复制造轮子,而且你造的轮子未必比得上别人的: <numeric>⇒ accumulate,累积容器中区间的和,可以指定初值: 为什么 STL 中的容器和算法一定关于区间的操作一定是左 ...

  9. angular 创建服务

    一:新建服务模块和服务文件 ng g module services --spec=false ng g service services/quote --spec=false 二:在quote.se ...

  10. Loadrunner--负载生成器

    对场景进行设计后,接着需要对负载生成器进行管理和设置.Load Generator是运行脚本的负载引擎,在默认情况下使用本地的负载生成器来运行脚本,但是模拟用户行为也需要消耗一定的系统资源,所以在一台 ...