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/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/util 
      http://www.springframework.org/schema/util/spring-util.xsd
      http://www.springframework.org/schema/context
      http://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,stdout

log4j.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=INFO

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=[NEOP]%-d{yyyy-MM-dd HH:mm:ss} (%c:%L)(%t) [%p] %m%n

log4j.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;
	@Transactional
	public void add(Student stu){
		studao.add(stu);
	}
	
	@Transactional
	public void upd(Student stu){
		studao.upd(stu);
	}
	
	@Transactional
	public void del(Student stu){
		studao.del(stu);
	}
	
	@Transactional
	public List<Student> findAll(Student stu){
		return studao.findAll(stu);
		
	}
	@Transactional
	public 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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值