STS 3.6.4 SpringMVC 4.1.6 Hibernate 4.3.8 MySQL

2024-03-26 14:18

本文主要是介绍STS 3.6.4 SpringMVC 4.1.6 Hibernate 4.3.8 MySQL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发环境:

Java 1.8

Spring Tool Suite 3.6.4

Spring faramework 4.1.6

Hibernate 4.3.8

Maven 2.9

数据库是MySQL 5.6

服务器是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');

第二步:创建项目


设置项目名称,我设置的是: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>

这个地方需要注意更换自己的MySQL用户名、密码和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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848781

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J