Spring MVC系列:(6)添加用户的小案例
admin
2023-06-05 21:21:53
0次


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
);


Spring MVC系列:(6)添加用户的小案例


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-webspring-web-3.2.5.RELEASE.jar
spring-webmvcspring-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
dbutilscommons-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 }
  


演示

Spring MVC系列:(6)添加用户的小案例



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...