首先创建一个用户表,用来保存用户名 密码,并插入几条数据

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创建用户登录验证的更多相关文章

  1. android loginDemo +WebService用户登录验证

        android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...

  2. SQLServer创建用户登录

    创建用户登录注意事项 密码是区分大小写的. 只有创建SQL Server登录时,才支持对密码预先进行哈希运算. 如果指定MUST_CHANGE,则CHECK_EXPIRATION和 CHECK_POL ...

  3. python3 用户登录验证的小功能

    用户登录验证,记录一下,还需要修改黑名单不合理 #!/usr/bin/env python3 ''' 需求:编写登录接口 1.输入用户名和密码 2.验证用户密码成功后输出欢迎消息 3.3次没有验证通过 ...

  4. java web多组件协作实现用户登录验证

    实现步骤: 1.创建用户登录提交界面 2.创建处理用户登录请求servlet组件Main 3.创建代表登录成功响应的servlet的组件LoginSuccess 4.创建代表登录失败响应的servle ...

  5. Python程序练习1-模拟用户登录验证

    1.功能简介 此程序模拟用户登录验证的过程,实现用户名输入.黑名单检测.用户有效性判别.密码输入及验证等.用户在3次以内输入正确密码登陆成功,连续输错3次密码登陆失败,且该用户名被记录在黑名单,黑名单 ...

  6. djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习

    Django REST framework JWT djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习 SECRET_KEY = '1)q(f8jrz^edwtr2 ...

  7. cookie实现用户登录验证

    cookie实现用户登录验证 1, INSTALLED_APPS中注册app03 2,在主程序中新建映射关系到app3的url中 from django.conf.urls import url,in ...

  8. 如何使用Django实现用户登录验证

    最初开始搞用户登录验证的时候感觉没什么难的,不就是增删改查中的查询数据库么,但是还是遇到许多小问题,而且感觉在查询数据库的时候,要把前端的数据一条一条的进行比对,会导致我的代码很丑,而且方式很不智,所 ...

  9. 用javascript实现简单的用户登录验证

    用javascript实现简单的用户登录验证 <!DOCTYPE html> <html lang="en"> <head> <meta ...

随机推荐

  1. mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)

    一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取.共享与锁定. mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他se ...

  2. 大数据架构师NoSQL建模技术

    从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...

  3. default配置

    log_format main '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_byt ...

  4. yaf扩展

  5. sqoop

    http://blog.csdn.net/yfkiss/article/details/8700480 http://www.cnblogs.com/admln/p/sqoop1-99-4-javaa ...

  6. CodeForces 55D Beautiful numbers

    D. Beautiful numbers time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

  7. XML理解

    XML:页面之间传递数据,跨平台传递,核心标签 HTML:超文本标记语言,核心标签 <xml version='1.0'>版本1.0<Nation> <one> & ...

  8. iOS设备 屏幕尺寸、操作系统、摄像头像素、发行时间 汇总

    设备 硬件尺寸 软件尺寸 精密程度 操作系统 摄像头像素 发行时间 iPhone 4s 640 x 960 320 x 480 2x iOS 5 800万 2011.10.04 iPhone 5 64 ...

  9. Redis 读后小感

    经过一个多月的业余时间,终于把 Redis 完整的撸了一遍,感谢峰哥推荐的书<Redis 设计与实现>,也谢谢作者把 Redis 解析的这么通俗易懂. 去年 10 月末入职的某厂是 Red ...

  10. centos下安装nginx

    1.yum install nginx     安装nginx 2.service nginx start  启动nginx 3.然后进入浏览器,输入http://Ip/测试,如果看到 Welcome ...