Servlet+jsp实现用户登录注册分页功能

首先建user数据库,字段id,username,password,sex,hobby,addr,img
建city数据库,字段id,name,sid
导入utils
package com.baidu.utils;

import org.apache.commons.dbutils.QueryRunner;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JDBCUtils {
private static ComboPooledDataSource c=new ComboPooledDataSource();
private static QueryRunner qr=new QueryRunner©;
public static QueryRunner getQR() {
return qr;
}
}

创建User实体类,City实体类,PageBean分页实体类

package com.baidu.domain;

import java.util.List;

public class PageBean {
private int tr;//每页要显示的行数  我们自己规定 每页显示几行数据
	
	private int trSum;//一共有多少条数据
	
	private int page;//当前是第几页 用户前端页面 传给后台
	/*
	 * 用法:Math.ceil(double x);
	 * 功能:返回大于或等于指定表达式的最小整数  即向上取整
	 * 用例:写分页的时候根据查到的记录总数count和
	 * 每页数据数rows
	 * 求出总共有多少页  这里都定义为int型
	 */
	private int pageSum; //总页码  Math.ceil(trSum/tr)
	
	private List<User> list;

	public PageBean() {
		super();
		// TODO Auto-generated constructor stub
	}

	public PageBean(int tr, int trSum, int page, int pageSum, List<User> list) {
		super();
		this.tr = tr;
		this.trSum = trSum;
		this.page = page;
		this.pageSum = pageSum;
		this.list = list;
	}

	public int getTr() {
		return tr;
	}

	public void setTr(int tr) {
		this.tr = tr;
	}

	public int getTrSum() {
		return trSum;
	}

	public void setTrSum(int trSum) {
		this.trSum = trSum;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getPageSum() {
		return pageSum;
	}

	public void setPageSum(int pageSum) {
		this.pageSum = pageSum;
	}

	public List<User> getList() {
		return list;
	}

	public void setList(List<User> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "PageBean [tr=" + tr + ", trSum=" + trSum + ", page=" + page + ", pageSum=" + pageSum + ", list=" + list
				+ "]";
	}
	
}

写注册.jsp前端界面
register.jsp

<%@ 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">
<title>Insert title here</title>
</head>
<body background="guanli.jpg">
<form action="${pageContext.request.contextPath }/RegisterServlet" method="post" enctype="multipart/form-data">
	账号:<input type="text" name="username"><span id="s1">账号的长度必须是3位以上</span><br>
	密码:<input type="password" name="password"><span id="s2">密码的长度必须是3位以上</span><br>
	重复密码:<input type="repassword" name="repassword"><span id="s3">密码和重复密码必须一致</span><br>
	性别:
		<input type="radio" name="sex" value="男" >男
		<input type="radio" name="sex" value="女">女<br>
	
	爱好:
		<input type="checkbox" name="hobby" class="hobby" value="LOL">LOL
		<input type="checkbox" name="hobby" class="hobby" value="CF">CF
		<input type="checkbox" name="hobby" class="hobby" value="QQ飞车">QQ飞车
		<input type="checkbox" name="hobby" class="hobby" value="DNF">DNF<br>
        地址:
        <select id="sheng" name="sheng">
        <option>---请选择---</option>
        </select>
        <select id="shi" name="shi">
        <option>---请选择---</option>
        </select><br>
	  头像:
	<input type="file" name="file" id="file"><br>
		
	<input type="submit" value="注册">	
	</form>
</body>

<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript">
$.get("/day03/CityServlet",function(msg){
	var sheng=eval("("+msg+")");
	for(var i=0; i<sheng.length; i++){
		$("#sheng").append("<option>"+sheng[i]+"</option>");
	}
});

$("#sheng").change(function(){
	$("#shi").text("");
	$("#shi").append("<option>---请选择---</option>");
	$.post("/day03/CityServlet",{sheng:$(this).val()},function(msg){
		var shi = eval("("+msg+")");
		for(var i=0; i<shi.length; i++){
			$("#shi").append("<option>"+shi[i]+"</option>");
		}
	})
});

//验证的内容
//1.账号的长度
$("#username").blur(function(){
   var un=$(this).val();
   if(un.length>2){
	   $.post("/day03/FindUserServlet",{username:un},function(msg){
		   if(msg=="true"){
			   $("#s1").text("对不起,账号已重复");
		   }else{
			   $("#s1").text("正确");
		   }
	   });
   }else{
	   $("#s1").text("账号的长度不符合要求!");
   }
});

$("#password").blur(function(){
	  var repwd=$(this).val();
	  if(pwd.length>2){
		  $("#s2").text("正确");
	  }else{
		  $("#s2").text("密码的长度不符合要求!");
	  }
})
$("#password").blur(function(){
  var pwd=$("#password").val();
  var repwd=$(this).val();
  if(repwd==pwd){
	  $("#s3").text("正确");
  }else{
	  $("#s3").text("两次密码不一样!");
  }
});
</script>

</html>

写注册servlet
Register.Servlet

package com.baidu.servlet;

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import com.baidu.domain.User;
import com.baidu.service.UserService;



@WebServlet("/RegisterServlet")
@MultipartConfig
public class RegisterServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//乱码
				request.setCharacterEncoding("utf-8");
			    response.setContentType("text/html;charset=utf-8");
			    UserService us=new UserService();
			  //getParameter后台获取前台http页面传递过来的数据
			    String username = request.getParameter("username");
			    String password = request.getParameter("password");
			    String sex = request.getParameter("sex");			   				
			   
				String sheng = request.getParameter("sheng");
				String shi = request.getParameter("shi");
			    String addr = sheng+","+shi;
			    
			    String[] hobbys = request.getParameterValues("hobby");
			    String hobby = "";
				if (hobbys != null) {
					hobby = Arrays.toString(hobbys);
				}	
				
			    Part file = request.getPart("file");
			    
			    long time = System.currentTimeMillis();
			    String img = time+".jpg";
			    
			    String realPath = getServletContext().getRealPath("");
			    
			    file.write(realPath+"/"+img);
			    
			  
			    User u=new User(null, username, password, sex, hobby, addr, img);
			    //由add生成UserService里
			    //public void add(User u) {
			    //ud.add(u, qr);
	            // }
			    us.add(u);
			    //将servlet的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)。
			    request.getRequestDispatcher("/login.jsp").forward(request, response);
			}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

跳转UserService

package com.baidu.service;

import java.util.List;

import org.apache.commons.dbutils.QueryRunner;

import com.baidu.dao.UserDao;
import com.baidu.domain.User;
import com.baidu.domain.PageBean;
import com.baidu.utils.JDBCUtils;

public class UserService {
	//创建dao层对象
		private UserDao ud=new UserDao();
		//获取queryRunner对象
		QueryRunner qr=JDBCUtils.getQR();
		

	public void add(User u) {
	//跳转UserDao
		ud.add(u, qr);
	}
	public List<User> show(PageBean pb) {
		return ud.show(pb,qr);
	}


	public int count1(String username, String sex) {
		return ud.count1(username,sex,qr);
	}

	public List<User> show1(String username, String sex, PageBean pb) {
		return ud.show1(username,sex,pb,qr);
	}

	public User login(String username, String password) {
		
		return ud.login(username, password,qr);
	}
	
}

跳转UserDao写sql语句查询数据库

package com.baidu.dao;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;


import com.baidu.domain.PageBean;
import com.baidu.domain.User;


public class UserDao {

	public void add(User u, QueryRunner qr) {
		//添加语句
				String sql="insert into user value(null,?,?,?,?,?,?);";
				
				Object[] o= {u.getUsername(),u.getPassword(),u.getSex(),u.getHobby(),u.getAddr(),u.getImg()};
			    try {
					qr.update(sql,o);
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

	public int count(QueryRunner qr) {
		String sql="select count(*) from user;";
		try {
			//ScalarHandler:将单个值封装、例如select count(*),求内容的条数
			//如果查出结果为空,返回0,不是null
			Object o = qr.query(sql, new ScalarHandler());
			//int i = (int) qr.query(sql, new ScalarHandler());
			return Integer.parseInt(o.toString());
		} catch (SQLException e) {	
			e.printStackTrace();
		}
		return 0;
	}

	public List<User> show(PageBean pb, QueryRunner qr) {
		String sql="select * from user limit ?,?;";
		/*
		 * Select * from xx limit x,y;
		 *	X:(page-1)*tr
		 *	Y:tr
		 * */
		Object[]o={(pb.getPage()-1)*pb.getTr() , pb.getTr()};
		
		try {
			//返回数组
		  List<User>list=qr.query(sql, new BeanListHandler<User>(User.class),o);
			 return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}



	public int count1(String username, String sex, QueryRunner qr) {
		String sql="select * from user where username like ? and sex=?;";
		 Object[] o={"%"+username+"%",sex};
		try {
			
			//ScalarHandler:将单个值封装、例如select count(*),求内容的条数
			//如果查出结果为空,返回0,不是null
			Object obj = qr.query(sql, new ScalarHandler(),o);
			//int i = (int) qr.query(sql, new ScalarHandler());
			return Integer.parseInt(obj.toString());
		} catch (SQLException e) {	
			e.printStackTrace();
		}
		return 0;
	}

	public List<User> show1(String username, String sex, PageBean pb, QueryRunner qr) {
		String sql="select * from user where username like ? and sex=? limit ?,?;";
		/*
		 * Select * from xx limit x,y;
		 *	X:(page-1)*tr
		 *	Y:tr
		 * */
		Object[]o={"%"+username+"%",sex,(pb.getPage()-1)*pb.getTr() , pb.getTr()};
		
		try {
			//返回数组
		  List<User>list=qr.query(sql, new BeanListHandler<User>(User.class),o);
			 return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}

	public User login(String username, String password, QueryRunner qr) {
		String sql = "select * from user where username=? and password=?;";

		Object[] o = { username, password };

		try {
			return qr.query(sql, new BeanHandler<User>(User.class), o);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
		    }  
	
}


登录.jsp
login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Insert title here</title>
</head>
<body background="1.jpeg">

姓名:<input id="username"><br>
密码:<input id="password"><br>

<input type="button" value="登录" id="submit">
<a href="${pageContext.request.contextPath }/register.jsp">注册</a>

</body>
<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript">
$("#submit").click(function(){
	var un = $("#username").val();
	var pw = $("#password").val();
	$.post("/day03/LoginServlet",{username:un,password:pw},function(msg){;
	if(msg=="true"){
		location.href="/day03/ShowServlet";
	}else{
		alert("账号或密码错误!");
	}
});
});
</script>
</html>

LoginServlet
package com.baidu.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.baidu.dao.UserDao;
import com.baidu.domain.User;
import com.baidu.service.UserService;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//处理中文乱码
	request.setCharacterEncoding("utf-8");
	response.setContentType("text/html;charset=utf-8");
	
	String username=request.getParameter("username");
	String password=request.getParameter("password");
	UserService us=new UserService();
	
	User u =us.login(username,password);
	if(u == null)
	{
		response.getWriter().write("false");
	}else {
		request.getSession().setAttribute("u", u);
		response.getWriter().write("true");
	}
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}
}

跳转UserService
跳转UserDao

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值