这是一个适合学完Servlet+JSP+JDBC的练手例子,动手之前可以先回顾一下本文需要用到的知识 ~>
Servlet回顾:传送门
JSP回顾: 传送门

JDBC使用步骤回顾 ~>
1、加载驱动
2、获取连接对象
3、通过连接对象获取sql执行对象
4、编写sql语句
5、使用sql执行对象执行sql语句(为语句中的变量赋值)
6、sql执行对象调用执行方法
如果是查询调用executeQuery();
如果是增删改调用executeUpdate()。
7、释放资源

Start ~>

操作步骤

  • 1、创建一个javaweb工程,导入依赖
  • 2、创建数据库user表
  • 3、创建实体类
  • 3、创建jdbc工具类
  • 4、创建repository,编写登录方法(查询),注册方法(添加)
  • 5、创建LoginServlet和RegisterServlet分别调用登录和注册方法
  • 6、编写登录和注册页面 登录页面
  • 7、添加过滤器

1、创建一个javaweb工程,导入依赖

导入mysql连接:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version>
</dependency>

2、创建数据库user表

在数据库中创建名为test的数据库,执行以下sql创建user表:

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

3、创建实体类

public class User {private Integer id;private String username;private String password;public User() {}public User(Integer id, String username, String password) {this.id = id;this.username = username;this.password = password;}public Integer getId() {return id;}public void setId(Integer 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;}
}

3、创建jdbc工具类

将JDBC中的一些步骤编写成工具类,减少重复代码。

public class JDBCUtil {static Connection connection = null;static PreparedStatement preparedStatement = null;static ResultSet resultSet = null;//加载驱动static {try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}//获取数据库连接public static Connection getConnection(){//数据库连接路径String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";//数据库账号String username = "root";//数据库密码String password = "root";try {connection = DriverManager.getConnection(url,username,password);} catch (SQLException throwables) {throwables.printStackTrace();}return connection;}//释放资源public static void release(Connection connection,PreparedStatement preparedStatement){if (connection != null){try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (preparedStatement != null){try {preparedStatement.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}public static void release(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet){release(connection,preparedStatement);if (resultSet != null){try {resultSet.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}public static void main(String[] args) {Connection connection = JDBCUtil.getConnection();System.out.println(connection);}}

4、创建repository,编写登录方法(查询),注册方法(添加)

public class UserRepository {public void register(String username,String password){Connection connection = JDBCUtil.getConnection();PreparedStatement preparedStatement = null;String sql = "insert into user(username,password) values(?,?)";try {preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1,username);preparedStatement.setString(2,password);preparedStatement.executeUpdate();} catch (SQLException throwables) {throwables.printStackTrace();} finally {JDBCUtil.release(connection,preparedStatement);}}public User login(String username,String password){Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;User user = null;String sql = "select * from user where username = ? and password = ?";try {connection = JDBCUtil.getConnection();preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1,username);preparedStatement.setString(2,password);resultSet = preparedStatement.executeQuery();while (resultSet.next()){int id = resultSet.getInt(1);String name = resultSet.getString(2);String pwd = resultSet.getString(3);user = new User(id,name,pwd);}} catch (SQLException throwables) {throwables.printStackTrace();} finally {JDBCUtil.release(connection,preparedStatement,resultSet);}return user;}}

5、创建LoginServlet和RegisterServlet分别调用登录和注册方法

访问Servlet程序的映射可以在web.xml中配置,也可以使用注解@WebServlet替代,更为方便。

@WebServlet("/login")
public class LoginServlet extends HttpServlet {//访问:http://localhost:8080/login进入get方法,跳转到登录页面@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.sendRedirect("index.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");UserRepository userRepository = new UserRepository();User user = userRepository.login(username, password);if (user != null){req.getRequestDispatcher("homePage.jsp").forward(req,resp);}req.setAttribute("msg","用户名或密码错误!");req.getRequestDispatcher("index.jsp").forward(req,resp);}}
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {//访问:http://localhost:8080/register进入get方法,跳转到注册页面@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("register.jsp").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");UserRepository userRepository = new UserRepository();userRepository.register(username,password);req.getRequestDispatcher("index.jsp").forward(req,resp);}}

6、编写登录和注册页面 登录页面

登录页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
<h1>LOGIN</h1>
<form action="/login" method="post"><div><input type="text" name="username" placeholder="UserName"></div><div><input type="password" name="password" placeholder="UserPassword"></div><input type="submit" value="Sign in"><a href="/register">Register</a>
</form>
<%String msg = (String)request.getAttribute("msg");
%>
<%if (msg != null){response.getWriter().write(msg);}
%></body>
</html>

注册页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>注册</title>
</head>
<body><h1>register</h1>
<form action="/register" method="post"><div><input type="text" name="username" placeholder="Enter UserName"></div><div><input type="password" name="password" placeholder="Enter UserPassword"></div><input type="submit" value="Register">
</form></body>
</html>

主页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>主页</title>
</head>
<body>
<h1>Welcome!!!</h1>
</body>
</html>

运行截图:

7、添加过滤器

在注册的时候如果输入中文,在数据库中可以看到是乱码的,这时候可以使用过滤器来解决编码问题。
创建一个类实现Filter接口,在doFilter方法中设置编码为UTF-8:
注解@WebFilter("/*")表示过滤所有请求,如果你只想过滤部分请求,那么在斜杆之后加上请求的url即可,例如过滤注册请求:@WebFilter("/register")。

@WebFilter("/*")
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("UTF-8");filterChain.doFilter(servletRequest,servletResponse);}
}

项目结构:

基于Servlet+JSP+JDBC的登录注册案例相关推荐

  1. 【java项目学习笔记】基于servlet+jsp+jdbc的注册登录系统

    目录 项目介绍 准备工作 前端实现 后端实现 项目介绍 实现效果: 首先进行注册,注册成功后自动跳转到登录界面,用先前注册的账号进行登录 注册成功和登录成功的信息会在后端控制台打印 用户注册的信息记录 ...

  2. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复 ...

  3. java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  4. 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/

    javaweb学习总结(二十二)--基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+Ja ...

  5. 基于javaweb的电影院售票管理系统(java+servlet+jsp+jdbc+mysql)

    基于javaweb的电影院售票管理系统(java+servlet+jsp+jdbc+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...

  6. java实现登录注册案例_Java基于IO版实现用户登录注册的案例

    下面小编就为大家带来一篇基于IO版的用户登录注册实例(Java).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 今天学的是用户登录注册功能. 4个包: itcast.c ...

  7. Java项目:电影院售票管理系统(java+Servlet+JSP+JDBC+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 这个项目是一个基于Servlet+JSP的电影院售票系统,分为管理员和会员两种角色. 管理员权限包括: 修改登录密码 电影类别 ...

  8. JavaWeb-WEB核心7 会话技术 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用(钝化、活化)完善用户登录注册案例的功能

    会话技术 今日目标 理解什么是会话跟踪技术 掌握Cookie的使用 掌握Session的使用 完善用户登录注册案例的功能 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理 ...

  9. 【Web基础】用户登录注册案例

    4,用户登录注册案例 4.1 需求分析 需求说明: 完成用户登录功能,如果用户勾选"记住用户" ,则下次访问登录页面 自动 填充用户名密码 完成注册功能,并实现 验证码 功能 4. ...

最新文章

  1. ACMNO.47 矩形面积交(有图) 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
  2. android webview重绘,Android-怎么判断android中WebView滑动到了低端
  3. Gradle构建中:No cached version available for offline mode解决方案
  4. SAP HANA Schemas 和 HDI Containers
  5. 技术人员如何"正确"的浪费时间?
  6. 公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?
  7. 基于SpringBoot的项目管理后台
  8. Python 植物大战僵尸代码实现(2):植物卡片选择和种植
  9. Tableau同比或环比计算方法
  10. Android开发之中文语音朗读
  11. win10更改user用户名(win10更改user用户名文件夹已在另一个文件中已打开)
  12. 前端「HTML+CSS」零基础入门学习笔记
  13. [python]使用python实现Hadoop MapReduce程序:计算一组数据的均值和方差
  14. 福利分享:1024程序员节,给大家推荐一个极简win10
  15. 序列化和反序列化的概念及应用
  16. 龙王我当定了(一个在QQ刷龙王的脚本)
  17. CentOS7 安装 Oracle
  18. insightface测试megaface流程
  19. ApproximateVoxelGrid和VoxelGrid详解
  20. Arcgis api for JavaScript 4.X 学习——图层加载(要素图层、栅格图层、切片图层)

热门文章

  1. 阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星31K+
  2. 迪文串口屏的安装方法之卡扣结构带外壳智能屏
  3. 推荐算法:为什么浏览器总是知道我喜欢的内容?
  4. YOLOv1论文翻译
  5. ajax页面拼接html,ajax请求拼接html代码
  6. jsp无图片时显示默认图片解决方案
  7. 华为思科宣布全力布局,美国NSF巨资支持的NDN到底什么来头?
  8. mapbox中文地图_使用 Mapbox 地图
  9. 批量将多张图片的宽度和高度同时缩小一半,也可以按固定比例缩小
  10. 【vue】仿淘宝商品详情---实现滚动显隐标签页锚点导航