开发环境:

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. Spring中提供的集合工具类util CollectionUtils

    转自:https://blog.csdn.net/fangwenzheng88/article/details/78457850 CollectionUtils类 /* * Copyright 200 ...

  2. Angular:内置指令

    [ngIf]表达式结果为真,显示元素:表达式结果为假,移除元素. <div *ngIf="a > b"></div> [ngSwitch]对表达式进行 ...

  3. BZOJ1023: [SHOI2008]cactus仙人掌图(仙人掌)

    Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的 ...

  4. 数学定理证明机械化的中国学派(II)

    所谓"学派"是指:存在一帮人,具有同样或接近的学术观点或学术立场,採用某种特定的"方法"(或途径),在一个学术方向上共同开展工作.而且做出了相当有迎影响的学术成 ...

  5. Google 免费公共 DNS 服务器

    Google 免费公共 DNS 服务器 http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html DNS 8. ...

  6. Node组装启动过程

    elasticsearch的启动过程是根据配置和环境组装需要的模块并启动的过程.这一过程就是通过guice注入各个功能模块并启动这些模块,从而得到一个功能完整的node.正如之前所说elasticse ...

  7. 7.zookeeper集群搭建(windows环境下)

    转自:https://www.cnblogs.com/xuxiuxiu/p/5868481.html 本次zk测试部署版本为3.4.6版本,下载地址http://mirrors.cnnic.cn/ap ...

  8. vue使用jsonp

    axios不支持jsonp,所以需使用其他插件:vue-jsonp npm i vue-jsonp -S 然后在 src/main.js : import Vue from 'vue' import ...

  9. Qt5 UI信号、槽自动连接的控件重名大坑(UI生成的槽函数存在一个隐患,即控件重名。对很复杂的控件,不要在 designer 里做提升,而是等到程序启动后,再动态创建,可以避免很多问题)

    对Qt5稍有熟悉的童鞋都知道信号.槽的自动连接机制.该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联.该机制的详细文章见 http: ...

  10. JavaScript中双叹号“!!”作用

    1.JavaScript的逻辑非(!)操作符的作用 (逻辑非) 如果操作数能够转换为true则返回false:否则返回true. 2.!!的作用 !!一般用来将后面的表达式强制转换为布尔类型的数据(b ...