一. SpringMVC

阅读我的上一篇文章《使用MyEclipse2015构建SpringMVC项目》,知道基本的构建方法,先构建一个纯springmvc项目,再对web.xml按照本文中做法简单改动。

二. Hibernate

之后用类似方法添加hibernate框架,并生成hibernate.cfg.xml和HibernateSessionFactory.java这个工厂文件。

进入MyEclipse Database Explorer,首先添加自己的服务器,之后,连接服务器,在所需的表(可多选)上右键Hibernate Reverse Engineering,根据所需功能生成实体类,不要忘记选择好主键策略。

三. Spring

这里给出只用springmvc-servlet.xml而不使用application.xml的方法

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<display-name>Spring4</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

src目录下的springmvc-servlet

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"> <!-- scan the package and the sub package --此处选择你需要注释的文件所在的公共包>
<context:component-scan base-package="com.cielo.*"/> <!-- don't handle the static resource -->
<mvc:default-servlet-handler /> <!-- if you use annotation you must configure following setting -->
<mvc:annotation-driven /> <!-- configure the InternalResourceViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>

这样,你就可以用近乎于无配置的方法去处理耦合

目录结构

四.Spring Annotation标签

spring目前支持用几乎无配置文件方法进行项目构建,这里简单列一个标签表

@Component

spring目前用来实现自动生成beans的标签,但是实际开发中,为了更方便阅读,一般使用三个与此等效的标签来表明层次,分别是

@Controller, @Service, @Repository

对应控制器层,业务层和DAO层。

@Autowired

根据类型名称实现自动装配,可以配合@Qualifier("Bean名称")来实现依据名字自动装配。

@Resource

根据变量名称实现自动装配。

需要注意一下,以上两个标签想实现自动装配,被装配的类要实现set和get方法

@RequestMapping("/url")

@RequestMapping(value="url",method=RequestMethod.方法名)

这个标签来定义Controller层的控制器/函数的对应连接,第二种方法可以选择post或者get方法,从而获取post和get数据。

贴一下上图目录结构中一些部分的代码

MainController.java

package com.cielo.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import com.cielo.service.TbUserService; @Controller
@RequestMapping("/Main")
public class MainController {
@Autowired
TbUserService tbUserService;
@RequestMapping("/add")
public String add() {
return "add";
} @RequestMapping(value = "/edit", method = RequestMethod.POST)
public String edit(HttpServletRequest request) {
boolean success = tbUserService.addAUserByNameAndPassword(
request.getParameter("name"), request.getParameter("password"));
if (success)
return "edit";
return "error";
} public TbUserService getTbUserService() {
return tbUserService;
} public void setTbUserService(TbUserService tbUserService) {
this.tbUserService = tbUserService;
}
}

TbUserService.java

package com.cielo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.cielo.dao.TbUserDao;
import com.cielo.entity.TbUser;
@Service
public class TbUserService {
@Autowired
private TbUserDao tbUserDao;
public boolean addAUserByNameAndPassword(String name, String password) {
TbUser tbUser = new TbUser();
tbUser.setName(name);
tbUser.setPassword(password);
return tbUserDao.add(tbUser);
}
public TbUserDao getTbUserDao() {
return tbUserDao;
}
public void setTbUserDao(TbUserDao tbUserDao) {
this.tbUserDao = tbUserDao;
}
public TbUserService(TbUserDao tbUserDao) {
this.tbUserDao = tbUserDao;
}
public TbUserService() {
// TODO Auto-generated constructor stub
}
}

TbUserDao.java(Dao负责直接和数据库对接操作,比较长,折叠给出)

package com.cielo.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Repository; import com.cielo.entity.HibernateSessionFactory;
import com.cielo.entity.TbUser;
@Repository
public class TbUserDao {
public boolean add(TbUser tbUser) {
Session session = null;
try {
session = HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(tbUser);
session.getTransaction().commit();
System.out.println("Success to add the user");
return true;
} catch (Exception e) {
session.getTransaction().rollback();
System.out.println("Fail to add the user");
e.printStackTrace();
}
return false;
} public TbUser selectById(int id){
Session session=null;
try{
session=HibernateSessionFactory.getSession();
String hql="from TbUser as tb_user where tb_user.id=:id";
Query query=session.createQuery(hql);
query.setInteger("id", id);
List list=query.list();
return (TbUser) list.get(0);
}catch(Exception e){
System.out.println("Fail to select the item by id");
e.printStackTrace();
}
return null;
} public TbUser selectByName(String name){
Session session=null;
try{
session=HibernateSessionFactory.getSession();
String hql="from TbUser as tb_user where tb_user.name=:name";
Query query=session.createQuery(hql);
query.setString("name", name);
List list=query.list();
return (TbUser) list.get(0);
}catch(Exception e){
System.out.println("Fail to select the item by name");
e.printStackTrace();
}
return null;
} public boolean deleteById(int id){
Session session=null;
try{
session=HibernateSessionFactory.getSession();
session.beginTransaction();
String hqlString="delete from TbUser tb_user where tb_user.id=:id";
Query query=session.createQuery(hqlString);
query.setInteger("id", id);
session.getTransaction().commit();
return true;
}catch(Exception e){
session.getTransaction().rollback();
System.out.println("Fail to delete the item by id");
e.printStackTrace();
}
return false;
} public boolean deleteByName(String name){
Session session=null;
try{
session=HibernateSessionFactory.getSession();
session.beginTransaction();
String hqlString="delete from TbUser tb_user where tb_user.name=:name";
Query query=session.createQuery(hqlString);
query.setString("name", name);
session.getTransaction().commit();
return true;
}catch(Exception e){
session.getTransaction().rollback();
System.out.println("Fail to delete the item by name");
e.printStackTrace();
}
return false;
} public boolean deleteByTbUser(TbUser tbUser){
Session session=null;
try{
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.delete(tbUser);
session.getTransaction().commit();
return true;
}catch(Exception e){
session.getTransaction().rollback();
System.out.println("Fail to delete the item by tbUser");
e.printStackTrace();
}
return false;
} public boolean update(TbUser tbUser) {
Session session = null;
try {
session = HibernateSessionFactory.getSession();
session.beginTransaction();
session.update(tbUser);
session.getTransaction().commit();
System.out.println("Success to update the user");
return true;
} catch (Exception e) {
session.getTransaction().rollback();
System.out.println("Fail to update the user");
e.printStackTrace();
}
return false;
} public TbUserDao() {
// TODO Auto-generated constructor stub
}
}

TbUser实体类,利用hibernate自动生成的标签,不再需要hbm文件去对应,只需要再hibernate.cfg.xml中设置一下Mapping即可

package com.cielo.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; /**
* TbUser entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "tb_user", schema = "dbo", catalog = "Web")
public class TbUser implements java.io.Serializable { // Fields private Integer id;
private String name;
private String password; // Constructors /** default constructor */
public TbUser() {
} /** full constructor */
public TbUser(Integer id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
} // Property accessors
@Id
@Column(name = "id", unique = true, nullable = false)
@GeneratedValue
public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} @Column(name = "name", nullable = false)
public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} @Column(name = "password", nullable = false)
public String getPassword() {
return this.password;
} public void setPassword(String password) {
this.password = password;
} }

完整代码见github上此项目

构建基础的SpringMVC+Hibernate+SpringloC项目的更多相关文章

  1. IntelliJ IDEA 创建Spring+SpringMVC+hibernate+maven项目

    第一步: 新建maven管理的web项目, 具体步骤参考:http://www.cnblogs.com/gczmn/p/8693734.html 第二步: 创建项目结构, 完整项目结构如下: 第三步: ...

  2. 使用idea启动springMVC+Hibernate其他项目

    打开项目后打开Project Structure 点开左边的Libraries 加入依赖包 点开左边的Moudules 选中项目 新建Web,Spring,Hibernate三项 Hibernate添 ...

  3. SpringMVC hibernate增加多数据源 (SSHE/SYPRO增加多数据源为例)

    SpringMVC hibernate增加多数据源 (以类SSHE/SYPRO增加多数据源为例作说明) 注:适用与SpringMVC + Hibernate的项目.其它框架的仅仅能说作參考用 配置Sp ...

  4. springMvc+hibernate的web application的构建

    闲来没事,想整理下一些知识. 这篇文章是关于spring的web程序的搭建,有什么不对的地方希望大家批评指正. 首先我们要了解什么是spring,这里可能很多大家也都明白,无非是一个管理对象的一个容器 ...

  5. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  6. Maven搭建SpringMVC+Hibernate项目详解

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  7. 项目总结SpringMVC+hibernate框架 web.xml 分析(2)

    紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ...

  8. Maven搭建SpringMVC+Hibernate项目详解(转)

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  9. asp.net core系列 59 Ocelot 构建基础项目示例

    一.入门概述 从这篇开始探讨Ocelot,Ocelot是一个.NET API网关,仅适用于.NET Core,用于.NET面向微服务/服务的架构中.当客户端(web站点.ios. app 等)访问we ...

随机推荐

  1. Ajax 初步学习总结

    Ajax是什么 Ajax是(Asynchronous JavaScript And XML)是异步的JavaScript和xml.也就是异步请求更新技术.Ajax是一种对现有技术的一种新的应用,不是一 ...

  2. Android必知必会--使用shape制作drawable素材

    前言 最近看到朋友制作的Android APP使用了极少的图片,但是图形却极其丰富,问了之后得知是使用shape绘制的,有很多优点. 下面是我整理的一些素材: 预览 下面是图片预览: 代码 布局文件 ...

  3. (NO.00001)iOS游戏SpeedBoy Lite成形记(十四)

    下面要启用场景的触摸功能,在GameScene.m的didLoadFromCCB方法里添加下面一行: self.userInteractionEnabled = YES; 然后还需要给GameScen ...

  4. C语言实现的猜数字小游戏(主要是对于自定义函数的运用)

    #include <stdio.h> #include <stdlib.h> #include<time.h>//加上此头文件的作用是什么?另外不加的话有什么影响? ...

  5. Cocos2D场景中对象引用为nil时的判断

    如果该对象在SpriteBuilder中属性中设置了name,则检查是否 [self.scene getChildByName:@"theNameOfTheNode" recurs ...

  6. MFC中使用SDL播放音频没有声音的解决方法

    本文所说的音频是指的纯音频,不包含视频的那种. 在控制台中使用SDL播放音频,一般情况下不会有问题. 但是在MFC中使用SDL播放音频的时候,会出现没有声音的情况.经过长时间探索,没有找到特别好的解决 ...

  7. STL的容器算法迭代器的设计理念

    1) STL的容器通过类模板技术,实现数据类型和容器模型的分离. 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性. 3) STL的函数对象实现了自定义数据类型的算法运算 ...

  8. linux下播放组播流出现setsockopt:No such device错误

    在linux下播放组播流出现setsockopt:No such device错误是因为多播IP没有add路由表里面 可以采用如下命令完成: root@android:/ # busybox rout ...

  9. iOS实现时间线列表效果(例如订单详情页面的效果)

    之前看到美团的订单详情页面很有特色,于是决定模仿一下这个效果. 其实就是简单的 TableView 技巧,下面我们就来一步一步实现它. 设计 TableViewCell 原型 子类化一个新的 UITa ...

  10. SVN版本控制器中各符号的含义

    SVN符号的含义 项目开发过程中,随着学习的不断深入,开始慢慢接触到版本管理控制工具,其实这个工具主要用于团队开发之中,但对于个人项目的备份也有好处,可以避免在电脑出现不可预知的故障时,最大化的保护自 ...