Servlet实现登录注册
1.注册页面register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<script type="text/javascript">
function sub(){
alert("注册成功!");
}
</script>
<style>
*{
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
body{
background: url("img/timg.jpg") no-repeat center;
background-size: 100%;
}
.rg_layout{
width: 900px;
height: 620px;
border: 5px solid #F3E2A9;
background-color: white;
/* 让div水平居中*/
margin: auto;
margin-top: 15px;
}
.rg_left{
float: left;
margin: 20px;
}
.rg_left > p:first-child{
color: #FFBF00;
font-size: 20px;
}
.rg_left>p:last-child{
color: #A4A4A4;
font-size: 20px;
}
.rg_center{
float: left;
width: 500px;
}
.rg_right{
float: right;
margin:20px;
}
.rg_right p{
font-size:13px;
}
.rg_right p a{
color: #FFBF00;
}
.td_left{
width: 100px;
text-align: right;
height: 30px;
}
.td_right{
padding: 20px;
}
#username,#password,#Email,#name,#tel,#checked{
width: 250px;
height: 30px;
border:1px solid #A4A4A4 ;
border-radius:5px;
padding-left:8px;
}
/*#checked{*/
/* width: 120px;*/
/*}*/
/*#img_check{*/
/* height:30px;*/
/* vertical-align: middle;*/
/*}*/
#btn_sub{
width: 100px;
height: 30px;
background-color: #0080FF;
border: 1px solid #0080FF;
}
</style>
</head>
<body>
<div class="rg_layout">
<div class="rg_left">
<p>新用户注册</p>
<p>USER REGISTER</p>
</div>
<div class="rg_center">
<div class="rg_form">
<form action="/register" method="post">
<table>
<tr>
<td class="td_left"><label for="username">用户名</label></td>
<td class="td_right"><input type="text" name="username" id="username" placeholder="请输入用户名"></td>
</tr>
<tr>
<td class="td_left"><label for="password">密码</label></td>
<td class="td_right"><input type="password" name="password" id="password" placeholder="请输入密码"></td>
</tr>
<tr>
<td class="td_left"><label for="Email">邮箱</label></td>
<td class="td_right"><input type="email" name="Email" id="Email" placeholder="请输入邮箱"></td>
</tr>
<tr>
<td class="td_left"><label for="name">姓名</label></td>
<td class="td_right"><input type="text" name="name" id="name" placeholder="请输入真实姓名"></td>
</tr>
<tr>
<td class="td_left"><label for="tel">手机号</label></td>
<td class="td_right"><input type="number" name="tel" id="tel" placeholder="请输入手机号"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" id="btn_sub" value="注册" onclick="sub()">
</td>
</tr>
</table>
</form>
</div>
</div>
<div class="rg_right">
<p>已有账户?<a href="login.html">立即登录</a></p>
</div>
</div>
</body>
2.登录页面 login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
* {
margin: 0px;
}
body{
background-image: url("img/login.png");
background-size: 100%;
}
.box{
width: 400px;
height: 300px;
margin:200px auto;
display:block;
position: relative;
}
.btn_style{
width: 100px;
height: 30px;
display: block;
position:absolute;
text-decoration:none;
text-align:center;
line-height:30px;
color: #fff;
background-color: #058;
}
#btn_reset:HOVER {
background-color: #047;
}
#btn_login:hover{
background-color: #047;
}
#btn_reset{
right:50px;
}
#btn_login{
margin-left: 50px;
}
</style>
<script type="text/javascript">
function register() {
window.location.href="register.html";
}
</script>
</head>
<body>
<div align="center" class="box">
<form id="form"method="post" action="/login">
userName:<input type="text" name="username" id="username" placeholder="请输入用户名"/><br>
password :<input type="password" name="password" id="password" placeholder="请输入密码"/><br/>
<tr>
<td><input class="btn_style" id="btn_login" type="submit" value="登录"></td>
<td><input type="button" id="btn_reset" class="btn_style" value="注册" onclick="register()"></td>
</tr>
</form>
</div>
</body>
</html>
3.实体类
package cn.frame.domin;
public class User {
private String username;
private String password;
private String Email;
private String name;
private String tel;
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 getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
4.Dao层UserDao类
package cn.frame.dao;
import cn.frame.domin.User;
import java.sql.*;
public class UserDao {
private static final String driver="com.mysql.cj.jdbc.Driver";
private static final String url="jdbc:mysql://localhost:3306/rg_log?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false";
private static String username="root";
private static String password="hao20001010";
public static void insert(User user) throws SQLException {
String sql="insert into rgister values(?,?,?,?,?)";
Connection connection = null;
PreparedStatement statement = null;
try {
//加载驱动
Class.forName(driver);
connection = DriverManager.getConnection(url, username, password);
//创建预编译的Statement
statement = connection.prepareStatement(sql);
//设置参数
statement.setString(1,user.getUsername());
statement.setString(2,user.getPassword());
statement.setString(3,user.getEmail());
statement.setString(4,user.getName());
statement.setString(5,user.getTel());
statement.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
statement.close();
connection.close();
}
}
public boolean select(String username2,String password2) throws SQLException {
Connection connection=null;
Statement statement=null;
String username1;
String password1;
String sql="select username,password from rgister";
try {
ResultSet rs = null;
Class.forName(driver);
connection = DriverManager.getConnection(url, username, password);
statement= connection.createStatement();
rs=statement.executeQuery(sql);
while (rs.next()) {
username1 = rs.getString("username");
password1 = rs.getString("password");
if (username1.equals(username2) && password1.equals(password2)) {
return true;
}
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
statement.close();
connection.close();
}
return false;
}
}
5.Servlet控制层(RegistServlet类,LoginServlet类,FailServlet类,SuccessServlet类)
package cn.frame.web.servlet;
import cn.frame.dao.UserDao;
import cn.frame.domin.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;
import java.sql.SQLException;
@WebServlet("/register")
public class RegistServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String Email = request.getParameter("Email");
String name = request.getParameter("name");
String tel = request.getParameter("tel");
//SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
//Date date=format.parse(date);
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setEmail(Email);
user.setName(name);
user.setTel(tel);
try {
UserDao.insert(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package cn.frame.web.servlet;
import cn.frame.dao.UserDao;
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 {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDao userDao=new UserDao();
try {
if (userDao.select(username,password)){
request.getRequestDispatcher("/success").forward(request,response);
}else {
request.getRequestDispatcher("/fail").forward(request,response);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package cn.frame.web.servlet;
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("/fail")
public class FailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("登录失败,用户名或密码错误");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package cn.frame.web.servlet;
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("/success")
public class SuccessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("恭喜你登录成功!");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
6、总结

第一步:编写前端页面代码(register.html,login.html)
第二步:编写代码实现与数据库的交互(UserDao类)
第三步:使用Servlet接收表单数据(RegistServlet类,LoginServlet类)
第五步:将图片中的分隔线去掉,对于注册,可以将Servlet接收的数据封装到实体类User中,然后调用Dao层类中编写的insert()方法集合即可;对于登录可以通过调用Dao层类中编写的select()方法与接收的表单数据进行比对即可
重点在于第五步的使用
所用的技术:
Servlet、JDBC
Servlet实现登录注册的更多相关文章
- JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)
一.数据库db_01 表usert 字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp <script type="text/j ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册
简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 登录注册案例(Servlet+JSP+Maven)
项目案例模板之登录注册的实现 案例演示 案例代码 设计表 pom.xml <dependencies> <dependency> <groupId>jun ...
- Java Web项目案例之---登录注册和增删改查(jsp+servlet)
登录注册和增删改查(jsp+servlet) (一)功能介绍 1.用户输入正确的密码进行登录 2.新用户可以进行注册 3.登录后显示学生的信息表 4.可以添加学生 5.可以修改学生已有信息 6.可以删 ...
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
随机推荐
- Java学习笔记:03面向对象-接口_多态
1.类的概念 一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合 2.接口的概念 接口是功能的集合,就是方法的集合 接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法,必须是抽象 ...
- 31 面向对象编程 接口 普通类:只有具体实现 声明类的关键字是class,声明接口关键字是interface 接口的作用
接口 概念 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范!自己无法写方法!专业的约束!约束和实现分离:面向接口编程~ 接口就是规范,定义的是一组规则,体现了现实世界中 ...
- 通过Geth搭建私有以太坊网络
前言 为了进一步了解以太坊区块链网络的工作方式和运行原理,笔者通过官方软件Geth搭建了私有以太坊网络fantasynetwork,最终实现了单机和多机节点间的相互连通:首先通过VMware Work ...
- 硬吃一个P0故障,「在线业务」应该如何调优HBase参数?
1.背景 由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置. 结果在流量高峰期出现了宿主机故障,挂掉了两 ...
- 使用SymPy
最近工作的原因,需要进行一些积分运算,通过一些搜索得知了SymPy,记录一下使用历程. 1. SymPy介绍 SymPy是关于Symbolic Mathematics的Python库,它旨在成为一个功 ...
- 『忘了再学』Shell基础 — 4、Bash基本功能(history命令)
目录 1.history历史命令 2.设置命令历史记录的条数 3.清空历史命令 4.历史命令的调用 5.命令与文件的补全 在Linux系统中默认的Shell就是Bourne-AgainShell(简称 ...
- Spring Boot 增加删除修改 批量
1.批量删除 a.自定义Repositoy中写 前台处理https://blog.csdn.net/yhflyl/article/details/81557670首先前台先要获取所有的要删除数据的I ...
- Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复:如果没有配 置 namespace,那么 id 不能重复: 原因就是 namespace+id 是作为 Map<S ...
- 如果一个表有一列定义为 TIMESTAMP,将发生什么?
每当行被更改时,时间戳字段将获取当前时间戳. 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况? 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用. 怎样才 ...
- java中线程池创建的几种方式
java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize ...