工程目录结构:
配置pom.xml
4.0.0
cq
springMVC
0.0.1-SNAPSHOT
war
org.springframework
spring-webmvc
4.3.3.RELEASE
org.springframework
spring-orm
4.3.3.RELEASE
javax.servlet
javax.servlet-api
3.1.0
jstl
jstl
1.2
com.fasterxml.jackson.core
jackson-core
2.4.3
com.fasterxml.jackson.core
jackson-databind
2.4.3
c3p0
c3p0
0.9.1.2
com.oracle
ojdbc6
3.3
org.slf4j
slf4j-log4j12
1.7.21
org.hibernate
hibernate-core
4.3.9.Final
配置application-core.xml
1
20
1800
2
0
2
1800
30
true
false
org.springframework.orm.hibernate4.SpringSessionContext
true
org.hibernate.dialect.OracleDialect
com.it.bean
配置web.xml
ssh_pri
contextConfigLocation
classpath*:application-*.xml
org.springframework.web.context.ContextLoaderListener
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
lazyLoadingFilter
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
lazyLoadingFilter
/*
dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
1
dispatcher
/
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
配置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 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 findAll(String hql){
return (List) 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{
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 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 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 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+"/";
%>
My JSP 'add.jsp' starting page
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" %>
My JSP 'show.jsp' starting page
编号
密码
姓名
性别
年龄
地址
操作
添加
${l.stu_id }
${l.stu_pwd }
${l.stu_name }
${l.stu_sex }
${l.stu_age }
${l.stu_addr }
删除
修改
<<
>>
upd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'MyJsp.jsp' starting page