开发环境:

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. SQL数值转字符串保留指定小数位

    IF EXISTS ( SELECT * FROM sysobjects WHERE xtype = 'fn' AND name = 'fn_NumberFormat' ) BEGIN DROP FU ...

  2. AJAX - 封装的传参改为传入对象 XML JSON 数据格式

    Ajax封装函数,上次是直接传参,这次在原来的基础上改进,模仿jQuery 直接传入对象,把之前的参数都变为这个对象的属性. 这样可以随意调换传入数据的次序. 其他优点? 需要再复习一下. Ajax处 ...

  3. 斜率优化dp练习

    1.HDU3507 裸题,有助于理解斜率优化的精髓. dp[i]=min(dp[j]+m+(sum[i]-sum[j])2) 很显然不是单调队列. 根据斜率优化的的定义,就是先设两个决策j,k 什么时 ...

  4. mySQL函数根据经纬度计算两点距离 复制代码

    http://www.cnblogs.com/lujiulong/p/6185041.html https://my.oschina.net/u/2273085/blog/505172?p={{pag ...

  5. HTML5梦幻星空,可用作网页背景

    <html> <head> <title>星空</title> <META http-equiv="X-UA-Compatible&qu ...

  6. adapter-自定义adapter的典型写法

    文章参考 http://www.cnblogs.com/mengdd/p/3254323.html import android.content.Context; import android.vie ...

  7. 7. 基于Express实现接口

    安装Mongoose 创建model //server/models/goods.js var mongoose = require('mongoose');//优先到node_modeles里加载 ...

  8. .net core 修改网站启动端口

    原文:.net core 修改网站启动端口 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yenange/article/details/81675 ...

  9. Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备

    第1步.yum安装mysql [root@stonex ~]#  yum -y install mysql-server 安装结果: Installed:     mysql-server.x86_6 ...

  10. 洛谷 P2430 严酷的训练

    P2430 严酷的训练 题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会 ...