JavaWeb 网上书店 注册和登陆功能案例详解
作者:sun_jinhang 发布时间:2022-09-20 02:53:22
标签:JavaWeb,注册,登陆
本文实例讲述了JavaWeb 网上书店 注册和登陆功能。分享给大家供大家参考,具体如下:
工具:Eclipse + Navicat
源码地址:https://github.com/Sunjinhang/JavaWeb
用户实体:简简单单的六个属性,编号、姓名、密码、电话、邮箱、地址。
package Entity;
public class User {
public User(String id, String userName, String password, String phone, String email, String address) {
super();
this.id = id;
this.userName = userName;
this.password = password;
this.phone = phone;
this.email = email;
this.address = address;
}
private String id;
private String userName;
private String password;
private String phone;
private String email;
private String address;
public String getId() {
return id;
}
public void setId(String 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 getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
用户实现登陆注册的一些方法:包含注册、登陆、密码MD5加密、编号随机生成
package Service;
import java.security.MessageDigest;
import java.util.UUID;
import Dao.UserDao;
import Entity.User;
public class UserService extends UserDao{
public void AddUser(User user) {
user.setId(GetUId());
user.setPassword(MD5Encode(user.getPassword()));
Add(user);
}
public User ValidateLogin(String name,String password) {
User user = Validate(name,MD5Encode(password));
return user;
}
//自动给用户生成编号
public static String GetUId()
{
UUID uid = UUID.randomUUID();
String id = uid.toString();
id = id.replace("-", "");
return id;
}
//给用户密码进行MD5加密
public static String MD5Encode(String str)
{
StringBuffer code = new StringBuffer();
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
}
catch(Exception ex) {
ex.printStackTrace();
}
char[] charArr = str.toCharArray();
byte[] byteArr = new byte[charArr.length];
for(int i = 0;i < charArr.length; i++) {
byteArr[i] = (byte)charArr[i];
}
byte[] md5Arr = md5.digest(byteArr);
for(int i = 0;i < md5Arr.length; i++) {
int value = (int)md5Arr[i] & 0xff;
if(value < 16)
{
code.append("0");
}
code.append(Integer.toHexString(value));
}
return code.toString();
}
}
注册功能实现:
静态页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/RegisterServlet" method="post">
<input type="text" placeholder="loginname" required="required" name="name"/>
<br/>
<br/>
<input type ="password" placeholder="password" required="required" name="password"/>
<br/>
<br/>
<input type ="password" placeholder="confirm password" required="required" name="confirmpassword"/>
<br/>
<br/>
<input type ="text" placeholder="phone" required="required" name="phone"/>
<br/>
<br/>
<input type ="text" placeholder="email" required="required" name="email"/>
<br/>
<br/>
<input type ="text" placeholder="address" required="required" name="address"/>
<br/>
<br/>
<input type ="submit" value="提交"/>
<input type="button" value="返回登陆" οnclick="parent.location.href='${pageContext.request.contextPath }/client/head.jsp'">
</form>
</body>
</html>
代码:
package Action;
import java.io.IOException;
import java.io.PrintWriter;
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 Entity.User;
import Service.UserService;
/**
* Servlet implementation class RegisterServlet
*/
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegisterServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String address = request.getParameter("address");
User user = new User("",name,password,phone,email,address);
UserService userService = new UserService();
try {
userService.AddUser(user);
request.setAttribute("message", "注册成功");
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}
登陆功能实现:
静态页面:
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>前台首页</title>
</head>
<frameset rows="25%,*">
<frame src="${pageContext.request.contextPath }/client/head.jsp" name="head">
</frameset>
</html>
head.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页头</title>
</head>
<body style="text-align:center;">
<h1>网上书店</h1>
<br/>
<div>
<a href="${pageContext.request.contextPath }/client/IndexServlet?method=getAll" rel="external nofollow" target="body">首页</a>
<a href="${pageContext.request.contextPath }/client/listcart.jsp" rel="external nofollow" target="body">查看购物车</a>
<a href="${pageContext.request.contextPath }/client/ClientListOrderServlet?userid=${user.id}" rel="external nofollow" target="body"">查看订单</a>
</div>
<div style="float:right;">
<c:if test="${user==null }">
<form action="${pageContext.request.contextPath }/LoginServlet" method="post">
用户名:<input type="text" name="username" style="width:60px;">
密码:<input type="password" name="password" style="width:60px;">
<input type="submit" value="登陆">
<input type="button" value="注册" οnclick="parent.location.href='${pageContext.request.contextPath }/client/register.jsp'">
</form>
</c:if>
<c:if test="${user!=null }">
欢迎您:${user.getUserName() } <a href="${pageContext.request.contextPath }/client/LoginOutServlet" rel="external nofollow" >注销</a>
</c:if>
</div>
</body>
</html>
代码:
package Action;
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 Entity.User;
import Service.UserService;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet(description = "处理登陆事项", urlPatterns = { "/LoginServlet" })
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserService service = new UserService();
User user = service.ValidateLogin(username, password);
if(user == null){
request.setAttribute("message", "登陆失败");
request.getRequestDispatcher("/message.jsp").forward(request, response);
return;
}
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("/client/head.jsp").forward(request, response);
}
}
最终实现的效果:
主界面
注册界面:
登陆成功界面
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/sun_jinhang/article/details/88186090


猜你喜欢
- 近期,Apache SkyWalking 修复了一个隐藏了近4年的Bug - TTL timer 可能失效问题,这个 bug 在 SkyWa
- 我就废话不多说了,大家还是直接看代码吧~<resultMap id="ParentMap" type="
- 前言在前面的学习中,我们基本了解了一些 Canvas 的绘制,那么这一章我们一起复习一下图片的绘制几种方式,和事件的简单交互方式。我们从易到
- 相信最近看过我的文章的朋友对于Microsoft.Extensions.ObjectPool不陌生;复用、池化是在很多高性能场景的优化技巧,
- java static块和构造函数的实例详解构造函数不写时,若该类继续了某个类则会默认集成父类的构造函数。 构造函数在实例化类时执行内部,O
- 一般来说,常用的设计模式有以下八种:单例、工厂、观察者、代理、命令、适配器、合成、访问者单例模式:目的是为了让系统中只有一个调用对象,缺点是
- 本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下1. 轮播控件的组成部分 我们以
- 最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下。 DevExpress中有一个专门
- 一、使用spring initializr创建java工程 1、启动IDEA,新建java工程,使用向导创建一个springboo
- 最近在一本J2EE的书中看到了很不错的对集合框架的说明文章,筛选后发上来和大家共享,集合框架提供管理对象集合的接口和类.它包含接口,类,算法
- 一、应用场景之前做商城应用时,会有对用户资料的设置情况进行限制,如下:(1)用户邮箱,应当只允许输入英文字母,数字和@.两个符号,(2)用户
- Android中SQLite 使用方法详解现在的主流移动设备像android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们
- 代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率。也是程序代码可维护性的重要环节之一。所以我们不是为写注释
- 安卓和苹果的客户端开发中,经常会使用到webview,我们一般做法是将webview加入到native页面中。当我们对页面进行销毁的时候,其
- 目录前言Lottie案例尝试1. 集成依赖2. 添加 LottieAnimationView 加载网络资源3. 加载本地资源4. 循环播放
- Spring使用AOP完成统一结果封装起因:自己写项目的时候忍受不了每个方法都要写一个retrun Result.success();和 r
- 引言在第一篇文章中我们分析了协程启动创建过程启动过程,在本文中,我们将着重剖析协程中协程调度的逻辑流程。主要是分析解答如下2个问题:涉及到协
- Unity OnOpenAsset在Unity中,OnOpenAsset是一个非常有用的回调函数,它可以在用户双击资源文件时自动打开一个编辑
- 在Android Studio中,你可以很快速的使用Parcelable插件进行实体类的序列化的实现,使用该插件后,你的实体类可以快速的实现
- Java有一种特殊线程,守护线程,这种线程优先级特别低,只有在同一程序中的其他线程不执行时才会执行。由于守护线程拥有这些特性,所以,一般用为