springMVC+hibernate构建项目
这几天要用到springMVC+spring+hibernate构建框架,使用的是eclipse今天闲下来把这些记录下来
首先要导入spring 的jar包和hibernate的jar包
这是所有的jar
然后让我们开始配置我们按照spring提倡“约定优于配置”将spring为servlet 的名称spring-servlet.xml将这个文件放在/WEB-INF下spring会自动去加载
spring-servlet.xml的配置
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!--在这里配置controller所在的包的位置-->
<context:component-scan base-package="com.test.controller"></context:component-scan>
<!--使用注解扫描-->
<mvc:annotation-driven/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property> //页面所在的文件夹
<property name="suffix" value=".jsp"></property>//拦截后跳转的页面的后缀名的还原
</bean>
<!-- 文件上传配置信息-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1000000"></property>//设置文件的上传大小
</bean>
</beans>
以上为spring-servlet.xml的配置信息
下面介绍application.xml里的配置信息
application.xml里主要是一些数据库的连接和对吧包的扫描
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
//启用注解扫描
<context:component-scan base-package="com.test"></context:component-scan>
// 使用注解的方式管理事务
<tx:annotation-driven transaction-manager="transactionManager"/>
//数据源
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
<property name="user" value="root"></property>
<property name="password" value="admin"></property>
</bean>
//事务管理
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
//sessionFactory工厂
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
配置实体所在的包路径
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/test/entity</value>
</list>
</property>
</bean>
</beans>
下面开始配置web.xml文件中的文件信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- spring监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 处理中文乱码问题 -->
<filter>
<filter-name>EcodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EcodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 过滤所有后缀名为html结尾的请求 -->
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
以上是所有的配置文件的信息,下面对每个层次上的代码给予简单的介绍
UserInfoController.java:
package com.test.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.test.entity.UserInfo;
import com.test.service.UserInfoService;
@Controller
@RequestMapping("/user")
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
private UserInfo userInfo;
/**
* 添加用户信息
* @return
*/
@RequestMapping("/add")
public String add(UserInfo userinfo){
this.userInfoService.save(userinfo);
//重定向到list页面显示已添加的用户信息
return "redirect:list.html";
}
//查询出所有的用户信息
@RequestMapping("/list")
public String list(HttpSession session){
List<UserInfo> userList = this.userInfoService.queryAll();
session.setAttribute("userList", userList);
return "user_list";
}
/**
* 删除用户的信息
* @param id
* @return
*/
@RequestMapping("/delete/{id}")
public String delete(@PathVariable int id){
this.userInfoService.delete(id);
return "redirect:/user/list.html";
}
以上给出了简单的添加,删除,和查询,其他的操作也比较简单在这里不做详细介绍
UserInfoService.java:
package com.test.service.impl;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.test.dao.UserInfoDao;
import com.test.entity.UserInfo;
import com.test.service.UserInfoService;
@Service("userInfoService")
@Transactional
public class UserInfoServiceImpl implements UserInfoService{
@Resource()
private UserInfoDao userInfoDao;
/**
* 添加保存用户信息
*/
@Override
public void save(UserInfo userInfo) {
userInfoDao.save(userInfo);
}
/**
* 删除用户信息
*/
@Override
public void delete(Integer id) {
UserInfo user = this.userInfoDao.queryById(id);
this.userInfoDao.delete(user);
}
/**
* 查询出所有的用户的信息
*/
@Override
public List<UserInfo> queryAll() {
return this.userInfoDao.queryAll();
}
这里的代码太简单,不多说
UserInfoDaoImpl.java
package com.test.dao.impl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.test.dao.UserInfoDao;
import com.test.entity.UserInfo;
@Repository("userDao")
public class UserDaoImpl extends HibernateDaoSupport implements UserInfoDao {
@Resource
public void setSuperSessionFactory(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
/**
* 添加用户信息
*/
@Override
public void save(UserInfo userInfo) {
super.getHibernateTemplate().save(userInfo);
}
/**
* 删除用户信息
*/
@Override
public void delete(UserInfo userInfo) {
super.getHibernateTemplate().delete(userInfo);
}
/**
* 查询出所有的用户信息
*/
@Override
public List<UserInfo> queryAll() {
String hql = "from UserInfo";
return super.getHibernateTemplate().find(hql);
}
这是一种比较费时,费力的写法,当然也有比较简单的,比较的通用
BaseDaoImpl.java
package com.test.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDaoImpl<T> extends HibernateDaoSupport {
private Class<T> entityClass;
@Resource(name = "sessionFactory")
public void setSuperSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
/**
*获取类
*/
public BaseDaoImpl(){
// Type genType = this.getClass().getGenericSuperclass();
// Type[] params = ((ParameterizedType)getClass()).getActualTypeArguments();
// entityClass = (Class<T>) params[0];
this.entityClass = (Class<T>) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
System.out.println("entityClass ============= "+this.entityClass);
}
public BaseDaoImpl(Class clazz){
this.entityClass = clazz;
}
/**
* 根据编号获取实体信息
* @param id 传入的用户的编号
* @return 返回实体
*/
public T get(Serializable id){
return super.getHibernateTemplate().get(entityClass, id);
}
/**
* 保存实体对象
* @param entity 传入的实体对象
*/
public void save(T entity){
super.getHibernateTemplate().save(entity);
}
/**
* 删除的实体信息
* @param entity 传入的实体信息
*/
public void deleteEntity(T entity){
super.getHibernateTemplate().delete(entity);
}
/**
* 更新的实体信息
* @param entity 更新后的实体信息
*/
public void updateEntity(T entity){
super.getHibernateTemplate().update(entity);
}
/**
* 根据传入的hql语句进行查询
* @param hql 查询的hql语句
* @return 返回查询的结果
*/
public List<T> find(String hql){
return super.getHibernateTemplate().find(hql);
}
/**
* 带参数查询
* @param hql hql语句
* @param params 传入查询的参数
* @return 返回查询的结果
*/
public List<T> find(String hql, Object...params){
return super.getHibernateTemplate().find(hql, params);
}
/**
* 创建Query方式查询
* @param hql hql语句
* @param params 查询的参数
* @return 返回Query对象
*/
public Query createQuery(String hql, Object... params){
Query query = this.getSession().createQuery(hql);
if( params != null && params.length > 0){
for(int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query;
}
/**
* 统计一共有多少条数据 当让也可以添加上参数,这个后续完善
* @return
*/
public int getCount(){
String hql = "select count(e) from "+entityClass.getSimpleName()+" e ";
Query query = this.createQuery(hql,null);
Long count = (Long) query.uniqueResult();
return count.intValue();
}
/**
* 根据编号查询出
* @param id 传入的实体的编号信息
* @return 返回一个对应的实体对象
*/
public T queryById(int id){
return this.get(id);
}
/**
* 分页显示数据信息,当然和getCount一样也可以添加上参数,后续完善
*
* @param page 分页的page实体
* @return 返回查询的集合结果
*/
// public List<T> queryAll(Page page) {
// String hql = "from "+entityClass.getSimpleName();
// Query query = this.createQuery(hql, null);
//
// //设置起始位置
// query.setFirstResult((page.getCurrentPage()-1)*page.getEveryPage());
//
// //设置每页显示的数量
// query.setMaxResults(page.getEveryPage());
// List<T> list = query.list();
// return list;
// }
/**
* 查询所有的数据信息,相信很少会用到
*/
public List<T> queryAll(){
String hql = "from "+entityClass.getSimpleName();
List<T> list = find(hql);
return list;
}
}
springMVC+hibernate构建项目的更多相关文章
- 构建基础的SpringMVC+Hibernate+SpringloC项目
一. SpringMVC 阅读我的上一篇文章<使用MyEclipse2015构建SpringMVC项目>,知道基本的构建方法,先构建一个纯springmvc项目,再对web.xml按照本文 ...
- IntelliJ IDEA 创建Spring+SpringMVC+hibernate+maven项目
第一步: 新建maven管理的web项目, 具体步骤参考:http://www.cnblogs.com/gczmn/p/8693734.html 第二步: 创建项目结构, 完整项目结构如下: 第三步: ...
- 使用idea启动springMVC+Hibernate其他项目
打开项目后打开Project Structure 点开左边的Libraries 加入依赖包 点开左边的Moudules 选中项目 新建Web,Spring,Hibernate三项 Hibernate添 ...
- SpringMVC hibernate增加多数据源 (SSHE/SYPRO增加多数据源为例)
SpringMVC hibernate增加多数据源 (以类SSHE/SYPRO增加多数据源为例作说明) 注:适用与SpringMVC + Hibernate的项目.其它框架的仅仅能说作參考用 配置Sp ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- Maven搭建SpringMVC+Hibernate项目详解
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- 项目总结SpringMVC+hibernate框架 web.xml 分析(2)
紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ...
- Maven搭建SpringMVC+Hibernate项目详解(转)
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- springMvc+hibernate的web application的构建
闲来没事,想整理下一些知识. 这篇文章是关于spring的web程序的搭建,有什么不对的地方希望大家批评指正. 首先我们要了解什么是spring,这里可能很多大家也都明白,无非是一个管理对象的一个容器 ...
随机推荐
- css之clear属性
clear属性用来设置元素左右两边是否可以存在浮动元素. 它的值包括:left,right,both,none.其中none代表左右两边可以出现浮动元素.
- System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或
有可能读出的数据为NULL,可以这样改: 方法一:while (reader.Read()){ for (int i = 0; i < 7; i++) { if (reader.IsDBNull ...
- java获取数据库的所有列名和对应的数据库类型
/** * 连接数据库 * @param driver 数据库的驱动类 * @param url 数据库的地址 * @param userName 数据库的用户名 ...
- ActiveMQ集成到Spring
[http://wentao365.iteye.com/blog/1560934] spring配置文件applicationContext.xml <?xml version="1. ...
- 一种基于PTP 协议的局域网高精度时钟同步方法(转)
原文地址 http://www.dzsc.com/data/html/2011-1-17/88338.html 1 引言 在分布式系统中, 常常需要一个全局时间, 用来确定系统中各种事件发生的先后.协 ...
- CSS布局经验谈
1.盒子模型 CSS最具特色也是最本质的可以浓缩成盒子模型. 整个页面可以通过大盒子套小盒子,盒子挨着盒子放,摆成一个页面即可. 盒子即所谓的块元素,只有块元素才有宽和高,有了宽和高才能使盒子挨着盒子 ...
- 【6】连续序列和为s
题目:输入一个整数s,打印出全部和为s的连续整数序列(至少含有2个数).比如输入9,则输出2.3.4和4.5两个序列 方案一:因为序列至少要2个数,则两个数上限值为(1+s)/2,我们能够枚举该序列的 ...
- rails 调试
1. ruby-debug, ruby-debug19 没人维护,bug多.Ruby 1.9.3后不推荐使用 2. debugger ruby 1.9.3后的选择,功能强大,缺点是没有语法高亮. 项目 ...
- .cmd文件不小心管理记事本打开的恢复
比如不小心将.cmd文件关联成用记事本打开了,此时须要删除注冊表: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explor ...
- 【小白的java成长系列】——面向对象基础
今天来说说java面向对象的知识点~事实上.java在其发展过程中可以成功.非常大一部分原因是其面向对象的思想~ 1.概念 如今来说面向对象思想.也不是什么新的知识点了,我们知道如今非常多语言都有面向 ...