项目案例模板之登录注册的实现

项目案例模板之登录注册的实现

案例演示

案例代码

设计表

pom.xml

 <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.11</version>
     <scope>test</scope>
   </dependency>
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.0.5</version>
   </dependency>
   <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
     <scope>provided</scope>
   </dependency>
   <dependency>
     <groupId>org.junit.jupiter</groupId>
     <artifactId>junit-jupiter-api</artifactId>
     <version>RELEASE</version>
     <scope>compile</scope>
   </dependency>
 </dependencies>

jdbc

JDBCUtils.java
 package jdbc;
 ​
 import org.junit.jupiter.api.Test;
 ​
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 ​
 public class JDBCUtils {
     public static Connection connection;
     private static String url="jdbc:mysql://localhost:3306/aaa?useUnicode=true&characterEncoding=utf-8";
     private static String username="root";
     private static String password="root";
 ​
     static{
         try {
             Class.forName("com.mysql.jdbc.Driver");
             connection = DriverManager.getConnection(url,username,password);
 ​
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
 ​
     public static Connection getConnection(){
         return connection;
     }
 ​
     @Test
     public void test(){
         Connection connection = JDBCUtils.getConnection();
         System.out.println(connection);
     }
 }

entity

User.java
 package entity;
 ​
 public class User {
     private int id;
     private String username;
     private String password;
 ​
     public User() {
     }
 ​
     public User(int id, String username, String password) {
         this.id = id;
         this.username = username;
         this.password = password;
     }
 ​
     @Override
     public String toString() {
         return "User{" +
                 "id=" + id +
                 ", username='" + username + '\'' +
                 ", password='" + password + '\'' +
                 '}';
     }
 ​
     public int getId() {
         return id;
     }
 ​
     public void setId(int 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;
     }
 }

dao

UserDao.java
 package dao;
 ​
 import entity.User;
 import jdbc.JDBCUtils;
 ​
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 ​
 public class UserDao {
     private Connection connection = JDBCUtils.getConnection();
     private PreparedStatement ps;
 ​
     /*
     *添加用户
     * */
     public int add(User user) throws Exception{
         String sql = "insert into user(username,password) values(?,?)";
 ​
             ps=connection.prepareStatement(sql);
             ps.setObject(1,user.getUsername());
             ps.setObject(2,user.getPassword());
             int exe = ps.executeUpdate();
             return exe;
     }
     public int delete(int id) throws SQLException {
         String sql = "delete from user where id=?";
         ps = connection.prepareStatement(sql);
 ​
         /*
          * 删除用户
          * */
         ps.setObject(1,id);
         int exe = ps.executeUpdate();
         return exe;
     }
 ​
     /*
     * 修改用户
     * */
     public int update(User user) throws SQLException {
         String sql = "update user set username=? , password=? where id=?";
         ps = connection.prepareStatement(sql);
         ps.setObject(1,user.getUsername());
         ps.setObject(2,user.getPassword());
         ps.setObject(3,user.getId());
          return ps.executeUpdate();
 ​
     }
 ​
     /*
     * 查询所有用户
     * */
     public List<User> findAll() throws SQLException {
         String sql = "select * from user";
         ps=connection.prepareStatement(sql);
         ResultSet rs =ps.executeQuery();
         List<User> list = new ArrayList<User>();
         while(rs.next()){
             //以 Java 编程语言中 int 的形式获取此 ResultSet 对象的当前行中指定列的值。
             int id = rs.getInt("id");
             String username = rs.getString("username");
             String password = rs.getString("password");
             User u = new User(id,username,password);
             list.add(u);
 ​
         }
         return list;
     }
 ​
 /*
 * 通过id查询用户
 * */
     public User findById(int id) throws SQLException {
         String sql = "select * from user where id=?";
         ps=connection.prepareStatement(sql);
         ps.setInt(1,id);
         ResultSet rs = ps.executeQuery();
 ​
         User u = null;
         while (rs.next()){
             int uid = rs.getInt("id");
             String username = rs.getString("username");
             String password = rs.getString("password");
 ​
 ​
             u = new User(uid,username,password);
         }
 ​
         return u;
     }
 ​
 ​
     /*
     * 用户登录
     * */
     public User login(User user) throws SQLException {
         String sql = "select * from user where username=? and password=?";
         ps = connection.prepareStatement(sql);
         ps.setObject(1,user.getUsername());
         ps.setObject(2,user.getPassword());
 ​
         ResultSet rs = ps.executeQuery();
         User u = null;
 ​
         while (rs.next()){
             int uid = rs.getInt("id");
             String username = rs.getString("username");
             String password = rs.getString("password");
             u = new User(uid,username,password);
         }
 ​
         return u;
     }
 }

service

UserService.java
 package service;
 ​
 import dao.UserDao;
 import entity.User;
 ​
 import java.sql.SQLException;
 import java.util.List;
 ​
 public class UserService {
     private UserDao userDao = new UserDao();
 ​
     public int add(User user) throws Exception {
         return userDao.add(user);
     }
 ​
     public int delete(int id) throws SQLException {
         return userDao.delete(id);
     }
 ​
     public int update(User user) throws SQLException {
         return userDao.update(user);
     }
 ​
     public List<User> findAll() throws SQLException {
         return userDao.findAll();
 ​
     }
 ​
     public User findByID(int id) throws SQLException {
         return userDao.findById(id);
     }
 ​
     public User login(User user) throws SQLException {
         return userDao.login(user);
     }
 }

servlet

LoginServlet.java
 package servlet;
 ​
 import entity.User;
 import service.UserService;
 ​
 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 java.io.IOException;
 import java.sql.SQLException;
 ​
 @WebServlet("/login")
 public class LoginServlet extends HttpServlet {
 ​
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         doPost(req, resp);
     }
 ​
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         req.setCharacterEncoding("utf-8");
         resp.setCharacterEncoding("utf-8");
 ​
         //接受请求参数
         String username = req.getParameter("username");
         String password = req.getParameter("password");
 ​
         User user = new User();
         user.setUsername(username);
         user.setPassword(password);
 ​
         //查询数据
         UserService us = new UserService();
         User u = null;
 ​
         try {
             u=us.login(user);
             //跳转
             if (u==null){
                 req.setAttribute("mess","账号或密码错误");
                 req.getRequestDispatcher("login.jsp").forward(req,resp);
             }else {
                 req.getSession().setAttribute("user",u);
                 resp.sendRedirect("main.jsp");
             }
         } catch (SQLException e) {
             e.printStackTrace();
         }
 ​
 ​
 ​
 ​
     }
 }
RegServlet.java
 package servlet;
 ​
 import dao.UserDao;
 import entity.User;
 ​
 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 java.io.IOException;
 @WebServlet("/reg")
 public class RegServlet extends HttpServlet {
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         doPost(req, resp);
     }
 ​
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         req.setCharacterEncoding("utf-8");
         resp.setCharacterEncoding("utf-8");
 ​
         //接受请求参数
         String username = req.getParameter("username");
         String password = req.getParameter("password");
 ​
         User u = new User();
         u.setUsername(username);
         u.setPassword(password);
 ​
         UserDao dao = new UserDao();
         int i = 0;
 ​
         try {
             i=dao.add(u);
         } catch (Exception e) {
             e.printStackTrace();
         }
 ​
 ​
         //跳转
         if(i>0){
             req.setAttribute("mess","注册成功");
             resp.sendRedirect("login.jsp");
         }else{
             req.setAttribute("mess","注册失败");
             req.getRequestDispatcher("regist.jsp").forward(req,resp);
         }
 ​
 ​
     }
 }

jsp

web.xml
 <!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd" >
 ​
 <web-app>
   <display-name>Archetype Created Web Application</display-name>
 ​
   <welcome-file-list>
     <welcome-file>regist.jsp</welcome-file>
   </welcome-file-list>
 </web-app>
regist.jsp
 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
 <html>
 <head>
     <title>注册</title>
 </head>
 <body>
 <h1>用户注册</h1>
 <hr>
 <form action="reg" method="post">
     <p>
         用户名:<input type="text" name="username">
     </p>
     <p>
         密码:<input type="text" name="password">
     </p>
     <p>
         <input type="submit" value="注册">
     </p>
 ​
 </form>
 ​
 ${mess}
 ​
 </body>
 </html>
login.jsp
 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
 <html>
 <head>
     <title>登录</title>
 </head>
 <body>
 <h1>用户登录</h1>
 <hr>
 <form action="login" method="post">
     <p>
         用户名:<input type="text" name="username">
     </p>
     <p>
         密码:<input type="text" name="password">
     </p>
     <p>
         <input type="submit" value="登录">
     </p>
 ​
 </form>
 ​
 ${mess}
 ​
 </body>
 </html>
main.jsp
 <%--
   Created by IntelliJ IDEA.
   User: Lenovo
   Date: 2019/4/25
   Time: 9:11
   To change this template use File | Settings | File Templates.
 --%>
 ​
 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
 <html>
 <head>
     <title>主页</title>
 </head>
 <body>
 <h1>欢迎使用本系统</h1>
 当前用户:${sessionScope.user.username}
 </body>
 </html>

*****************************************************************************************************

我的博客园地址:https://www.cnblogs.com/zyx110/

【原创声明】此篇为作者原创,未经本人同意不得转载,经本人同意转载请说明出处。

我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的技术分享“Java匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,人生赢在转折处,改变从现在开始!

支持我的朋友们记得点波推荐哦,您的肯定就是我前进的动力。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端一会

《你不知道的JavaScript》:弄清生成器与迭代器的区别

这篇将整理下生成器与迭代器的区别。这两个东西初学的时候我是混淆的,尤其《你不知道的Javascript》书中没有进行基础的介绍,我看了之后还特地翻了下其他资料才...

8720
来自专栏云原生实验室

详细解读 Prometheus 的指标类型

原文链接:https://prometheus.io/docs/concepts/metric_types/

12620
来自专栏云原生实验室

你确定你会写 Dockerfile 吗?

如今 GitHub 仓库中已经包含了成千上万的 Dockerfile,但并不是所有的 Dockerfile 都是高效的。本文将从五个方面来介绍 Dockerfi...

9130
来自专栏前端一会

ES6中的Class回顾总结三:封装与多态

在Java中,实现了public完全开放、protected对子类开放、private对自己开放这三种封装的方式。但在ES6中目前并不支持,未来是否会支持也不知...

10410
来自专栏玩转JavaEE

Java 大牛看过来,挑战10道超难 Java 面试题!

这是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的...

12930
来自专栏前端一会

javascript设计模式四:迭代器模式

迭代器模式分为内部迭代器和外部迭代器,内部迭代器就是在函数内部定义好迭代的规则,它完全接手整个迭代的过程,外部只需一次初始调用。

8120
来自专栏前端一会

javascript设计模式一: 单例模式

作为一个半路出家的前端,随着项目经验的积累,也越来越意识到原生js的博大精深,最近正在研究js设计模式,接下来每学一个设计模式就是写篇文章做笔记,其实主要还是代...

10920
来自专栏一块自留地

ArrayList源码分析

可以看到,在构造方法中直接将 elementData 指向 DEFAULTCAPACITY_EMPTY_ELEMENTDATA空数组,这个时候该ArrayLis...

6730
来自专栏前端一会

《深入浅出Node.js》:Node异步编程解决方案 之 生成器(Generator)函数

关于生成器函数和迭代器的基础,在之前有成文,可以点击《你不知道的JavaScript》:迭代器Iterator的背景梳理和《你不知道的JavaScript》:弄...

7220
来自专栏Java建设者

Synchronized 和 Lock 的区别和使用场景

并发编程中,锁是经常需要用到的,今天我们一起来看下Java中的锁机制:synchronized和lock。

9120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励