注册登录模块

为保持主要知识点脉络清晰,本模块没有使用Ajax技术,所以没有实现注册时光标下移即可验证用户名是否被占用功能。同时省略了客户端的JS验证用户名和密码是否符合规定的功能。注册字段只有两个,昵称和密码,昵称要求唯一,主键自增长,数据库使用MySQL。

先看看模块的文件目录结构:

下面贴上三个Servlet的源代码:

public class CheckCodeServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setContentType("image/jpeg");
		BufferedImage image=new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
		Graphics g=image.getGraphics();
		//System.out.println(g.getClass());
		Random r=new Random();
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.fillRect(0,0,60,20);
		g.setColor(new Color(0,0,0));
		String number=String.valueOf(r.nextInt(99999));
		HttpSession session=request.getSession();
		session.setAttribute("number",number);
		g.drawString(number,5,15);
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.drawLine(r.nextInt(10),r.nextInt(10),40+r.nextInt(20),r.nextInt(20));
		OutputStream out=response.getOutputStream();
		//压缩图片
		JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
		//System.out.println(encoder.getClass());
		encoder.encode(image);
		}

}
public class RegisterServlet extends HttpServlet {
	
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("UTF-8");
		String nickname=request.getParameter("nickname");
		String password=request.getParameter("password");
		String checkcode=request.getParameter("checkcode");
		HttpSession session=request.getSession();
		String number=(String) session.getAttribute("number");
		if(!number.equals(checkcode)){
			request.setAttribute("checkcode_err","验证码填写错误");
			request.getRequestDispatcher("register.jsp").forward(request, response);
			return;
		}
		UserDAO dao=new UserDAO();
		try {
			User user=dao.findByNickname(nickname);
			if(user!=null){
				request.setAttribute("register_err","用户名已经被占用");
				request.getRequestDispatcher("register.jsp").forward(request, response);
			}else{
				User user2=new User(nickname,password);
				dao.save(user2);
				response.sendRedirect("login.jsp");
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServletException(e);
		}
		
	}

}
public class LoginServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("UTF-8");
		String nickname=request.getParameter("nickname");
		String password=request.getParameter("password");
		
		UserDAO dao=new UserDAO();
		try {
			User user=dao.findByNickname(nickname);
			if(user!=null&& user.getPassword().equals(password)){
				HttpSession session=request.getSession();
				session.setAttribute("user",user);
				response.sendRedirect("welcome.jsp");
			}else{
				request.setAttribute("login_err","用户名或者密码错误");
				request.getRequestDispatcher("login.jsp").forward(request, response);
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServletException(e);
		}
		
	}

}
顺便附上四个JSP文件的源代码:

register.jsp:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String info=(String)request.getAttribute("register_err");
String info2=(String)request.getAttribute("checkcode_err");
%>
<h3>用户注册页面</h3>
<form action="register" method="post">
昵称:<input type="text" name="nickname">
<span style="color:red"><%=(info==null? "":info)%></span><br>
密码:<input type="password" name="password"><br>
验证码:<input type="text" name="checkcode" size="8"><img src="checkcode" id="img1">
<a href="javascript:;" 
οnclick="document.getElementById('img1').src='checkcode?'+Math.random()">换一个</a>
<span style="color:red"><%=(info2==null? "":info2)%></span><br>
<input type="submit" value="注册">
</form>
</body>
</html>
login.jsp:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String info=(String)request.getAttribute("login_err");
%>
<h3>登录页面</h3>
<form action="login" method="post">
昵称:<input type="text" name="nickname"><br>
密码:<input type="password" name="password">
<span style="color:red"><%=(info==null? "":info)%></span>
<br>
<input type="submit" value="登录">
</form>
</body>
</html>
welcome.jsp:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="sessionValidate.jsp" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
welcome to my website...
</body>
</html>
sessionValidate.jsp:

<%
Object obj=session.getAttribute("user");
if(obj==null){
    response.sendRedirect("login.jsp");
}
%>
整个模块的打包文件已经上传至我的资源,可以免费下载。sql脚本过于简单,没有给出。IDE为myeclipse。虽然简单,但是菜鸟可以学习学习。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值