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 }
演示