使用Servlet和jdbc创建用户登录验证
首先创建一个用户表,用来保存用户名 密码,并插入几条数据
mysql> desc user;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
| password | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
创建语句,注意一定要设置password的长度超过41,因为插入数据时我们使用password函数,生成长度为41的字符串,
例如:
mysql> select password('aasas');
+-------------------------------------------+
| password('aasas') |
+-------------------------------------------+
| *462034BF6D04324F93F1F6CA352B23079A165972 |
+-------------------------------------------+
1 row in set (0.00 sec)
mysql> select length( password('aasas'));
+----------------------------+
| length( password('aasas')) |
+----------------------------+
| 41 |
+----------------------------+
1 row in set (1.76 sec)
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
插入数据:
mysql> insert into user(username,password) values('root',password('root'));
查看一下插入结果:此时密码已经变成一串字符串.
mysql> select * from user where username='root';
+----+----------+-------------------------------------------+
| id | username | password |
+----+----------+-------------------------------------------+
| 4 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+----+----------+-------------------------------------------+
1 row in set (0.00 sec)
2.创建一个java web project,新建一个名为user的类,使用jdbc链接数据库,把user表的数据拿出来和输入的用户名密码对比,并添加validate方法
如果用户名密码正确,返回true。之后注意将Mysql JDBC的driver copy到lib目录下,否则无法运行

package com.data; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class user { private static String userName;
private static String password;
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 static boolean validate()
{
String url = "jdbc:mysql://localhost:3306/study";
String user= "root";
String dbpassword = "3edc4rfv";
boolean result = false; try {
String driver ="com.mysql.jdbc.Driver";
Class.forName(driver);
Connection con = DriverManager.getConnection(url,user, dbpassword); if(con==null){
System.out.println("can't open DBConnection");
} String sql = "select * from user where username=? and password=password(?)"; PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, userName);
pstmt.setString(2, password);
System.out.println(sql);
ResultSet rs=pstmt.executeQuery();
if(rs.next())
{
System.out.println("PASS");
result=true; }
else
{
System.out.println("FAIl");
result=false;
}
pstmt.close();
rs.close();
con.close(); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result; } }
并新建一个Servlet,包名com.web,class name login.java,这里主要使用post方法,所以在dopost方法添加代码
将login.java 修改为这样:
package com.web; import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.data.book;
import com.data.user; public class login extends HttpServlet { /**
* Constructor of the object.
*/
public login() {
super();
} /**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} /**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //Add some codes
doPost(request,response);
} /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getParameter("username");
request.getParameter("password");
request.getSession().setAttribute("user", request.getParameter("username")); //将user放在Attribute中
user user1=new user();
user1.setUserName(request.getParameter("username"));
user1.setPassword(request.getParameter("password"));
System.out.println(request.getParameter("username")+request.getParameter("password")); if(user1.validate())
{ request.getRequestDispatcher("welcome.jsp").forward(request, response); //校验用户名密码正确,跳转到welcome.jsp }
else
{
request.getRequestDispatcher("index.jsp").forward(request, response); //校验用户名密码不正确,跳转到index.jsp } }
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
} }
此时web.xml代码如下。可以使用login.do访问这个Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>login Page</description>
<display-name>login Page</display-name>
<servlet-name>login</servlet-name>
<servlet-class>com.web.login</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.在jsp页面添加相应的action,在index.jsp的body标签之间添加,会生出登录界面,用户名 密码
<form action="login.do" method="post" >
username<input type="text" name="username">
<br>password
<input type="password" name="password">
<br>
<input type="submit" value="login">
<input type="reset" value="cancel"/>
</form>
4.添加welcome.jsp
在welcome.jsp body标签添加
Welcome <%=session.getAttribute("user") %><br>
5.加载工程
使用Servlet和jdbc创建用户登录验证的更多相关文章
- android loginDemo +WebService用户登录验证
android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...
- SQLServer创建用户登录
创建用户登录注意事项 密码是区分大小写的. 只有创建SQL Server登录时,才支持对密码预先进行哈希运算. 如果指定MUST_CHANGE,则CHECK_EXPIRATION和 CHECK_POL ...
- python3 用户登录验证的小功能
用户登录验证,记录一下,还需要修改黑名单不合理 #!/usr/bin/env python3 ''' 需求:编写登录接口 1.输入用户名和密码 2.验证用户密码成功后输出欢迎消息 3.3次没有验证通过 ...
- java web多组件协作实现用户登录验证
实现步骤: 1.创建用户登录提交界面 2.创建处理用户登录请求servlet组件Main 3.创建代表登录成功响应的servlet的组件LoginSuccess 4.创建代表登录失败响应的servle ...
- Python程序练习1-模拟用户登录验证
1.功能简介 此程序模拟用户登录验证的过程,实现用户名输入.黑名单检测.用户有效性判别.密码输入及验证等.用户在3次以内输入正确密码登陆成功,连续输错3次密码登陆失败,且该用户名被记录在黑名单,黑名单 ...
- djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习
Django REST framework JWT djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习 SECRET_KEY = '1)q(f8jrz^edwtr2 ...
- cookie实现用户登录验证
cookie实现用户登录验证 1, INSTALLED_APPS中注册app03 2,在主程序中新建映射关系到app3的url中 from django.conf.urls import url,in ...
- 如何使用Django实现用户登录验证
最初开始搞用户登录验证的时候感觉没什么难的,不就是增删改查中的查询数据库么,但是还是遇到许多小问题,而且感觉在查询数据库的时候,要把前端的数据一条一条的进行比对,会导致我的代码很丑,而且方式很不智,所 ...
- 用javascript实现简单的用户登录验证
用javascript实现简单的用户登录验证 <!DOCTYPE html> <html lang="en"> <head> <meta ...
随机推荐
- java.util.Date和java.sql.Date的区别和相互转化
java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它 们都有getTime方法返回毫秒数,自然就可以直接构建. ...
- PHP实现各种经典算法
<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_s ...
- 有关Highchart的那些事。。。备份一段(稍后修改)
$(function () { $('#CurrentFinanceChart').highcharts({ title: { text: '' }, xAxis: { type: 'datetime ...
- 1_mysql +DBA职业发展
MYSQL + DBA 职业发展 mysql :the world's most popular open source database 最流行的开源数据库 数据库世界 关系数据库(又称SQL数据库 ...
- UESTC 1851 Kings on a Chessboard
状压DP... Kings on a Chessboard Time Limit: 10000ms Memory Limit: 65535KB This problem will be judged ...
- PHP array_multisort() 函数详解 及 二维数组排序(模拟数据表记录按字段排序)
一.先看最简单的情况. 有两个数组: $arr1 = array(1, 9, 5); $arr2 = array(6, 2, 4); array_multisort($arr1, $arr2); pr ...
- 【C语言入门教程】3.1 程序的 3 种基本结构
程序设计是一个问题求解的过程,解决问题的步骤可看作是程序的控制结构.简单地说,程序的运行过程就是数据输入.数据处理.数据输出 3 个步骤.其中,数据处理过程是否快捷和准确,主要依赖于程序控制结构的设计 ...
- oracle 彻底删除用户及表空间
1.删除表空间 可以先将其offline alter tablespace xxx offline; 将磁盘上的数据文件一同删除 drop tablespace xxx including conte ...
- zepto触摸事件解决方法
移动项目开发过程中,经常需要用到滑动的事件来处理一些效果.通常情况下,我们会通过 touchstart->touchmove->touchend 的过程来定义这个事件.这些事件的触发顺 ...
- angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
在模板中直接: 在ionic中直接使用: <p class="contentwen" ng-bind-html="detial.content">& ...