spring+myibatis+servlet实现登录和注册

项目的框架结构如下:

下面开始框架的搭建:

1.首先建立一个web工程,导入使用的jar包

2.model层中建立用户实体类

 

package com.springMybatis.model;

public class UserInfo {
	private String name;
	private String password;
	private String tel;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("{name:"+name);
		buffer.append("password:"+password);
		buffer.append("tel:"+tel+"}");
		return buffer.toString();
	}
	
}

 

 

 

 

 

3.1建立servlet类-loginservlet.java

 

package com.springMybatis.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.springMybatis.model.UserInfo;
import com.springMybatis.service.UserInfoService;

import net.sf.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class loginservlet extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private UserInfoService userInfoService;
	WebApplicationContext waContext = null;
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		this.waContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
		this.userInfoService = (UserInfoService) waContext.getBean("UserInfoService");
		InputStream is = request.getInputStream();
		BufferedReader in = new BufferedReader(new InputStreamReader(is,
				"UTF-8"));
		StringBuffer buffer = new StringBuffer();
		String line = "";
		while ((line = in.readLine()) != null) {
			buffer.append(line);
		}
		in.close();
		JSONObject obj = JSONObject.fromObject(buffer.toString());
		response.setHeader("Content-type", "text/html;charset=UTF-8"); 
		response.setCharacterEncoding("utf-8"); 
		PrintWriter out = response.getWriter();
		JSONObject jsonresult = new JSONObject();
		
		String name = obj.getString("name");// 
		String password = obj.getString("password");// 
		String tel = obj.getString("tel");// 
		UserInfo userInfo = userInfoService.findByName(name);
		if (userInfo == null) {
			jsonresult.put("code", 1);
			jsonresult.put("msg", "用户名不存在");
		}else {
			if (password.equals(userInfo.getPassword())&&tel.equals(userInfo.getTel())) {
				jsonresult.put("code", 0);
				jsonresult.put("msg", "登录成功");
			}else if (!password.equals(userInfo.getPassword()) && tel.equals(userInfo.getTel())) {
				jsonresult.put("code", 2);
				jsonresult.put("msg", "密码不正确");
			}else if (password.equals(userInfo.getPassword()) && !tel.equals(userInfo.getTel())) {
				jsonresult.put("code", 3);
				jsonresult.put("msg", "电话号码不正确");
			}else if (!password.equals(userInfo.getPassword()) && !tel.equals(userInfo.getTel())) {
				jsonresult.put("code", 4);
				jsonresult.put("msg", "密码和电话号码不正确");
			}
		}
		 out.write(jsonresult.toString());
         out.flush();
         out.close();
	}

	
}

3.2建立servlet类-registerservlet.java

 

 

package com.springMybatis.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.springMybatis.model.UserInfo;
import com.springMybatis.service.UserInfoService;

import net.sf.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class registerservlet extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private UserInfoService userInfoService;
	WebApplicationContext waContext = null;
	
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		this.waContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
		this.userInfoService = (UserInfoService) waContext.getBean("UserInfoService");
		InputStream is = request.getInputStream();
		BufferedReader in = new BufferedReader(new InputStreamReader(is,
				"UTF-8"));
		StringBuffer buffer = new StringBuffer();
		String line = "";
		while ((line = in.readLine()) != null) {
			buffer.append(line);
		}
		in.close();
		JSONObject obj = JSONObject.fromObject(buffer.toString());
		response.setHeader("Content-type", "text/html;charset=UTF-8"); 
		response.setCharacterEncoding("utf-8"); 
		PrintWriter out = response.getWriter();
		JSONObject jsonresult = new JSONObject();
		String name = obj.getString("name");// 
		String password = obj.getString("password");// 
		String tel = obj.getString("tel");// 
		UserInfo userInfo=new UserInfo();
		userInfo.setName(name);
		userInfo.setPassword(password);
		userInfo.setTel(tel);
		UserInfo uInfo = userInfoService.findByName(name);
		if (uInfo != null) {
			jsonresult.put("code", 1);
			jsonresult.put("msg", "用户名存在");
		}else {
			userInfoService.insert(userInfo);
			jsonresult.put("code", 0);
			jsonresult.put("msg", "注册成功");
		}
		 out.write(jsonresult.toString());
         out.flush();
         out.close();
	}
}


4.service层的接口及实现

 

 

package com.springMybatis.service;

import java.util.List;

import com.springMybatis.model.UserInfo;

public interface UserInfoService {
	public int insert(UserInfo userInfo);
	public UserInfo findByName(String name);
	public List<UserInfo> findByTelList(List<String> telList);
	
}

 

package com.springMybatis.service.impl;

import java.util.List;

import com.springMybatis.dao.UserInfoDao;
import com.springMybatis.model.UserInfo;
import com.springMybatis.service.UserInfoService;

public class UserInfoServiceImpl implements UserInfoService{
	private UserInfoDao userInfoDao;
	
	
	@Override
	public int insert(UserInfo userInfo) {
		return this.userInfoDao.insert(userInfo);
	}

	@Override
	public UserInfo findByName(String name) {
		return this.userInfoDao.findByName(name);
	}

	
	public UserInfoDao getUserInfoDao() {
		return userInfoDao;
	}

	public void setUserInfoDao(UserInfoDao userInfoDao) {
		this.userInfoDao = userInfoDao;
	}

	@Override
	public List<UserInfo> findByTelList(List<String> telList) {
		return this.userInfoDao.findByTelList(telList);
	}
	
}


5.dao层的接口和实现

 

 

package com.springMybatis.dao;

import java.util.List;

import com.springMybatis.model.UserInfo;

public interface UserInfoDao {
	 public int insert(UserInfo userInfo);
	 public UserInfo findByName(String name); 
	 public List<UserInfo> findByTelList(List<String> telList);
}

 

package com.springMybatis.dao.impl;

import java.util.List;

import com.springMybatis.dao.UserInfoDao;
import com.springMybatis.model.UserInfo;
import com.springMybatis.mapper.UserInfoMapper;


public class UserInfoDaoImpl implements UserInfoDao{
	private UserInfoMapper userInfoMapper;
	@Override
	public int insert(UserInfo userInfo) {
		return this.userInfoMapper.insert(userInfo);
	}

	@Override
	public UserInfo findByName(String name) {
		return this.userInfoMapper.findByName(name);
	}

	public void setUserInfoMapper(UserInfoMapper userInfoMapper) {
		this.userInfoMapper = userInfoMapper;
	}

	@Override
	public List<UserInfo> findByTelList(List<String> telList) {
		return this.userInfoMapper.findByTelList(telList);
	}

}


6.mapper层的接口和实现,根据UserInfoMapper.xml文件中可以建立相应的数据库表

 

 

package com.springMybatis.mapper;

import java.util.List;

import com.springMybatis.model.UserInfo;

public interface UserInfoMapper {
	int insert(UserInfo userInfo);
	UserInfo findByName(String name); 
	List<UserInfo> findByTelList(List<String> telList);
}

 

<?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.springMybatis.mapper.UserInfoMapper">
 	<resultMap id="UserResultMap" type="com.springMybatis.model.UserInfo">
 		 <result column="name" jdbcType="VARCHAR" property="name" />
 		 <result column="password" jdbcType="VARCHAR" property="password" />
 		 <result column="tel" jdbcType="VARCHAR" property="tel" />
 	</resultMap>
 	<insert id="insert" parameterType="com.springMybatis.model.UserInfo">
 		insert into tab_user(name,password,tel) values(#{name},#{password},#{tel})
 	</insert>
 	<select id="findByName" parameterType="String" resultMap="UserResultMap">  
        select * from tab_user where name=#{name}
    </select> 
    <update id="update" parameterType="com.springMybatis.model.UserInfo">
    	update tab_user 
    	<set>
    		<if test="password != null and password !=''">
    			password=#{password}
    		</if>
    		<if test="tel != null and tel ! = ''">
    			tel=#{tel}
    		</if>
    	</set>
    	<where>
    		<if test="name != null and name!= ''">
    			name=#{name}
    		</if>
    	</where>
    </update>
    <select id="findByTelList" resultMap="UserResultMap">
    	select * from tab_user
    	where tel in
    	<foreach collection="list" item="tellphone" open="(" separator="," close=")">
    		#{tellist}
    	</foreach>
    </select>
 </mapper>


7.重点,配置spring的配置文件applicationContext.xml

 

配置文件中,分别对service,dao,mapper进行bean的注入

 

<?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:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
         <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
         <property name="url" value="jdbc:mysql://localhost:3306/数据库名称"></property>
         <property name="username" value="用户名"></property>
     	 <property name="password" value="密码"></property>
    </bean>
    
    
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" /> 
    </bean>
    
    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- <property name="configLocation" value="classpath:MyBatis-Configuration.xml"></property> -->
        <property name="dataSource" ref="dataSource" />
    </bean>
    
	<bean id="UserInfoMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.springMybatis.mapper.UserInfoMapper"></property>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean> 
	<bean id="UserInfoDao" class="com.springMybatis.dao.impl.UserInfoDaoImpl">
		<property name="UserInfoMapper" ref="UserInfoMapper"></property>
	</bean>
	<bean id="UserInfoService" class="com.springMybatis.service.impl.UserInfoServiceImpl">
		<property name="UserInfoDao" ref="UserInfoDao"></property>
	</bean>

</beans>


8.web.xml文件的配置,配置spring文件的路径和servlet,其中classpath的路径为src下

 

 

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>user_basic</display-name>
  
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.springMybatis.servlet.loginservlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>register</servlet-name>
    <servlet-class>com.springMybatis.servlet.registerservlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>register</servlet-name>
    <url-pattern>/registerServlet</url-pattern>
  </servlet-mapping>
  
  
  <context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
<!-- 配置上下文监听 -->
  <listener>
 	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>


9.登录的注册的页面,使用ajax请求

 

 

<%@ 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 src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/md5.js" type="text/javascript"></script>
<title>Insert title here</title>
</head>
<body>
	<form id="form1">
     <label for='name' style="font-family: 宋体, simsun;">用户名:</label><input type='text' name='name' id='name'><span id="namespan"></span><br>
     <label for='password' style="font-family: 宋体, simsun;">密  码:</label><input type='password' name='password' id='password'><span id="pwdspan"></span><br>
     <label for='tel' style="font-family: 宋体, simsun;">手机号:</label><input type='text' name='tel' id='tel'><span id="telspan"></span><br>
     <input type='button' value='登录' onclick='loginUser()'>
     <input type='button' value='注册' onclick='registerUser()'>
	</form>
</body>
<script>

$(document).ready(function(){
	$("#name").focus(function(){
		$("#namespan").html("");
	});
	$("#password").focus(function(){
		$("#pwdspan").html("");
	});
	$("#tel").focus(function(){
		$("#telspan").html("");
	});
});

function loginUser(){
	var name=$("#name").val();
	var password= $("#password").val();
	var pwdlen = password.length;
	var tel= $("#tel").val();
	var tellen = tel.length;
	var bl=true;
	if(name==""){
		$("#namespan").html("用户名不能为空!!");
		$("#namespan").css("color","red");
		bl=false;
	}
	if(pwdlen<6 || 18<pwdlen){
		$("#pwdspan").html("密码长度必须在6~18位之间!!");
		$("#pwdspan").css("color","red");
		bl=false;
	}
	if(isNaN(tel)||tellen!=11){
		$("#telspan").html("请输入正确的手机号码!!");
		$("#telspan").css("color","red");
		bl=false;
	}
	if(!bl){
		return false;
	}
	var telmd5 = null;
	//调用js的hex_md5函数
	telmd5 = hex_md5(password); 
    var user = {
        name:$("#name").val(),
        password:telmd5,
        tel:tel
    };
    $.ajax({
    	url:'loginServlet',
    	type:'post',
        data:JSON.stringify(user),
        
    	contentType : "application/json; charset=utf-8",
        dataType:'json',

        success:function(data){
        	if(data.code==3){
        		$("#tel").val("");
        		alert(data.msg);
        	}else if(data.code==2){
        		$("#password").val("");
        		alert(data.msg);
        	}else if(data.code==1){
        		$("#name").val("");
            	$("#password").val("");
            	$("#tel").val("");
            	alert(data.msg);
        	}else if(data.code==4){
            	$("#password").val("");
            	$("#tel").val("");
            	alert(data.msg);
        	}else if(data.code==0){
        		location.href="loginsuccess.jsp";
        	}
        	
        } 
    });
}

function registerUser(){
	var name=$("#name").val();
	var password= $("#password").val();
	var pwdlen = password.length;
	var tel= $("#tel").val();
	var tellen = tel.length;
	var bl=true;
	if(name==""){
		$("#namespan").html("用户名不能为空!!");
		$("#namespan").css("color","red");
		bl=false;
	}
	if(pwdlen<6 || 18<pwdlen){
		$("#pwdspan").html("密码长度必须在6~18位之间!!");
		$("#pwdspan").css("color","red");
		bl=false;
	}
	if(isNaN(tel)||tellen!=11){
		$("#telspan").html("请输入正确的手机号码!!");
		$("#telspan").css("color","red");
		bl=false;
	}
	if(!bl){
		
		return false;
	}
	
	var telmd5 = null;
	//调用js的hex_md5函数
	telmd5 = hex_md5($("#password").val()); 
    var user = {
        name:$("#name").val(),
        password:telmd5,
        tel:$("#tel").val()
    };
    $.ajax({
        url:'registerServlet',
        contentType : "application/json; charset=utf-8",
        data:JSON.stringify(user),
        type:'post',
        dataType:'json',
        success:function(data){
        	$("#name").val("");
        	$("#password").val("");
        	$("#tel").val("");
        	alert(data.msg);
        } 
    });
}

</script>
</html>

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值