开发环境:

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. http 协议上传文件multipart form-data boundary 说明--转载

    原文地址:http://xixinfei.iteye.com/blog/2002017 含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协 ...

  2. BZOJ2434: [Noi2011]阿狸的打字机(fail树+dfs序)

    Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的 ...

  3. 《开源公开课分享》:Java开源框架案例分享

        缺乏高端技术人才?缺乏开发标准?    代码复用性低?技术风险难于把控?     招聘成本高?培训成本高?    假设想法不够雄伟,那么就会局限于细节:假设一開始就铺很大的摊子,将会失去控制: ...

  4. [Javascript AST] 1. Continue: Write a simple Babel plugin

    We want to write a Babel Plugin, which move 'const versionRegex = /(/d+)\.(/d+)\.(/d+)/gi' out of fu ...

  5. hdu4605Magic Ball Game 树状数组

    //给一棵树.树的每个节点的子节点个数是0或2 //对于每个节点都有一个权值w[i] //一个权值为x的球在每个节点的情况有 //x=w[i] 这个球在该点不向下掉 //x<w[i] 这个球往左 ...

  6. 一起talk C栗子吧(第九回:C语言实例--最大公约数)

    各位看官们,大家好.从今天開始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们.上一回中咱们说的是素数的样例.这一回咱们说的样例是: ...

  7. HTML实体与网页编码(汉字转化为了html实体) .

    http://blog.csdn.net/f438952359/article/details/7481267 HTML实体与网页编码(汉字转化为了html实体) . htmlencodingfunc ...

  8. 27. Spring Boot 部署与服务配置

    转自“https://www.cnblogs.com/zhchoutai/p/7127598.html” Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函 ...

  9. C#程序集引入无效的解决方法

    在项目类库中已经引用了相关了类库,生成解决方案也没问题,但是到了后置代码,通过using引用其他类库的时候,再生成解决方案或者生成单个类库,就会报“未能找到类型或命名空间“xxx"(是否缺少 ...

  10. NYOJ448_寻找最大数【贪心】

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比方当n=920813467185 ...