问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在springmvc+mybatis中做ajax请求

发布网友 发布时间:2022-04-08 04:06

我来回答

3个回答

懂视网 时间:2022-04-08 08:27

开发环境:

Eclipse Java EE IDE for Web Developers.
Version: Luna Service Release 2 (4.4.2)
Build id: 20150219-0600

JDK版本:

jdk1.6.0_45

本文工程免费下载

工程的其它参数:

技术分享

1、用到的JAR包

json使用的包。这里下载

spring+sprngMvc的包。

mybatis的包

mysql连接的包

logger的包(日记 打印的)

如下:

技术分享

2、需要的外部js

jquery-1.11.3.min.js

3、项目结构

这是还没有展开的

技术分享

然后把各个都展开:

技术分享


其中src放置java的文件、config放置SpringMVC+Spring+Mybatis的配置文件以及日记打印的log4j.properties

web-inf下面:js用来放置调用 的js文件,lib就是最上面说的jar包的位置,view是各个jsp文件

二、编程

2.1 java代码

这里分了5层,按照标准的web工程来

1、domain层

这里是使用Mybatis Generator自动生成的:User.java

package com.lin.domain;

public class User {
 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database column t_user.USER_ID
 *
 * @mbggenerated
 */
 private Integer userId;

 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database column t_user.USER_NAME
 *
 * @mbggenerated
 */
 private String userName;

 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database column t_user.USER_PASSWORD
 *
 * @mbggenerated
 */
 private String userPassword;

 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database column t_user.USER_EMAIL
 *
 * @mbggenerated
 */
 private String userEmail;

 /**
 * This method was generated by MyBatis Generator.
 * This method returns the value of the database column t_user.USER_ID
 *
 * @return the value of t_user.USER_ID
 *
 * @mbggenerated
 */
 public Integer getUserId() {
 return userId;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method sets the value of the database column t_user.USER_ID
 *
 * @param userId the value for t_user.USER_ID
 *
 * @mbggenerated
 */
 public void setUserId(Integer userId) {
 this.userId = userId;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method returns the value of the database column t_user.USER_NAME
 *
 * @return the value of t_user.USER_NAME
 *
 * @mbggenerated
 */
 public String getUserName() {
 return userName;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method sets the value of the database column t_user.USER_NAME
 *
 * @param userName the value for t_user.USER_NAME
 *
 * @mbggenerated
 */
 public void setUserName(String userName) {
 this.userName = userName == null ? null : userName.trim();
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method returns the value of the database column t_user.USER_PASSWORD
 *
 * @return the value of t_user.USER_PASSWORD
 *
 * @mbggenerated
 */
 public String getUserPassword() {
 return userPassword;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method sets the value of the database column t_user.USER_PASSWORD
 *
 * @param userPassword the value for t_user.USER_PASSWORD
 *
 * @mbggenerated
 */
 public void setUserPassword(String userPassword) {
 this.userPassword = userPassword == null ? null : userPassword.trim();
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method returns the value of the database column t_user.USER_EMAIL
 *
 * @return the value of t_user.USER_EMAIL
 *
 * @mbggenerated
 */
 public String getUserEmail() {
 return userEmail;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method sets the value of the database column t_user.USER_EMAIL
 *
 * @param userEmail the value for t_user.USER_EMAIL
 *
 * @mbggenerated
 */
 public void setUserEmail(String userEmail) {
 this.userEmail = userEmail == null ? null : userEmail.trim();
 }
}
然后还有一个example文件:UserExample.java

package com.lin.domain;

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

public class UserExample {
 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database table t_user
 *
 * @mbggenerated
 */
 protected String orderByClause;

 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database table t_user
 *
 * @mbggenerated
 */
 protected boolean distinct;

 /**
 * This field was generated by MyBatis Generator.
 * This field corresponds to the database table t_user
 *
 * @mbggenerated
 */
 protected List<Criteria> oredCriteria;

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public UserExample() {
 oredCriteria = new ArrayList<Criteria>();
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public void setOrderByClause(String orderByClause) {
 this.orderByClause = orderByClause;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public String getOrderByClause() {
 return orderByClause;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public void setDistinct(boolean distinct) {
 this.distinct = distinct;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public boolean isDistinct() {
 return distinct;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public List<Criteria> getOredCriteria() {
 return oredCriteria;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public void or(Criteria criteria) {
 oredCriteria.add(criteria);
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public Criteria or() {
 Criteria criteria = createCriteriaInternal();
 oredCriteria.add(criteria);
 return criteria;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public Criteria createCriteria() {
 Criteria criteria = createCriteriaInternal();
 if (oredCriteria.size() == 0) {
  oredCriteria.add(criteria);
 }
 return criteria;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 protected Criteria createCriteriaInternal() {
 Criteria criteria = new Criteria();
 return criteria;
 }

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public void clear() {
 oredCriteria.clear();
 orderByClause = null;
 distinct = false;
 }

 /**
 * This class was generated by MyBatis Generator.
 * This class corresponds to the database table t_user
 *
 * @mbggenerated
 */
 protected abstract static class GeneratedCriteria {
 protected List<Criterion> criteria;

 protected GeneratedCriteria() {
  super();
  criteria = new ArrayList<Criterion>();
 }

 public boolean isValid() {
  return criteria.size() > 0;
 }

 public List<Criterion> getCriteria() {
  return criteria;
 }

 protected void addCriterion(String condition) {
  if (condition == null) {
  throw new RuntimeException("Value for condition cannot be null");
  }
  criteria.add(new Criterion(condition));
 }

 protected void addCriterion(String condition, Object value, String property) {
  if (value == null) {
  throw new RuntimeException("Value for " + property + " cannot be null");
  }
  criteria.add(new Criterion(condition, value));
 }

 protected void addCriterion(String condition, Object value1, Object value2, String property) {
  if (value1 == null || value2 == null) {
  throw new RuntimeException("Between values for " + property + " cannot be null");
  }
  criteria.add(new Criterion(condition, value1, value2));
 }

 public Criteria andUserIdIsNull() {
  addCriterion("USER_ID is null");
  return (Criteria) this;
 }

 public Criteria andUserIdIsNotNull() {
  addCriterion("USER_ID is not null");
  return (Criteria) this;
 }

 public Criteria andUserIdEqualTo(Integer value) {
  addCriterion("USER_ID =", value, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdNotEqualTo(Integer value) {
  addCriterion("USER_ID <>", value, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdGreaterThan(Integer value) {
  addCriterion("USER_ID >", value, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
  addCriterion("USER_ID >=", value, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdLessThan(Integer value) {
  addCriterion("USER_ID <", value, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdLessThanOrEqualTo(Integer value) {
  addCriterion("USER_ID <=", value, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdIn(List<Integer> values) {
  addCriterion("USER_ID in", values, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdNotIn(List<Integer> values) {
  addCriterion("USER_ID not in", values, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdBetween(Integer value1, Integer value2) {
  addCriterion("USER_ID between", value1, value2, "userId");
  return (Criteria) this;
 }

 public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
  addCriterion("USER_ID not between", value1, value2, "userId");
  return (Criteria) this;
 }

 public Criteria andUserNameIsNull() {
  addCriterion("USER_NAME is null");
  return (Criteria) this;
 }

 public Criteria andUserNameIsNotNull() {
  addCriterion("USER_NAME is not null");
  return (Criteria) this;
 }

 public Criteria andUserNameEqualTo(String value) {
  addCriterion("USER_NAME =", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameNotEqualTo(String value) {
  addCriterion("USER_NAME <>", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameGreaterThan(String value) {
  addCriterion("USER_NAME >", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameGreaterThanOrEqualTo(String value) {
  addCriterion("USER_NAME >=", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameLessThan(String value) {
  addCriterion("USER_NAME <", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameLessThanOrEqualTo(String value) {
  addCriterion("USER_NAME <=", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameLike(String value) {
  addCriterion("USER_NAME like", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameNotLike(String value) {
  addCriterion("USER_NAME not like", value, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameIn(List<String> values) {
  addCriterion("USER_NAME in", values, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameNotIn(List<String> values) {
  addCriterion("USER_NAME not in", values, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameBetween(String value1, String value2) {
  addCriterion("USER_NAME between", value1, value2, "userName");
  return (Criteria) this;
 }

 public Criteria andUserNameNotBetween(String value1, String value2) {
  addCriterion("USER_NAME not between", value1, value2, "userName");
  return (Criteria) this;
 }

 public Criteria andUserPasswordIsNull() {
  addCriterion("USER_PASSWORD is null");
  return (Criteria) this;
 }

 public Criteria andUserPasswordIsNotNull() {
  addCriterion("USER_PASSWORD is not null");
  return (Criteria) this;
 }

 public Criteria andUserPasswordEqualTo(String value) {
  addCriterion("USER_PASSWORD =", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordNotEqualTo(String value) {
  addCriterion("USER_PASSWORD <>", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordGreaterThan(String value) {
  addCriterion("USER_PASSWORD >", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordGreaterThanOrEqualTo(String value) {
  addCriterion("USER_PASSWORD >=", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordLessThan(String value) {
  addCriterion("USER_PASSWORD <", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordLessThanOrEqualTo(String value) {
  addCriterion("USER_PASSWORD <=", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordLike(String value) {
  addCriterion("USER_PASSWORD like", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordNotLike(String value) {
  addCriterion("USER_PASSWORD not like", value, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordIn(List<String> values) {
  addCriterion("USER_PASSWORD in", values, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordNotIn(List<String> values) {
  addCriterion("USER_PASSWORD not in", values, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordBetween(String value1, String value2) {
  addCriterion("USER_PASSWORD between", value1, value2, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserPasswordNotBetween(String value1, String value2) {
  addCriterion("USER_PASSWORD not between", value1, value2, "userPassword");
  return (Criteria) this;
 }

 public Criteria andUserEmailIsNull() {
  addCriterion("USER_EMAIL is null");
  return (Criteria) this;
 }

 public Criteria andUserEmailIsNotNull() {
  addCriterion("USER_EMAIL is not null");
  return (Criteria) this;
 }

 public Criteria andUserEmailEqualTo(String value) {
  addCriterion("USER_EMAIL =", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailNotEqualTo(String value) {
  addCriterion("USER_EMAIL <>", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailGreaterThan(String value) {
  addCriterion("USER_EMAIL >", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailGreaterThanOrEqualTo(String value) {
  addCriterion("USER_EMAIL >=", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailLessThan(String value) {
  addCriterion("USER_EMAIL <", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailLessThanOrEqualTo(String value) {
  addCriterion("USER_EMAIL <=", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailLike(String value) {
  addCriterion("USER_EMAIL like", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailNotLike(String value) {
  addCriterion("USER_EMAIL not like", value, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailIn(List<String> values) {
  addCriterion("USER_EMAIL in", values, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailNotIn(List<String> values) {
  addCriterion("USER_EMAIL not in", values, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailBetween(String value1, String value2) {
  addCriterion("USER_EMAIL between", value1, value2, "userEmail");
  return (Criteria) this;
 }

 public Criteria andUserEmailNotBetween(String value1, String value2) {
  addCriterion("USER_EMAIL not between", value1, value2, "userEmail");
  return (Criteria) this;
 }
 }

 /**
 * This class was generated by MyBatis Generator.
 * This class corresponds to the database table t_user
 *
 * @mbggenerated do_not_delete_during_merge
 */
 public static class Criteria extends GeneratedCriteria {

 protected Criteria() {
  super();
 }
 }

 /**
 * This class was generated by MyBatis Generator.
 * This class corresponds to the database table t_user
 *
 * @mbggenerated
 */
 public static class Criterion {
 private String condition;

 private Object value;

 private Object secondValue;

 private boolean noValue;

 private boolean singleValue;

 private boolean betweenValue;

 private boolean listValue;

 public String getCondition() {
  return condition;
 }

 public Object getValue() {
  return value;
 }

 public Object getSecondValue() {
  return secondValue;
 }

 public boolean isNoValue() {
  return noValue;
 }

 public boolean isSingleValue() {
  return singleValue;
 }

 public boolean isBetweenValue() {
  return betweenValue;
 }

 public boolean isListValue() {
  return listValue;
 }

 protected Criterion(String condition) {
  super();
  this.condition = condition;
  this.noValue = true;
 }

 protected Criterion(String condition, Object value) {
  super();
  this.condition = condition;
  this.value = value;
  if (value instanceof List<?>) {
  this.listValue = true;
  } else {
  this.singleValue = true;
  }
 }

 protected Criterion(String condition, Object value, Object secondValue) {
  super();
  this.condition = condition;
  this.value = value;
  this.secondValue = secondValue;
  this.betweenValue = true;
 }
 }
}

2、dao层

这里是使用Mybatis Generator自动生成的:UserDao.java

package com.lin.dao;

import com.lin.domain.User;
import com.lin.domain.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface UserDao {
 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int countByExample(UserExample example);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int deleteByExample(UserExample example);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int deleteByPrimaryKey(Integer userId);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int insert(User record);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int insertSelective(User record);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 List<User> selectByExample(UserExample example);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 User selectByPrimaryKey(Integer userId);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int updateByExample(@Param("record") User record, @Param("example") UserExample example);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int updateByPrimaryKeySelective(User record);

 /**
 * This method was generated by MyBatis Generator.
 * This method corresponds to the database table t_user
 *
 * @mbggenerated
 */
 int updateByPrimaryKey(User record);
}

3、service层

这里就设计了两个方法,一个查找和一个插入

接口类:

package com.lin.service;

import com.lin.domain.User;
import com.lin.domain.UserExample;

public interface IRegisterService {
	
	public int insert(User record);
	
	public int countByExample(UserExample example);

}

实现类:

package com.lin.service.impl;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import com.lin.dao.UserDao;
import com.lin.domain.User;
import com.lin.domain.UserExample;
import com.lin.service.IRegisterService;
@Service("registerService")
public class RegisterServiceImpl implements IRegisterService{
	private static Logger logger = Logger.getLogger(RegisterServiceImpl.class); 
	@Resource
	private UserDao userDao;

	@Override
	public int insert(User record) {	
		try {
			return userDao.insert(record);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 0;
	}

	@Override
	public int countByExample(UserExample example) {
		try {
			return userDao.countByExample(example);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 0;
	}

}

2.2 配置文件

技术分享

1、mappp文件配置

这里是使用Mybatis Generator自动生成的:UserMapper.xml。放在src下面的com.lin.mapper包下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lin.dao.UserDao">
 <resultMap id="BaseResultMap" type="com.lin.domain.User">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 <id column="USER_ID" jdbcType="INTEGER" property="userId" />
 <result column="USER_NAME" jdbcType="CHAR" property="userName" />
 <result column="USER_PASSWORD" jdbcType="CHAR" property="userPassword" />
 <result column="USER_EMAIL" jdbcType="CHAR" property="userEmail" />
 </resultMap>
 <sql id="Example_Where_Clause">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 <where>
 <foreach collection="oredCriteria" item="criteria" separator="or">
 <if test="criteria.valid">
  <trim prefix="(" prefixOverrides="and" suffix=")">
  <foreach collection="criteria.criteria" item="criterion">
  <choose>
  <when test="criterion.noValue">
   and ${criterion.condition}
  </when>
  <when test="criterion.singleValue">
   and ${criterion.condition} #{criterion.value}
  </when>
  <when test="criterion.betweenValue">
   and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
  </when>
  <when test="criterion.listValue">
   and ${criterion.condition}
   <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
   #{listItem}
   </foreach>
  </when>
  </choose>
  </foreach>
  </trim>
 </if>
 </foreach>
 </where>
 </sql>
 <sql id="Update_By_Example_Where_Clause">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 <where>
 <foreach collection="example.oredCriteria" item="criteria" separator="or">
 <if test="criteria.valid">
  <trim prefix="(" prefixOverrides="and" suffix=")">
  <foreach collection="criteria.criteria" item="criterion">
  <choose>
  <when test="criterion.noValue">
   and ${criterion.condition}
  </when>
  <when test="criterion.singleValue">
   and ${criterion.condition} #{criterion.value}
  </when>
  <when test="criterion.betweenValue">
   and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
  </when>
  <when test="criterion.listValue">
   and ${criterion.condition}
   <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
   #{listItem}
   </foreach>
  </when>
  </choose>
  </foreach>
  </trim>
 </if>
 </foreach>
 </where>
 </sql>
 <sql id="Base_Column_List">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL
 </sql>
 <select id="selectByExample" parameterType="com.lin.domain.UserExample" resultMap="BaseResultMap">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 select
 <if test="distinct">
 distinct
 </if>
 <include refid="Base_Column_List" />
 from t_user
 <if test="_parameter != null">
 <include refid="Example_Where_Clause" />
 </if>
 <if test="orderByClause != null">
 order by ${orderByClause}
 </if>
 </select>
 <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 select 
 <include refid="Base_Column_List" />
 from t_user
 where USER_ID = #{userId,jdbcType=INTEGER}
 </select>
 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 delete from t_user
 where USER_ID = #{userId,jdbcType=INTEGER}
 </delete>
 <delete id="deleteByExample" parameterType="com.lin.domain.UserExample">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 delete from t_user
 <if test="_parameter != null">
 <include refid="Example_Where_Clause" />
 </if>
 </delete>
 <insert id="insert" parameterType="com.lin.domain.User">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 insert into t_user (USER_ID, USER_NAME, USER_PASSWORD, 
 USER_EMAIL)
 values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=CHAR}, #{userPassword,jdbcType=CHAR}, 
 #{userEmail,jdbcType=CHAR})
 </insert>
 <insert id="insertSelective" parameterType="com.lin.domain.User">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 insert into t_user
 <trim prefix="(" suffix=")" suffixOverrides=",">
 <if test="userId != null">
 USER_ID,
 </if>
 <if test="userName != null">
 USER_NAME,
 </if>
 <if test="userPassword != null">
 USER_PASSWORD,
 </if>
 <if test="userEmail != null">
 USER_EMAIL,
 </if>
 </trim>
 <trim prefix="values (" suffix=")" suffixOverrides=",">
 <if test="userId != null">
 #{userId,jdbcType=INTEGER},
 </if>
 <if test="userName != null">
 #{userName,jdbcType=CHAR},
 </if>
 <if test="userPassword != null">
 #{userPassword,jdbcType=CHAR},
 </if>
 <if test="userEmail != null">
 #{userEmail,jdbcType=CHAR},
 </if>
 </trim>
 </insert>
 <select id="countByExample" parameterType="com.lin.domain.UserExample" resultType="java.lang.Integer">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 select count(*) from t_user
 <if test="_parameter != null">
 <include refid="Example_Where_Clause" />
 </if>
 </select>
 <update id="updateByExampleSelective" parameterType="map">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 update t_user
 <set>
 <if test="record.userId != null">
 USER_ID = #{record.userId,jdbcType=INTEGER},
 </if>
 <if test="record.userName != null">
 USER_NAME = #{record.userName,jdbcType=CHAR},
 </if>
 <if test="record.userPassword != null">
 USER_PASSWORD = #{record.userPassword,jdbcType=CHAR},
 </if>
 <if test="record.userEmail != null">
 USER_EMAIL = #{record.userEmail,jdbcType=CHAR},
 </if>
 </set>
 <if test="_parameter != null">
 <include refid="Update_By_Example_Where_Clause" />
 </if>
 </update>
 <update id="updateByExample" parameterType="map">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 update t_user
 set USER_ID = #{record.userId,jdbcType=INTEGER},
 USER_NAME = #{record.userName,jdbcType=CHAR},
 USER_PASSWORD = #{record.userPassword,jdbcType=CHAR},
 USER_EMAIL = #{record.userEmail,jdbcType=CHAR}
 <if test="_parameter != null">
 <include refid="Update_By_Example_Where_Clause" />
 </if>
 </update>
 <update id="updateByPrimaryKeySelective" parameterType="com.lin.domain.User">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 update t_user
 <set>
 <if test="userName != null">
 USER_NAME = #{userName,jdbcType=CHAR},
 </if>
 <if test="userPassword != null">
 USER_PASSWORD = #{userPassword,jdbcType=CHAR},
 </if>
 <if test="userEmail != null">
 USER_EMAIL = #{userEmail,jdbcType=CHAR},
 </if>
 </set>
 where USER_ID = #{userId,jdbcType=INTEGER}
 </update>
 <update id="updateByPrimaryKey" parameterType="com.lin.domain.User">
 <!--
 WARNING - @mbggenerated
 This element is automatically generated by MyBatis Generator, do not modify.
 -->
 update t_user
 set USER_NAME = #{userName,jdbcType=CHAR},
 USER_PASSWORD = #{userPassword,jdbcType=CHAR},
 USER_EMAIL = #{userEmail,jdbcType=CHAR}
 where USER_ID = #{userId,jdbcType=INTEGER}
 </update>
</mapper>

2、mybatis配置,没有其实也行,因为都 在spring中进行配置了,但是保留一下,以免要用,mybatis-config.xml放在config下面

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>

3、spingMVC配置

<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:context="http://www.springframework.org/schema/context" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
 xmlns:mvc="http://www.springframework.org/schema/mvc" 
 xsi:schemaLocation=" 
 http://www.springframework.org/schema/mvc 
 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
 http://www.springframework.org/schema/beans  
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 http://www.springframework.org/schema/mvc 
 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
 http://www.springframework.org/schema/context 
 http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 
 <!-- 把标记了@Controller注解的类转换为bean --> 
 <context:component-scan base-package="com.lin.controller" /> 
 <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> 
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 
 <!-- 静态资源访问(不拦截此目录下的东西的访问) --> 
 <mvc:annotation-driven /> 
 <mvc:resources location="/WEB-INF//js/" mapping="/js/**" /> 
 <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
 p:prefix="/WEB-INF/views/" p:suffix=".jsp"/> 

 
</beans>

4、spring配置:application.xml放在config下面

<?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:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation=" 
  http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  http://www.springframework.org/schema/aop 
  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<!-- 配置数据源 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/learning" />
		<property name="username" value="root" />
		<property name="password" value="christmas258@" />
	</bean>

	<!-- 自动扫描了所有的XxxxMapper.xml对应的mapper接口文件,这样就不用一个一个手动配置Mpper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage"
			value="com.lin.dao" />
	</bean>

<!-- 配置Mybatis的文件 ,mapperLocations配置**Mapper.xml文件位置,configLocation配置mybatis-config文件位置-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
 <property name="mapperLocations" value="classpath*:com/lin/mapper/**/*.xml"/> 
		<property name="configLocation" value="classpath:mybatis-config.xml" />
		<!-- <property name="typeAliasesPackage" value="com.tiantian.ckeditor.model" 
			/> -->
	</bean>

	<!-- 自动扫描注解的bean -->
	<context:component-scan base-package="com.lin.controller" />
		<context:component-scan base-package="com.lin.service.impl" />

</beans>

5、日志打印配置:log4j.properties放在config下面

log4j.rootLogger =DEBEG,stdout,debug
 
 
log4j.appender.stdout = org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target = System.out 
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 
 
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG 

6、web文件配置,放在WebContent下面

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
 <display-name>JsLearning3</display-name>
 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 <welcome-file>index.htm</welcome-file>
 <welcome-file>index.jsp</welcome-file>
 <welcome-file>default.html</welcome-file>
 <welcome-file>default.htm</welcome-file>
 <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 
 <!-- Spring 容器加载 --> 
 <listener> 
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
 </listener> 
 <context-param> 
 <param-name>contextConfigLocation</param-name> 
 <param-value>classpath:application.xml</param-value> 
 </context-param> 
 
 <!-- 统一设置编码,防止出现中文乱码 --> 
 	<filter>
		<filter-name>Set Character Encoding</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>Set Character Encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
 
 <!-- SpringMVC的前端控制器 --> 
 <servlet> 
 <servlet-name>dispatcherServlet</servlet-name> 
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
 <!-- 设置自己定义的控制器xml文件 --> 
 <init-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>classpath*:spring-servlet.xml</param-value> 
 </init-param> 
 <load-on-startup>1</load-on-startup> 
 </servlet> 
 <!-- Spring MVC配置文件结束 --> 
 
 <!-- 拦截设置 --> 
 <servlet-mapping> 
 <servlet-name>dispatcherServlet</servlet-name> 
 <!-- 由SpringMVC拦截所有请求 --> 
 <url-pattern>/</url-pattern> 
 </servlet-mapping> 
 
 <!-- webAppRootKey:值缺省为webapp.root,当tomcat下部署多个应用时(每个都用到了log4j), 每个应用的web.xml中都要配置该参数,该参数与Log4j.xml文件中的${webapp.root}
 否则每个应用的webAppRootKey值都相同,就会引起冲突
 -->
 <context-param>
 <param-name>webAppRootKey</param-name>
 <param-value>webApp.root</param-value>
 </context-param>
 <!-- log4jConfigLocation:log4j配置文件存放路径 -->
 <context-param>
 <param-name>log4jConfigLocation</param-name>
 <param-value>classpath:log4j.properties</param-value>
 </context-param>
 <!-- 3000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;这样便于日志存放位置的改变 --> 
 <context-param> 
  <param-name>log4jRefreshInterval</param-name> 
  <param-value>3000</param-value> 
 </context-param> 
 <listener>
 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>
</web-app>

三、web页面编写


技术分享

1、使用到的js编程

var process_request = "<img src=‘loading.gif‘ width=‘16‘ height=‘16‘ border=‘0‘ align=‘absmiddle‘>正在数据处理中..."; 
var username_empty = "<span style=‘COLOR:#ff0000‘> × 用户名不能为空!</span>"; 
var username_shorter = "<span style=‘COLOR:#ff0000‘> × 用户名长度不能少于 3 个字符。</span>"; 
var username_longer = "<span style=‘COLOR:#ff0000‘> × 用户名长度不能大于 30个字符。</span>"; 
var username_invalid = "- 用户名只能是由字母数字以及下划线组成。"; 
var username_have_register = "<span style=‘COLOR:#ff0000‘> × 用户名已经存在,请重新输入!</span>"; 
var username_can_register="<span style=‘COLOR:#006600‘> √ 恭喜您!该用户名可以注册!</span>"; 
var password_empty = "<span style=‘COLOR:#ff0000‘> × 登录密码不能为空。</span>"; 
var password_shorter_s = "<span style=‘COLOR:#ff0000‘> × 登录密码不能少于 6 个字符。</span>"; 
var password_shorter_m = "<span style=‘COLOR:#ff0000‘> × 登录密码不能多于 30 个字符。</span>"; 
var confirm_password_invalid = "<span style=‘COLOR:#ff0000‘> × 两次输入密码不一致!</span>"; 
var email_empty = "<span style=‘COLOR:#ff0000‘> × 邮箱不能为空!</span>"; 
var email_invalid = "<span style=‘COLOR:#ff0000‘> × 邮箱格式出错!</span>"; 
var email_have_register = "<span style=‘COLOR:#ff0000‘> × 该邮箱已被注册! </span>"; 
var email_can_register = "<span style=‘COLOR:#006600‘> √ 邮箱可以注册!</span>"; 
var agreement_no = "<span style=‘COLOR:#ff0000‘> × 您没有接受协议</span>"; 
var agreement_yes= "<span style=‘COLOR:#006600‘> √ 已经接受协议</span>"; 
var info_can="<span style=‘COLOR:#006600‘> √ 可以注册!</span>"; 
var info_right="<span style=‘COLOR:#006600‘> √ 填写正确!</span>"; 
var name_flag=false;
var email_flag=false;
var password_flag=false;
var accept_flag=false;

$(function(){
	change_submit();	
	if(document.getElementById("agreement").checked){
	 alert("checkbox is checked");
	}
}); 

/*
 * 获取工程的路径
 */
function getRootPath() {
	var pathName = window.location.pathname.substring(1);
	var webName = pathName == ‘‘ ? ‘‘ : pathName.substring(0, pathName
			.indexOf(‘/‘));
	return window.location.protocol + ‘//‘ + window.location.host + ‘/‘
			+ webName + ‘/‘;
}
/*
 * 用户名检测
 */
function checkUserName(obj) {
	if (checks(obj.value) == false) {
		showInfo("username_notice", username_invalid);
	} else if (obj.value.length < 1) {
		showInfo("username_notice", username_empty);
	}else if (obj.value.length < 3) {
		showInfo("username_notice", username_shorter);
	} else if(obj.value.length>30){
		showInfo("username_notice", username_longer);
 }else { 	
		// 调用Ajax函数,向服务器端发送查询
 $.ajax({ //一个Ajax过程
 		type: "post", //以post方式与后台沟通
 		url :getRootPath()+"/register/checkUserName", //与此页面沟通
 		dataType:‘json‘,//返回的值以 JSON方式 解释
 		data: ‘userName=‘+obj.value, //发给的数据
 		success: function(json){//如果调用成功
 			if(json.flag){
 				showInfo("username_notice", username_have_register);
 			}else {
 				showInfo("username_notice", username_can_register);
 				name_flag=true;
 				change_submit();
 				return;
 			}
 		} 	
 });	
	}
	name_flag=false;
	change_submit();
} 
/*
 * 用户名检测是否包含非法字符
 */
function checks(t) {
	szMsg = "[#%&‘\"\,;:=!^@]"
	for (i = 1; i < szMsg.length + 1; i++) {
		if (t.indexOf(szMsg.substring(i - 1, i)) > -1) {
			return false;
		}
	}
	return true;
}
/*
 * 邮箱检测
 */
 function checkEmail(email) {
	var re = /^(w-*.*)+@(w-?)+(.w{2,})+$/
	if (email.value.length < 1) {
		showInfo("email_notice", email_empty);
	} else if (!re.test(email.value)) {
		email.className = "FrameDivWarn";
		showInfo("email_notice", email_invalid);		
	} else {
		// 调用Ajax函数,向服务器端发送查询
 $.ajax({ //一个Ajax过程
 		type: "post", //以post方式与后台沟通
 		url :getRootPath()+"/register/checkEmail", //与此页面沟通
 		dataType:‘json‘,//返回的值以 JSON方式 解释
 		data: ‘email=‘+email.value, //发给的数据
 		success: function(json){//如果调用成功
 			if(json.flag){
 				showInfo("email_notice", email_have_register);
 			}else {
 				showInfo("email_notice", email_can_register);
 				email_flag=true;
 				change_submit();
 				return;
 			}
 		} 	
 });
	}
	email_flag=false;
	change_submit();
} 
 


/*
 * 密码检测
 */
 function checkPassword( password ) 
 { 
	 if(password.value.length < 1){
		 password_flag=false;
  showInfo("password_notice",password_empty); 
	 }else if ( password.value.length < 6 ) 
 { 
		 password_flag=false;
  showInfo("password_notice",password_shorter_s); 
 } 
 else if(password.value.length > 30){ 
 	 password_flag=false;
  showInfo("password_notice",password_shorter_m); 
  } 
 else 
 { 
  showInfo("password_notice",info_right); 
 } 
	 change_submit();
 } 
 
 /*
 * 密码确认检测
 */
 function checkConformPassword(conform_password) 
 { 
	 password = $("#password").val(); 
	 if (password.length < 1) {		 
  showInfo("conform_password_notice",password_empty); 
		 
	 } else if ( conform_password.value!= password) 
 { 
  showInfo("conform_password_notice",confirm_password_invalid); 
 } 
 else 
 { 
  showInfo("conform_password_notice",info_right); 
			password_flag=true;
			change_submit();
			return;
 } 
	 password_flag=false;
	change_submit();

 }
 
 /*
 * 检测密码强度检测
 */
 function checkIntensity(pwd) 
 { 
 var Mcolor = "#FFF",Lcolor = "#FFF",Hcolor = "#FFF"; 
 var m=0; 
 
 var Modes = 0; 
 for (i=0; i<pwd.length; i++) 
 { 
 var charType = 0; 
 var t = pwd.charCodeAt(i); 
 if (t>=48 && t <=57) 
 { 
 charType = 1; 
 } 
 else if (t>=65 && t <=90) 
 { 
 charType = 2; 
 } 
 else if (t>=97 && t <=122) 
 charType = 4; 
 else 
 charType = 4; 
 Modes |= charType; 
 } 
 
 for (i=0;i<4;i++) 
 { 
 if (Modes & 1) m++; 
 Modes>>>=1; 
 } 
 
 if (pwd.length<=4) 
 { 
 m = 1; 
 } 
 
 switch(m) 
 { 
 case 1 : 
 Lcolor = "2px solid red"; 
 Mcolor = Hcolor = "2px solid #DADADA"; 
 break; 
 case 2 : 
 Mcolor = "2px solid #f90"; 
 Lcolor = Hcolor = "2px solid #DADADA"; 
 break; 
 case 3 : 
 Hcolor = "2px solid #3c0"; 
 Lcolor = Mcolor = "2px solid #DADADA"; 
 break; 
 case 4 : 
 Hcolor = "2px solid #3c0"; 
 Lcolor = Mcolor = "2px solid #DADADA"; 
 break; 
 default : 
 Hcolor = Mcolor = Lcolor = ""; 
 break; 
 } 
 document.getElementById("pwd_lower").style.borderBottom = Lcolor; 
 document.getElementById("pwd_middle").style.borderBottom = Mcolor; 
 document.getElementById("pwd_high").style.borderBottom = Hcolor; 
 }
 
//--------------注册协议复选框状态检测---------------------// 
 function checkAgreement(obj){ 	 
	if(document.getElementById("agreement").checked){
		 showInfo("agreement_notice",agreement_yes); 
		accept_flag=true;
		change_submit();
		}else{
		showInfo("agreement_notice",agreement_no); 
			
		}
/*	 if($("#agreement").attr("checked")=="checked"){
		 alert(‘选中‘);
	 }*/
/* if (document.formUser.agreement.checked==false) 
 { 
 showInfo("agreement_notice",checkAgreement); 
 } else { 
 showInfo("agreement_notice",info_right); 
 } */ 
 }
 /*
 * 按钮状态设置
 */ 
function change_submit() 
{ 	
	if(name_flag&&email_flag&&password_flag&&accept_flag){
		 document.forms[‘formUser‘].elements[‘Submit1‘].disabled = ‘‘; 
	}
 else 
 { 
  document.forms[‘formUser‘].elements[‘Submit1‘].disabled = ‘disabled‘; 
 } 
} 
/*
 * 公用程序
 */ 
 function showInfo(target,Infos){ 
 document.getElementById(target).innerHTML = Infos; 
 } 
 function showclass(target,Infos){ 
 document.getElementById(target).className = Infos; 
 } 

2、注册页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.11.3.min.js" ></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/registerCheck.js" ></script>
<title>Ajax+SpringMVC+Spring+MyBatis+Mysql注册验证实例</title>
</head>
<body> 
<div id="reg"> 
<FORM name="formUser" action="<%=request.getContextPath()%>/register/successed" method=post> 
 <BR> 
 <TABLE width="100%" align=center border=0> 
 <TBODY> 
 <TR> 
 <TD align=right width="15%"><STRONG>用户名:</STRONG></TD> 
 <TD width="57%"><INPUT id="username" onBlur="checkUserName(this)" 
 name="username"> 
  <SPAN id="username_notice" >*</SPAN></TD> 
 </TR> 
 <TR> 
 <TD align=right><STRONG>邮箱:</STRONG></TD> 
 <TD><INPUT id="email" onBlur="checkEmail(this)" name="email"> 
  <SPAN id=email_notice >*</SPAN></TD> 
 </TR> 
 <TR> 
 <TD align=right><STRONG>密码:</STRONG></TD> 
 <TD><INPUT id="password" onBlur="checkPassword(this)" 
 onkeyup="checkIntensity(this.value)" type="password" name="password"> 
  <SPAN 
 id=password_notice >*</SPAN></TD> 
 </TR> 
 <TR> 
 <TD align=right><STRONG>密码强度:</STRONG></TD> 
 <TD><TABLE cellSpacing=0 cellPadding=1 width=145 border=0> 
  <TBODY> 
  <TR align=middle> 
  <TD id=pwd_lower width="33%">弱</TD> 
  <TD id=pwd_middle width="33%">中</TD> 
  <TD id=pwd_high width="33%">强</TD> 
  </TR> 
  </TBODY> 
 </TABLE></TD> 
 </TR> 
 <TR> 
 <TD align=right><STRONG>确认密码:</STRONG></TD> 
 <TD><INPUT id="conform_password" onBlur="checkConformPassword(this)" 
 type="password" name="confirm_password"> 
  <SPAN id=conform_password_notice >*</SPAN></TD> 
 </TR> 
 <TR> 
 <TD> </TD> 
 <TD><LABEL> 
  <INPUT type="checkbox" id="agreement" onclick="checkAgreement(this)"> 
  <B>我已看过并接受《<a href="#">用户协议</a>》<SPAN id=agreement_notice >*</SPAN></B></LABEL></TD> 
 </TR> 
 <TR> 
 <TD ><INPUT type=hidden value=act_register name=act></TD> 
 <TD ><input type=submit value=确认注册 name="Submit1" class="anniu" disabled></TD> 
 </TR> 
 <TR> 
 <TD colSpan=2> </TD> 
 </TR> 
 </TBODY> 
 </TABLE> 
</FORM> 
</div>  
</body>
</html>

3、注册成功页面

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册成功</title>
</head>
<body>
<center>
<h1><b>欢迎新用户</b></h1>
用户名:${requestScope.username}<br> 
邮箱:${requestScope.email}<br> 
</center>
</body>
</html>

四、Controller编写

使用SpringMVC就得要自己来写Controller,拦截各个请求,处理后再返回给请求者,放在src下的。com.lin.controller

package com.lin.controller;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.lin.domain.User;
import com.lin.domain.UserExample;
import com.lin.domain.UserExample.Criteria;
import com.lin.service.IRegisterService;

@Controller
public class RegisterController {
	private static Logger logger = Logger.getLogger(RegisterController.class); 
	@Resource
	private IRegisterService registerService;	
	
	@RequestMapping({"/register","/"})
	public String register(){ 
		return "register";
	}
	@RequestMapping(value="/register/checkUserName",method = RequestMethod.POST)
	public String checkUserName(HttpServletRequest request, HttpServletResponse response) throws IOException{
		String userName=(String)request.getParameter("userName");			
		//检验用户名是否存在
		UserExample userExample=new UserExample();
		Criteria conditionCri = userExample.createCriteria();
		conditionCri.andUserNameEqualTo(userName);		
	 int num=registerService.countByExample(userExample);
	 //用户名是否存在的标志
	 boolean flag=false;
	 if(num>0){
	 	flag=true;
	 }		
		//将数据转换成json
		Map<String,Object> map = new HashMap<String,Object>(); 
		map.put("flag", flag); 		 
		String json = JSONObject.fromObject(map).toString(); 		
		//将数据返回
		response.setCharacterEncoding("UTF-8");
		response.flushBuffer();
		response.getWriter().write(json);
		response.getWriter().flush(); 
		response.getWriter().close();
		return null;
	}
	
	@RequestMapping(value="/register/checkEmail",method = RequestMethod.POST)
	public String checkEmail(HttpServletRequest request, HttpServletResponse response) throws IOException{
		String email=(String)request.getParameter("email");			
		//检验邮箱是否存在
		UserExample userExample=new UserExample();
		Criteria conditionCri = userExample.createCriteria();
		conditionCri.andUserEmailEqualTo(email);		
	 int num=registerService.countByExample(userExample);
	 //用户名是否存在的标志
	 boolean flag=false;
	 if(num>0){
	 	flag=true;
	 }		
		//将数据转换成json
		Map<String,Object> map = new HashMap<String,Object>(); 
		map.put("flag", flag); 		 
		String json = JSONObject.fromObject(map).toString(); 		
		//将数据返回
		response.setCharacterEncoding("UTF-8");
		response.flushBuffer();
		response.getWriter().write(json);
		response.getWriter().flush(); 
		 




                                        

热心网友 时间:2022-04-08 05:35

两种方式:1、通过response写回去,例如response.getWriter().write("1111111");2、可以通过注解@ResponseBody写回去,例如:@ResponseBody@RequestMapping("/findById.do")public Person findById(String id,HttpServletResponse response)

热心网友 时间:2022-04-08 06:53

两种方式:1、通过response写回去,例如response.getWriter().write("1111111");2、可以通过注解@ResponseBody写回去,例如:@ResponseBody@RequestMapping("/findById.do")public Person findById(String id,HttpServletResponse response) {Person person = new Person();
person.setName("shaye");....return person;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在excel中输入产品序号如何直接引出相应的信息 excel表格输序号自动出现内容 戏剧教育主要学什么内容 戏剧教育专业就业前景和就业方向怎么样 戏剧教育专业学什么 2025就业前景怎么样 戏剧教育学什么 戏剧教育专业是本科还是专科 戏剧教育专业要读多少年 戏剧教育是什么专业 贵州省合医在浙江省能直接报销吗 帮我关掉老黄历的通知铃声 帮我关掉月亮出自哪里 退休之后,养老金的多少跟什么有关? 请帮我关掉中国银行个人短信通知 退休后养老保险按什么标准发放 请帮我关掉中国银行个人短信提醒 退休之后能领取养老保险吗 有银行工作人员打电话说给我关掉海外使用银行卡的业务是真的银行人员吗? 小度小度你为什么把网络给我关掉 你要给我关掉 女生说晚安,帮我关掉月亮该怎么回复呢? 帮我关掉中国银行个人短信提醒业务 用着好好的借呗怎么就给我关掉了 美的家用中央空调好还是格力中央空调好?哪个牌子更值得入手? 介绍几个历史悠久的化妆品品牌 世界十大化妆品品牌 压缩文件太大(750M)发送不到邮箱怎么办? 为什么我的电脑 邮箱里面上传不了压缩文件! 文件太大压缩后用邮箱都发不过去怎么办? 请问我用邮箱发送RAR文件提示发送失败,怎么回事?提示如下 支付宝备用金欠500 阿里平台能给我关掉吗? 联通流量超过100g给我关闭了怎么办? 我的抖音,我都不知道什么情况,给我关掉了,我就想要一个解释,到底是哪个视频? 企业职工退休后还需要缴养老保险 帮我关闭省电模式 系统哪些是不用的端口,可以给我关闭吗?谢谢了,大神帮忙啊 养老保险退休后拿多少钱 请帮我关闭中国银行个人短信提醒 山西最顶尖大学 退休之后,养老保险没有交满15年该怎么处理? 山西知名大学有哪些 如果退休之后养老保险缴纳年限没有15年,该如何处理? 山西有好大学有哪些 越南spa一条龙服务,两个技师捏捏胳膊按按手心,这待遇不一般 手机网页怎么设计效果最好 男士spa一条龙,黑社会大哥享受专业按摩服务,这手法我都羡慕了 北京日式SPA都有些什么服务项目? 上装的腰围成衣尺寸设计与下装腰围有何不同? 我今年13岁,身高146cm,上腰围78cm,下腰围70cm,可以戴胸罩吗? 怎么样设置发朋友圈不会在发现-朋友圈显示,而要点进个人资料进入朋友圈才能看到