ssh整合(spring+springmvc+hibernate)
工程目录结构:
配置pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cq</groupId><artifactId>springMVC</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><build/>
<dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.3.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.3.3.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.4.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.4.3</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>3.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.9.Final</version></dependency></dependencies>
</project>
配置application-core.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:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><bean id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass"value="oracle.jdbc.driver.OracleDriver"></property><property name="jdbcUrl"value="jdbc:oracle:thin:@localhost:1521:xe"></property><property name="user" value="cq"></property><property name="password" value="123456"></property><property name="minPoolSize"><value>1</value></property><property name="maxPoolSize"><value>20</value></property><property name="maxIdleTime"><value>1800</value></property><property name="acquireIncrement"><value>2</value></property><property name="maxStatements"><value>0</value></property><property name="initialPoolSize"><value>2</value></property><property name="idleConnectionTestPeriod"><value>1800</value></property><property name="acquireRetryAttempts"><value>30</value></property><property name="breakAfterAcquireFailure"><value>true</value></property><property name="testConnectionOnCheckout"><value>false</value></property></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop></props></property><property name="packagesToScan"><list><value>com.it.bean</value></list></property></bean>
<!-- 事务管理器 --><bean id="htm" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 事务管理的注解驱动 --><tx:annotation-driven transaction-manager="htm"/> <!-- spring 扫描 --><context:component-scan base-package="com.it"></context:component-scan><!-- mvc注解驱动 --><mvc:annotation-driven /><!--通用视图解析器 --><bean id="viewResolverCommon" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean>
<mvc:resources location="/static/" mapping="/static/**"
cache-period="3600" /></beans>
配置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_2_5.xsd" version="2.5"><display-name>ssh_pri</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:application-*.xml </param-value></context-param>
<!-- 配置监听以实例化Spring上下文 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 编码 --><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
<!-- hibernate 的session在request中有效 --><filter><filter-name>lazyLoadingFilter</filter-name><filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>lazyLoadingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
<!-- springmvc 前端控制器 --><servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value></param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping> <welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list>
</web-app>
配置log4j.properties
#log level
log4j.rootLogger=info,R,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n#Log4j提供的appender有以下几种:
#org.apache.log4j.ConsoleAppender(控制台),
#org.apache.log4j.FileAppender(文件),
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)#log4j.appender.stdout=org.apache.log4j.ConsoleAppender#其中log4j提供4种布局.
#org.apache.log4j.HTMLLayout(以HTML表格形式布局)
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.
# log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# Print the date in ISO 8601 format
#log4j.appender.stdout.layout.ConversionPattern==%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n#log4j.appender.stdout.layout.ConversionPattern=[%t-%d{HH\:mm\:ss} (%F\:%L)] %m%n #R 输出到文件 RollingFileAppender的扩展,可以提供一种日志的备份功能。
#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender#日志文件的名称
log4j.appender.R.File=d:/logs.log#日志文件的大小
log4j.appender.R.Append=true# Keep one backup file
#保存一个备份文件
log4j.appender.R.Threshold=INFOlog4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=[NEOP]%-d{yyyy-MM-dd HH:mm:ss} (%c:%L)(%t) [%p] %m%nlog4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.org.apache=INFO
log4j.logger.org.mybatis=INFO
log4j.logger.com.ibatis=INFO
log4j.logger.java.sql=INFO
log4j.logger.org.springframework=INFO
bean
Student
package com.it.bean;import java.io.Serializable;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name="Student")
public class Student implements Serializable {@Id@Column(name="stu_id")private String stu_id;@Column(name="stu_pwd")private String stu_pwd;@Column(name="stu_name")private String stu_name;@Column(name="stu_sex")private String stu_sex;@Column(name="stu_age")private String stu_age;@Column(name="stu_addr")private String stu_addr;public String getStu_id() {return stu_id;}public void setStu_id(String stu_id) {this.stu_id = stu_id;}public String getStu_pwd() {return stu_pwd;}public void setStu_pwd(String stu_pwd) {this.stu_pwd = stu_pwd;}public String getStu_name() {return stu_name;}public void setStu_name(String stu_name) {this.stu_name = stu_name;}public String getStu_sex() {return stu_sex;}public void setStu_sex(String stu_sex) {this.stu_sex = stu_sex;}public String getStu_age() {return stu_age;}public void setStu_age(String stu_age) {this.stu_age = stu_age;}public String getStu_addr() {return stu_addr;}public void setStu_addr(String stu_addr) {this.stu_addr = stu_addr;}public Student(String stu_id, String stu_pwd, String stu_name,String stu_sex, String stu_age, String stu_addr) {super();this.stu_id = stu_id;this.stu_pwd = stu_pwd;this.stu_name = stu_name;this.stu_sex = stu_sex;this.stu_age = stu_age;this.stu_addr = stu_addr;}public Student() {super();// TODO Auto-generated constructor stub}}
dao
BaseDAO
package com.it.dao;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;import com.it.bean.Student;public class BaseDAO<E> extends HibernateDaoSupport{@Resource public void setSuperSessionFactory(SessionFactory sessionFactory){super.setSessionFactory(sessionFactory);}public void add(E e){this.getHibernateTemplate().save(e);}public void del(E e){this.getHibernateTemplate().delete(e);}public void upd(E e){this.getHibernateTemplate().update(e);}@SuppressWarnings("unchecked")public List<E> findAll(String hql){return (List<E>) this.getHibernateTemplate().find(hql);}@SuppressWarnings("unchecked")public E findById(String stu_id){E e=(E) this.getHibernateTemplate().get(Student.class, stu_id);return e;}
}
StudentDAO
package com.it.dao;import java.util.List;import org.springframework.stereotype.Repository;import com.it.bean.Student;@Repository(value="studao")
public class StudentDAO extends BaseDAO<Student>{public void add(Student stu){super.add(stu);}public void upd(Student stu){super.upd(stu);}public void del(Student stu){super.del(stu);}public List<Student> findAll(Student stu){String hql="from Student";return super.findAll(hql);}}
service
StudentService
package com.it.service;import java.util.List;import javax.annotation.Resource;
import javax.transaction.Transactional;import org.springframework.stereotype.Service;import com.it.bean.Student;
import com.it.dao.StudentDAO;@Service(value="stusv")
public class StudentService {@Resource(name="studao")private StudentDAO studao;@Transactionalpublic void add(Student stu){studao.add(stu);}@Transactionalpublic void upd(Student stu){studao.upd(stu);}@Transactionalpublic void del(Student stu){studao.del(stu);}@Transactionalpublic List<Student> findAll(Student stu){return studao.findAll(stu);}@Transactionalpublic Student findById(String stu_id){return (Student)studao.findById(stu_id);}
}
action
StudentAction
package com.it.action;import java.util.List;import javax.annotation.Resource;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import com.it.bean.Student;
import com.it.service.StudentService;@Controller
public class StudentAction {@Resource(name="stusv")private StudentService stusv;@RequestMapping("/add")public String add(Student stu){System.out.println("---------1------");stusv.add(stu);return "redirect:/show";}@RequestMapping("/upd")public String upd(Student stu){System.out.println("---------1------");stusv.upd(stu);return "redirect:/show.do";}@RequestMapping("/del")public String del(Student stu){System.out.println("---------1------");stusv.del(stu);return "redirect:/show.do";}@RequestMapping("/show")public ModelAndView findAll(Student stu){System.out.println("----------2----------");List<Student> list=this.stusv.findAll(stu);ModelAndView mv=new ModelAndView("show");mv.addObject("list", list);return mv;}@RequestMapping("/findById")public String findById(HttpSession session,String stu_id){System.out.println("----------3----------");Student stu=this.stusv.findById(stu_id);System.out.println("----------4---------");session.setAttribute("stu", stu);return "upd";}
}
jsp
add.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'add.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="add" method="post">ID:<input type="text" name="stu_id"/><br>PWD:<input type="text" name="stu_pwd"/><br>NAME:<input type="text" name="stu_name"/><br>SEX:<input type="text" name="stu_sex"/><br>AGE:<input type="text" name="stu_age"/><br>ADDR:<input type="text" name="stu_addr"/><br><input type="submit" value="添加"/></form></body>
</html>
show.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'show.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script type="text/javascript">function openLogin(){document.getElementById("win").style.display="";}function closeLogin(){document.getElementById("win").style.display="none";}</script></head><body><table><tr><td>编号</td><td>密码</td><td>姓名</td><td>性别</td><td>年龄</td><td>地址</td><td>操作</td><td><a href="add.jsp" id="add">添加</a></td></tr><c:forEach items="${list }" var="l"><tr><td>${l.stu_id }</td><td>${l.stu_pwd }</td><td>${l.stu_name }</td><td>${l.stu_sex }</td><td>${l.stu_age }</td><td>${l.stu_addr }</td><td><a href="del.do?stu_id=${l.stu_id }">删除</a></td><td><a href="findById.do?stu_id=${l.stu_id }">修改</a></td></tr></c:forEach><a href="stu/show.action?currentPage=${(currentPage-1)<=1?1:(currentPage-1)}"><< </a><a href="stu/show.action?currentPage=${(currentPage+1)>totalPage?totalPage:(currentPage+1)}"> >></a></table></body>
</html>
upd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'MyJsp.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="upd" method="post">ID:<input type="text" name="stu_id" value="${stu.stu_id}"/><br>PWD:<input type="text" name="stu_pwd" value="${stu.stu_pwd}"/><br>NAME:<input type="text" name="stu_name" value="${stu.stu_name}"/><br>SEX:<input type="text" name="stu_sex" value="${ stu.stu_sex}"/><br>AGE:<input type="text" name="stu_age" value="${ stu.stu_age}"/><br>ADDR:<input type="text" name="stu_addr" value="${ stu.stu_addr}"/><br><input type="submit" value="修改"/></form></body>
</html>
ssh整合(spring+springmvc+hibernate)相关推荐
- Spring+SpringMvc+Hibernate(SSH)+bootstrap/Jsp整合
文章目录 前言: 准备工作: 最终项目的目录结构: 源码 一.使用idea创建web app项目 二.导包 三.SpringMVC配置 第一步:配置spring-mvc.xml 第二步:配置 web. ...
- spring+springmvc+hibernate 整合
三大框架反反复复搭了很多次,虽然每次都能搭起来,但是效率不高.最近重新搭了一次,理顺了思路,整理了需要注意的地方,分享出来. 工具:Eclipse(jdk 1.7) spring和hibernate版 ...
- Spring+SpringMVC+Hibernate整合(封装CRUD操作)
前言:当前Web项目开发的框架主流应该非Spring+SpringMVC+Hibernate莫属,不管是工作还是学习中涉及框架技术,首先是要搭建一套运行环境,虽然网上框架整合的教程很多,但我还是输出此 ...
- Spring+SpringMVC+Hibernate整合操作数据库 概述
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- Spring+SpringMvc+Hibernate 框架搭建
2019独角兽企业重金招聘Python工程师标准>>> 框架篇:Spring+SpringMVC+hibernate整合开发 一.建立项目 1.新建一个空项目project 相当于e ...
- java project整合spring和hibernate
web工程整合ssh已经很多例子了,本例目前为java project,所以要整合spring和hibernate. spring版本是3.0.6 hibernate版本是3.3.0 project架 ...
- Spring+SpringMVC+Hibernate实现投票/调查问卷网站
使用SSH架构(Spring+SpringMVC+Hibernate)实现了简单的调查问卷网站.最终效果如图: 下面整理实现流程. 前言 1.SSH架构 SSH是MVC架构的一种实现. Spring. ...
- 基于Spring+SpringMvc+Hibernate的咔咔发廊管理系统
基于Spring+SpringMvc+Hibernate的咔咔发廊管理系统 基于Spring+SpringMvc+Hibernate的家政服务网-java家政服务网 1.包含源程序,数据库脚本.代码和 ...
- 基于Spring+SpringMVC+hibernate实现的体检中心管理系统
源码及论文下载: http://www.byamd.xyz/tag/java/ 摘 要 随着人们生活水平的不断提高,人们的保健意识随之增强,体检已普遍成为人们保健的重要部分.特殊职业的体检.各种职业病 ...
- java+jsp+mysql实现汽车销售管理系统CarSaleManageSystem 前台买家 后台卖家 SSH(spring+struts+hibernate)开发框架
java+jsp+mysql实现汽车销售管理系统CarSaleManageSystem 项目简介 系统分前台和后台 前台是普通用户可以注册.登陆.修改个人信息.修改密码.浏览汽车.添加个人购车信息.查 ...
最新文章
- python装饰器由浅入深_由浅入深,走进Python装饰器-----第五篇:进阶--类装饰类
- 方舟编译器服务器端Java怎么用_方舟编译器可以运行Hello World了!
- python绘图时的分解问题的步骤-零基础学python-15.2 分解函数
- SpringBoot + Shiro 缓存记住密码
- 双向链表的C++类模板实现
- Excel按照日期排序,有截图
- 主页所停留的时间实现交互
- Source does not fit in dest
- CCF202006-3 Markdown渲染器(100分)【文本处理】
- Git教程_2 所有操作讲解
- 15分钟破解保险箱!美国小哥200美元自制开锁机器人
- Xamarin学习笔记之尝试篇
- 360 se html document 广告,广告拦截 - 360极速浏览器
- 河北省级环保督察回头看全覆盖 大气污染问题成举报重点
- iqooneo系统升级好不好_vivo iQOO手机系统更新好吗?
- LinuxStudyNote(39)-Linux软件包管理(1)-Linux软件包简介之源码包与RPM包、源码包的优缺点、RPM二进制包的优缺点
- Nehe教程16课雾
- gridview的ButtonField
- 数据结构与算法-Prim算法解析与解决修路最小生成树问题
- 目标检测之五:随机权值平均(Stochastic Weight Averaging,SWA)---木有看懂