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程序设计有所帮助。

(0)

相关推荐

  • JavaWeb使用Cookie模拟实现自动登录功能(不需用户名和密码)

    其中包含两个jsp文件,分别为login.jsp和index.jsp 代码如下: login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

  • JavaWeb表单注册界面的实现方法

    JavaWeb表单注册界面的实现方法 今天又做了一个注册界面,还是一如既往的从以前的代码copy过来,于是决定总结一下做注册界面的思路,供同学参考. Step1 页面实现 在这一步主要用到了html.css.JavaScript的知识. 1)  html 建立页面基本结构.建议在做html的时候给每个Element都设置id,方便之后的css.JavaScript操作. 2)  css 给节点设置长.宽.边距.边框.背景等样式. 3)  js 设置按钮鼠标悬停时的背景变化等.页面效果实现. St

  • JavaWeb登陆功能实现代码

    本文实例为大家分享了JavaWeb登陆功能的方法,供大家参考,具体内容如下 首先我们要JavaWeb登陆的基本流程:JSP页面发送请求-->Servlet-->Servlet通过调用方法从数据库中得到数据并将结果返回页面. 我们先建立三个jsp页面,包括login.jsp(登陆页面).index.jsp(显示登陆成功后的信息).error.jsp(登录失败的页面),其中后两个页面的内容可以随意写,而login.jsp页面的主要内容如下: <form action="LoginS

  • JavaWeb开发使用Cookie创建-获取-持久化、自动登录、购物记录、作用路径

    1.cookie是啥?随手百度了网友的说说 简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你. 2.cookie在哪里? 3.cookie可以删除吗? 4.cookie实现原理 第一次请求浏览器,在浏览器的cookie存储区,没有co

  • JavaWeb使用Session和Cookie实现登录认证

    后台管理页面往往需要登录才可以进行操作,这时就需要Seession来记录登录状态 要实现起来也是非常简单,只需要自定义一个HandlerInterceptor就行了 自定义的HandlerInterceptor也只有短短几行代码 public class LoginInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpSer

  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

  • JavaWeb实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)

    JavaWeb实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)的实现思路如下所示: 一.该功能有什么作用 大家想想吧.反正总会有这样的需求的.这年头什么需求不会有..呵呵.有时候也不一定是需求,很有可能为了安全也会这么做.例如考试系统,在线聊天系统,很有必要做成这样的吧. 二.实现过程 a.问题分析 在系统中,我们一般都是把登录信息绑定到session中,看来从这入手是可能找到解决办法.说白了,也就是当用户登录时,判断一下这个用户有没有登录,如果登录了,就把以前的那个session清除

  • javaweb登录验证码的实现方法

    本文实例为大家分享了javaweb登录验证码的具体代码,供大家参考,具体内容如下 使用: Controller:生成验证码 @RequestMapping("/user/check.jpg") public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException { // 通知浏览器不要缓存 response.setHeader("Expires&

  • JavaWeb基于Session实现的用户登陆注销方法示例

    前言 Cookie:cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器. 当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据区,这样,web资源处理的就是各自的数据了. Session:session是服务器端技术,利用session技术,服务器在运行时可以为每一个用户的浏览器创建其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在session中,当用户再次去访问服务器中的其

  • javaweb实现app扫码登录功能

    本文为大家分享了javaweb实现app扫码登录的具体代码,供大家参考,具体内容如下 1.web页面主动向服务器索要一张由服务器生成包含维一标识的二维码图片,也可以直接向后台索要一个维一标识,拿到标识后通过js生成二维码.这里本人采用的是第二种方式,至于为什么吗?个人感觉这样方便,后台也不要导入架包,最后将该标识存入List集合中,接下来会用到该标识 2.app扫码后解析二维码内的维一标识,然后再携带该标识跟用户名发回给服务器,服务器接到请求后,遍历List集合,验证该标识是否为本系统生成的,若

随机推荐