基于Servlet+JSP+JDBC的登录注册案例
这是一个适合学完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的登录注册案例相关推荐
- 【java项目学习笔记】基于servlet+jsp+jdbc的注册登录系统
目录 项目介绍 准备工作 前端实现 后端实现 项目介绍 实现效果: 首先进行注册,注册成功后自动跳转到登录界面,用先前注册的账号进行登录 注册成功和登录成功的信息会在后端控制台打印 用户注册的信息记录 ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复 ...
- java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...
下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/
javaweb学习总结(二十二)--基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+Ja ...
- 基于javaweb的电影院售票管理系统(java+servlet+jsp+jdbc+mysql)
基于javaweb的电影院售票管理系统(java+servlet+jsp+jdbc+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...
- java实现登录注册案例_Java基于IO版实现用户登录注册的案例
下面小编就为大家带来一篇基于IO版的用户登录注册实例(Java).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 今天学的是用户登录注册功能. 4个包: itcast.c ...
- Java项目:电影院售票管理系统(java+Servlet+JSP+JDBC+Mysql)
源码获取:俺的博客首页 "资源" 里下载! 项目介绍 这个项目是一个基于Servlet+JSP的电影院售票系统,分为管理员和会员两种角色. 管理员权限包括: 修改登录密码 电影类别 ...
- JavaWeb-WEB核心7 会话技术 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用(钝化、活化)完善用户登录注册案例的功能
会话技术 今日目标 理解什么是会话跟踪技术 掌握Cookie的使用 掌握Session的使用 完善用户登录注册案例的功能 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理 ...
- 【Web基础】用户登录注册案例
4,用户登录注册案例 4.1 需求分析 需求说明: 完成用户登录功能,如果用户勾选"记住用户" ,则下次访问登录页面 自动 填充用户名密码 完成注册功能,并实现 验证码 功能 4. ...
最新文章
- ACMNO.47 矩形面积交(有图) 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
- android webview重绘,Android-怎么判断android中WebView滑动到了低端
- Gradle构建中:No cached version available for offline mode解决方案
- SAP HANA Schemas 和 HDI Containers
- 技术人员如何"正确"的浪费时间?
- 公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?
- 基于SpringBoot的项目管理后台
- Python 植物大战僵尸代码实现(2):植物卡片选择和种植
- Tableau同比或环比计算方法
- Android开发之中文语音朗读
- win10更改user用户名(win10更改user用户名文件夹已在另一个文件中已打开)
- 前端「HTML+CSS」零基础入门学习笔记
- [python]使用python实现Hadoop MapReduce程序:计算一组数据的均值和方差
- 福利分享:1024程序员节,给大家推荐一个极简win10
- 序列化和反序列化的概念及应用
- 龙王我当定了(一个在QQ刷龙王的脚本)
- CentOS7 安装 Oracle
- insightface测试megaface流程
- ApproximateVoxelGrid和VoxelGrid详解
- Arcgis api for JavaScript 4.X 学习——图层加载(要素图层、栅格图层、切片图层)