1、添加数据库表
使用sqlplus打开数据库
sqlplus scott/tiger
创建emps数据表
create table emps( id varchar(32) not null, username varchar(20) not null, salary number(6,2), hiredate date );

2、添加jar包
项目需要的jar包有spring-core、spring-web、spring-webmvc、oracle数据库驱动、c3p0数据库连接池、dbutils。
| jar包分类 | 具体jar包 |
| spring-core | commons-logging-1.2.jar spring-beans-3.2.5.RELEASE.jar spring-context-3.2.5.RELEASE.jar spring-core-3.2.5.RELEASE.jar spring-expression-3.2.5.RELEASE.jar |
| spring-web | spring-web-3.2.5.RELEASE.jar |
| spring-webmvc | spring-webmvc-3.2.5.RELEASE.jar |
| oracle数据库驱动 | ojdbc5.jar 位于:OracleDB\product\11.2.0\dbhome_1\jdbc\lib\ojdbc5.jar |
| c3p0数据库连接池 | c3p0-0.9.1.2.jar |
| dbutils | commons-dbutils-1.6.jar |
3、配置
添加jar包之后,要进行配置:
(1)将springmvc加入到web项目中,需要配置web.xml、springmvc.xml文件
(2)使用c3p0,需要配置c3p0-config.xml文件
web.xml
emp index.jsp springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml springmvc *.action CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 CharacterEncodingFilter /*
springmvc.xml
c3p0-config.xml
jdbc:oracle:thin:@127.0.0.1:1521:orcl oracle.jdbc.driver.OracleDriver scott tiger 2 5 1 5 1000
4、工具类编写
SecurityUtils用来提供UUID,而JDBCUtils用来获取DataSource。
SecurityUtils.java
package com.rk.utils;
import java.util.UUID;
public class SecurityUtils {
public static String getUUID()
{
return UUID.randomUUID().toString().replaceAll("-", "");
}
}JDBCUtils.java
package com.rk.utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCUtils {
/**
* 去src目录下加载c3p0-config.xml配置文件
*/
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
/**
* 获取数据源
*/
public static ComboPooledDataSource getDataSource() {
return dataSource;
}
}5、从entity到action
Employee.java
package com.rk.entity;
import java.util.Date;
public class Employee {
private String id;
private String username;
private Double salary;
private Date hiredate;
public Employee(){}
public Employee(String id, String username, Double salary, Date hiredate) {
this.id = id;
this.username = username;
this.salary = salary;
this.hiredate = hiredate;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
}EmpDao.java
package com.rk.dao;
import java.sql.Timestamp;
import java.util.Date;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import com.rk.entity.Employee;
import com.rk.utils.JDBCUtils;
import com.rk.utils.SecurityUtils;
public class EmpDao {
public void add(Employee emp) throws Exception{
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
String sql = "insert into emps(id,username,salary,hiredate) values(?,?,?,?)";
Object[] params = {SecurityUtils.getUUID(),emp.getUsername(),emp.getSalary(),new Timestamp(emp.getHiredate().getTime())};
queryRunner.update(sql,params);
}
@Test
public void run() throws Exception{
Employee emp = new Employee();
emp.setUsername("小明");
emp.setSalary(88.88);
emp.setHiredate(new Date());
add(emp);
}
}EmpService.java
package com.rk.service;
import com.rk.dao.EmpDao;
import com.rk.entity.Employee;
public class EmpService {
private EmpDao empDao;
public void setEmpDao(EmpDao empDao) {
this.empDao = empDao;
}
public void register(Employee emp) throws Exception{
empDao.add(emp);
}
}EmpAction.java
package com.rk.action;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import com.rk.entity.Employee;
import com.rk.service.EmpService;
@SuppressWarnings("deprecation")
public class EmpAction extends AbstractCommandController {
//业务层
private EmpService empService;
public void setEmpService(EmpService empService) {
this.empService = empService;
}
//将表单参数封装到Employee实体中
public EmpAction(){
this.setCommandClass(Employee.class);
}
//自定义String->Date的转换器
@Override
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
}
@Override
protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object obj, BindException bindException)
throws Exception {
ModelAndView modelAndView = new ModelAndView();
Employee emp = (Employee) obj;
empService.register(emp);
modelAndView.addObject("message", "操作成功");
modelAndView.setViewName("success");
return modelAndView;
}
}6、对dao/service/action的配置
spring-emp.xml
7、JSP页面
WebRoot/jsp/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>添加员工
WebRoot/jsp/success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>添加成功 ${message }
演示
