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

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

<?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" id="WebApp_ID" version="2.5">
  <display-name>emp</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 注册springmvc框架核心控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
      </init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
  <!-- 编码过滤器 -->
  <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>
  </filter>
  <filter-mapping>
      <filter-name>CharacterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>  
</web-app>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<import resource="com/rk/config/spring-emp.xml"/>
</beans>

c3p0-config.xml

<c3p0-config>
    <default-config>
        <property name="jdbcUrl">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
        <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
        <property name="user">scott</property>
        <property name="password">tiger</property>
		<property name="acquireIncrement">2</property>
		<property name="initialPoolSize">5</property>
		<property name="minPoolSize">1</property>
		<property name="maxPoolSize">5</property>
        <property name="maxIdleTime">1000</property>
    </default-config>
</c3p0-config>

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<!-- 注册EmpDao类 -->
	<bean id="empDaoID" class="com.rk.dao.EmpDao"></bean>
      
	<!-- 注册EmpService类 -->
	<bean id="empServiceID" class="com.rk.service.EmpService">
		<property name="empDao" ref="empDaoID"/>
	</bean>

	<!-- 注册Action -->
	<bean name="/add.action" class="com.rk.action.EmpAction">
		<property name="empService" ref="empServiceID"/>
	</bean>

	<!-- /index.action请求,直接转发到/jsp/index.jsp页面 -->
	<bean name="/index.action" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
		<property name="viewName" value="index"></property>
	</bean>

    <!-- 映射器(框架) -->  
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> 
       
    <!-- 适配器(框架) -->  
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>  

	<!-- 视图解析器(框架) -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

7、JSP页面

WebRoot/jsp/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>添加员工</title>
  </head>
  
  <body>
    <form action="${pageContext.request.contextPath}/add.action" method="post">
    	<table border="1" style="border-collapse: collapse;text-align: center;">
    		<tr>
    			<td>员工姓名:</td>
    			<td><input type="text" name="username"/></td>
    		</tr>
    		<tr>
    			<td>员工薪水:</td>
    			<td><input type="text" name="salary"/></td>
    		</tr>
    		<tr>
    			<td>入职时间:</td>
    			<td><input type="text" name="hiredate"/></td>
    		</tr>
    		<tr>
    			<td colspan="2">
    				<input type="submit" value="提交"/>
    			</td>
    		</tr>
    	</table>
    </form>
  </body>
</html>

WebRoot/jsp/success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>添加成功</title>
  </head>
  
  <body>
	${message }
  </body>
</html>

演示

时间: 2024-10-08 20:04:30

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

项目构建之maven篇:8.maven发布web工程及基于spring mvc,jetty实现的用户管理demo

web工程目录结构 pom/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&qu

spring MVC使用Interceptor做用户登录判断

在任何一个项目中,我们必须要用到的就是用户登录,那么就少不了用户是否登录的判断,如果我们每一个请求都要去做一次判断,那么就会变得很麻烦,但我们复制粘贴的时候我们就要考虑我们的代码写的是不是有问题,是不是可以重构一下,这里借鉴一下项目中的这种模式: package interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import logic

Spring MVC 的环境搭建和入门小程序

1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入spring官网,在网页右边选择想要下载的版本.如图 1.1.2进入页面按Ctrl+F搜索Distribution Zip Files 找到如图页面,点击地址.来到下载面 链接地址为:http://repo.spring.io/release/org/springframework/spring/ Spring源码下载地址:https://github.com/spring-projects/spring

Spring MVC系列之模型绑定(SpringBoot)(七)

前言 上一节我们在SpringBoot中启用了Spring MVC最终输出了HelloWorld,本节我们来讲讲Spring MVC中的模型绑定,这个名称来源于.NET或.NET Core,不知是否恰当,我们暂且这样理解吧. @RequestParam VS  @PathVariable 一看注解名称应该非常好理解,注解@RequestParam主要用来获取查询字符串参数,而注解@PathVaruable用于获取路由参数,下面我们来看如下一个例子: @ResponseBody @RequestM

Spring MVC之LocaleResolver(解析用户区域)

为了让web应用程序支持国际化,必须识别每个用户的首选区域,并根据这个区域显示内容. 在Spring MVC应用程序中,用户的区域是通过区域解析器来识别的,它必须实现LocaleResolver接口.Spring MVC提供了几个LocaleResolver实现,让你可以按照不同的条件来解析区域.除此之外,你还可以实现这个接口,创建自己的区域解析器. 要定义一个区域解析器,只需在web应用程序上下文中注册一个LocaleResolver类型的Bean就可以了.你必须将区域解析器的Bean名称设置

Spring MVC系列之Hello World(SpringBoot)(六)

前言 我们将SpringBoot可以看做是集大成者,说的通俗一点就是简化了配置,接下来我们看看在SpringBoot中如何启用并使用Spring MVC,Spring MVC和.NET或者.NET Core中MVC思想一样,只不过名词不一样罢了,好了,我们来看看在SpringBoot中如何使用Spring MVC. Spring MVC之Hello World 在我们默认创建的SpringBoot项目中,我们在Maven管理包的pom.xml里添加如下包对JSP进行编译 <dependency>

[jQuery学习系列六]6-jQuery实际操作小案例

前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> <head> <script type="text/javascript"> function check() { String.prototype.format = function(){ var args = arguments; return this.repla

Spring MVC系列:(1)SpringMVC快速入门

回顾一下struts2,struts2框架有如下特点: struts.xml配置文件,必须以struts.xml命名,且放在src目录下[配置] 每次请求action时,都创建action实例[单例/多例] action类一成不变的直接或间接继续ActionSupport类[类层面] action类中的业务控制方法总是相类似的签名且无参[方法层面] action类中,接收参数要用成员变量和对应的set方法或set/get方法[成员变量层面] 1.什么是springmvc,它与spring有什么关

Spring MVC系列:(11)返回JSON

1.引入jar包 jackson-core-asl-1.9.11.jar jackson-mapper-asl-1.9.11.jar 2.配置springmvc.xml     <!-- 基于注解的适配器 -->     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">         <property name=&qu