SpringMVC Resetful+Hibernate+MySQL实现增删改查操作

一、Maven构建项目

     该示例采用Maven构建一个Web项目,项目结构如图所示:

SpringMVC Resetful+Hibernate+MySQL实现增删改查操作_第1张图片

       其中,pom.xml文件中依赖如下所示,自动添加相应依赖包,包括Spring MVC、Hibernate、MySQL JDBC等:

<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">
	<modelVersion>4.0.0</modelVersion>
	<groupId>sdd</groupId>
	<artifactId>sdd</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name />
	<description />
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>bean-validator</artifactId>
			<version>3.0-JBoss-4.0.2</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.annotation</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.ejb</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.enterprise.deploy</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.jms</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.management.j2ee</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>javax.persistence</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.resource</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.security.auth.message</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.security.jacc</artifactId>
			<version>3.0.1</version>
			<exclusions>
				<exclusion>
					<artifactId>javax.servlet</artifactId>
					<groupId>org.glassfish</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.servlet.jsp.jstl</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.transaction</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api-osgi</artifactId>
			<version>2.2.1</version>
		</dependency>
		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>jsr311-api</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>jstl-impl</artifactId>
			<version>1.2</version>
			<exclusions>
				<exclusion>
					<artifactId>servlet-api</artifactId>
					<groupId>javax.servlet</groupId>
				</exclusion>
				<exclusion>
					<artifactId>jsp-api</artifactId>
					<groupId>javax.servlet.jsp</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.3</version>
		</dependency>
		<dependency>
			<groupId>javax.xml</groupId>
			<artifactId>webservices-api-osgi</artifactId>
			<version>2.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.jboss.weld</groupId>
			<artifactId>weld-osgi-bundle</artifactId>
			<version>1.0.1-SP3</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-core-asl</artifactId>
			<version>1.9.12</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.12</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.5.0</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.5.0</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.5.0</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>4.3.11.Final</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.20</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>4.0.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.2</version>
			<exclusions>
				<exclusion>
					<groupId>xerces</groupId>
					<artifactId>xerces</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.6</version>
		</dependency>
	</dependencies>
	<build>
		<sourceDirectory>${basedir}/src</sourceDirectory>
		<outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
		<resources>
			<resource>
				<directory>${basedir}/src</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<webappDirectory>${basedir}/WebRoot</webappDirectory>
					<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

二、配置Web.xml

        web.xml配置是整个框架整合的关键,需要配置对Spring的支持、SpringMVC的支持,同时需要解决浏览器对于rest PUT和DELETE请求的支持。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  	<!-- 添加对spring的支持 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	     
    <!-- Spring 刷新Introspector防止内存泄露 -->
     <listener>
         <listener-class>
             org.springframework.web.util.IntrospectorCleanupListener
         </listener-class>
     </listener>

	<!-- Spring MVC配置 -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		 <!-- 不能是/*,否则会报404 -->
		<url-pattern>/</url-pattern> 
	</servlet-mapping>
	
	
	<!-- 浏览器不支持put,delete等method,由该filter将/user?_method=delete转换为标准的http delete方法 -->  
    <filter>  
       <filter-name>HiddenHttpMethodFilter</filter-name>  
       <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
    </filter>  
  
    <filter-mapping>  
       <filter-name>HiddenHttpMethodFilter</filter-name>  
       <!-- spring 名称一定要和servlet-mapping中servlet name一致 -->
       <servlet-name>spring</servlet-name>   
    </filter-mapping>  

	<!-- 指定Spring配置文件位置 -->
    <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
</web-app>

三、配置spring-servlet.xml

        一般以servlet-name来命名,你也可以取其他名字。该文件主要配置Spring MVC,同时需要解决Spring MVC对静态文件的解析过滤,通常放在WEB-INF路径下,具体内容如下:

<?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"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation=" 
                http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
                http://www.springframework.org/schema/context 
                http://www.springframework.org/schema/context/spring-context-4.0.xsd 
                http://www.springframework.org/schema/mvc 
                http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

	<!-- Spring MVC扫描Control -->
	<context:component-scan base-package="com.springmvc.control" />

	<!-- 使用如下两个class激活@RequestMapping annotation -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />


	<!-- 通过mvc:resources设置静态资源,这样servlet就会处理这些静态资源,而不通过控制器 -->
	<!-- 设置不过滤内容,比如:css,jquery,img 等资源文件 -->
	<mvc:resources location="/*.html" mapping="/**.html" />
	<mvc:resources location="/css/*" mapping="/css/**" />
	<mvc:resources location="/js/*" mapping="/js/**" />
	<mvc:resources location="/images/*" mapping="/images/**" />

	<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

	<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
	<bean id="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
			</list>
		</property>
	</bean>

	<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
			</list>
		</property>
	</bean>
</beans>

四、创建并配置jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

五、创建并配置applicationContext.xml文件

     该文件通常放在src目录下

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

	<!-- 注解支持 -->
	<context:annotation-config />

	<!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
	<context:component-scan base-package="com.springmvc.dao,com.springmvc.service">
		<context:exclude-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
	</context:component-scan>

	<!-- JDBC属性文件位置 -->
	<context:property-placeholder location="classpath:jdbc.properties" />

	<!-- MySQL数据库连接 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<!-- 创建sessionFactory工具类 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/springmvc/model/User.hbm.xml</value>
			</list>
		</property>
	</bean>

	<!-- Spring接管Hibernate CRUD操作 -->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- Spring声明式事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 配置事务特性,配置add,delete,update开始的方法,事务传播特性为required -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<!-- REQUIRED 表示 如果存在一个事务,则支持当前事务。如果没有事务则开启 -->
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<!-- 配置那些类的方法进行事务管理,当前com.ssh2.basedao.impl包中的子包, 类中所有方法需要,还需要参考tx:advice的设置 -->
	<aop:config>
		<aop:pointcut id="allManagerMethod"
			expression="execution(* com.springmvc.service.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
	</aop:config>
	
	<!-- 导入SpringMVC Servlet配置文件 -->
	<import resource="classpath*:spring-servlet.xml" />
</beans>

六、编写控制类

        Controller控制类是Spring MVC的核心,类似于Struts2框架中的Action,通过@Controller注解实现Spring的注入,并通过@RequestMapping接收前端映射请求。加入返回值@ResponseBoady注解后,要把对象转换成json格式,缺少转换依赖的jar包,会出现以下异常的情况,需要添加依赖的jar,jackson-core-asl-1.9.12.jar,jackson-mapper-asl-1.9.12.jar问题解决。

Response Status: 406 (Not Acceptable)  

package com.springmvc.control;

import javax.annotation.Resource;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.springmvc.model.User;
import com.springmvc.service.UserService;

/**
 * Scope:表示实例是原型,这样会对每一个请求实例化,保证线程安全 Spring中使用 Controller注解表示该类是控制器
 * Repository注解Dao访问类 Service注解业务逻辑处理类 Resource注解表示使用某个bean资源
 * RequestMapping:表示对该类所有方法的请求URL,前面必须接上/user,如/user/login 表示对login方法的请求访问
 * 
 * @author Administrator
 * 
 */
@Scope("prototype")
@Controller
@RequestMapping("/user")
public class UserControl {

	@Resource(name = "userService")
	private UserService userService;
	private String message;

	/**
	 * 
	 * Spring MVC中使用RequestMapping处理URL请求,
	 *     GET:表示查询;POST:表示添加操作
	 *     PUT:表示修改操作;DELETE:表示删除操作
	 * ResponseBody:表示返回对象或者值;
	 * consumes: 表示前端传过来的数据格式;
	 * produces:表示返回数据格式
	 */
	@RequestMapping(value = "/login", method = RequestMethod.GET, consumes = "application/json", produces = "application/json")
	@ResponseBody
	public User login(User user, Model model) {
		// System.out.println(user.getUsername());
		User u = userService.findUserByNameAndPassword(user);
		return u;
	}

	@RequestMapping(value = "/addUser", method = RequestMethod.POST, produces = "application/json")
	@ResponseBody
	public String addUser(User user) {
		boolean flag = userService.addUser(user);
		if (flag) {
			message = "success";
		} else {
			message = "error";
		}
		return message;
	}

	/**
	 * PathVariable:注解方法参数,表示该参数变量值是通过URL传递的
	 * URL中必须包含该参数变量名,变量名需要相同才能完成变量传递注入
	 */
	@RequestMapping(value = "/deleteUser/{id}", method = RequestMethod.DELETE, produces = "application/json")
	@ResponseBody
	public String deleteUser(@PathVariable Integer id) {
		boolean flag = userService.deleteUser(id);
		if (flag) {
			message = "success";
		} else {
			message = "error";
		}
		return message;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public UserService getUserService() {
		return userService;
	}
}

七、编写业务逻辑类

package com.springmvc.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.springmvc.dao.UserDao;
import com.springmvc.model.User;

@Service(value="userService")
public class UserService {

	@Resource(name="userDao")
	private UserDao userDao;
	
	public User findUserByNameAndPassword (User user) {
		List<User> listUsers = userDao.findByNameAndPassword(user);
		
		if(listUsers.size() > 0) {
			return listUsers.get(0);
		}
		return null;
	}
	
	public User findUserByName (String name) {
        List<User> listUsers = userDao.findUserByName(name);
		if(listUsers.size() > 0) {
			return listUsers.get(0);
		}
		return null;
	}
	
	public boolean deleteUser(Integer id) {
		return userDao.deleteUser(id);
	}
	
	public boolean addUser(User user) {
		return userDao.addUser(user);
	}
	
	public UserDao getUserDao() {
		return userDao;
	}
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
}

八、编写Dao操作类

package com.springmvc.dao;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.springmvc.model.User;

@Repository(value="userDao")
public class UserDao {

	//hibernateTemplate是Spring提供的Hibernate Dao操作类,在applicationContext中已经完成bean注入,所以此处直接
	//可以拿过来使用
	@Resource(name="hibernateTemplate")
	private HibernateTemplate hibernateTemplate;
	
	//根据用户名和密码查询
	public List<User>  findByNameAndPassword (User user) {
	   String queryString = "from User where username = :username and password = :password";
	   String paramNames[] = {"username" , "password"};
	   String paramValues[] = {user.getUsername(),user.getPassword()};
	   
	   //findByNamedParam方法提供hql方法参数查询,避免Sql注入漏洞
	   @SuppressWarnings("unchecked")
	   List<User> listUsers = (List<User>) hibernateTemplate.findByNamedParam(queryString, paramNames, paramValues);
       return listUsers;		
	}
	
	@SuppressWarnings("unchecked")
	public  List<User> findUserByName(String name) {
		List<User> userList = new ArrayList<User>();
		String queryString = "from User where username like:name";
		userList = (List<User>) hibernateTemplate.findByNamedParam(queryString,"name",name);
        return userList;
	}
	
	public boolean  addUser(User user) {
	    try {
	    	hibernateTemplate.save(user);   
		} catch (Exception e) {
           return false;			
		}
	    return true;
	}
	
	public boolean deleteUser(Integer id) {
		try {
			User user = hibernateTemplate.get(User.class, id);
			hibernateTemplate.delete(user);
		} catch (Exception e) {
			return false;
		}
		return true;
	}
	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
}

九、本示例中的Model类

package com.springmvc.model;

public class User {

	private Integer id;
	private String username;
	private String password;
	private String address;
	private String tel;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
}

十、前端JSP页面Ajax请求

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<!-- action uri 前面不能加/ 否则路径变成从根开始  -->
<!-- <script type="text/javascript" src="js/jquery-easyui-1.4.4/jquery.min.js"></script> -->
<script type="text/javascript"
	src="js/jquery-easyui-1.4.4//jquery.min.js"></script>
<script type="text/javascript">
	$(document).ready(
			function() {
				$("#btnQuery").click(
						function() {
							var username = $("#username").val();
							var password = $("#password").val();
							var data = {
								"username" : username,
								"password" : password
							};
							// alert(JSON.stringify(data));
							$.ajax({
								type : "GET",
								url : "user/login",
								dataType : "json", //后台返回值类型
								data : data,
								beforeSubmit : function() {

								},
								success : function(data) {
									alert(data.username + " " + data.password
											+ " " + data.address + " "
											+ data.tel);

								},
								error : function(data) {
									alert("error");
								}
							});
						});
				$("#btnAdd").click(
						function() {
							var username = $("#username").val();
							var password = $("#password").val();
							var address = $("#address").val();
							var tel = $("#tel").val();
							var data = {
								"username" : username,
								"password" : password,
								"address" : address,
								"tel" : tel
							};
							
							$.ajax({
								type : "POST",
								url : "user/addUser",
								dataType : "json", //后台返回值类型
								data : data,
								beforeSubmit : function() {

								},
								success : function(data) {
									if(data == 'success') {
										alert("添加成功");
									}else {
										alert("添加失败");
									}
								},
								error : function(data) {
									alert("error");
								}
							});
						});
				
				
				$("#btnDel").click(
						function() {
							var id = $("#id").val();
							$.ajax({
								type : "DELETE",
								url : "user/deleteUser/"+id,
								dataType : "json", //后台返回值类型
								beforeSubmit : function() {

								},
								success : function(data) {
									if(data == 'success') {
										alert("删除成功");
									}else {
										alert("删除失败");
									}
								},
								error : function(data) {
									alert("error");
								}
							});
						});
			});
</script>
</head>

<body>
	
   <!-- 查询 -->
	用户名:
	<input type="text" id="username" value="xx">
	<br> 密码:
	<input type="password" id="password" value="1233">
	<br>
	<a href="javascript:void(0)" id="btnQuery">查询</a>
	
    <br>
    <!-- 添加 -->
	用户名:
	<input type="text" id="username" value="张三图">
	<br> 密码:
	<input type="password" id="password" value="1233">
	<br> 地址:
	<input type="text" id="address" value="安徽天长">
	<br> 联系方式:
	<input type="password" id="tel" value="1232333">
	<br>
	<input type="button" id="btnAdd" value="提交">

	<br>
	<!-- 删除 -->
	<input type="text" id="id" value="51">
	<input type="button" id="btnDel" value="删除">
	
	<%--
     <form:form action="user/login" method="post">
                 用户名:<input type="text" name="username" value="xx"><br>
                   密码:    <input type="password" name="password" value="1233"><br>
                       用户名:<input type="text" name="address" value="ss"><br>
                   密码:    <input type="password" name="tel" value="1232333"><br>
        <input type="submit" value="提交">
     </form:form>
     
      --%>
	<%--<form:form action="user/deleteUser/50" method="delete">
        <input type="submit" value="提交">
     </form:form>
  --%>
</body>
</html>

        HTTP请求中本身是不支持PUT和DELETE method方法请求的,本文在web.xml中添加了过滤器处理该部分请求,并且通过Ajax发送请求。但是Spring MVC本身也提供了<form:form>标签,通过表单提交的方式发送Restful请求,如上面代码中注释内容所示。只需要在页面前面导入标签库即可。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>





你可能感兴趣的:(spring,mvc,Hibernate,mysql,Restful)