Servlet页面登录的数据库验证程序(二)
这个程序在原来的程序基础上加入了密码验证。
一、增加一个error.jsp页面,用于跳转出现用户名和密码错误显示信息。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>登录错误</title>
</head> <body>
<!-- 此处才是重要代码 -->
<%
String err=(String)request.getAttribute("error");
%>
<%=err %><br>
<a href="login.jsp">返回登录</a>
<!-- 此处才是重要代码 -->
</body>
</html>
二、改写loginserv.java。
package com.kaly.servlet; import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import com.kaly.data.GetData;
import com.kaly.data.User; public class loginserv extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String realusername=null;//经过验证的有效用户名
//以下三行主要解决中文乱码问题
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html);charset=utf-8");
//获得表单请求信息
String getUser=request.getParameter("username");//用户名
String getpassword=request.getParameter("password");//密码,这个小程序暂时未验证密码
String otherAction=request.getParameter("action");//获取退出登录等信息
//验证登录信息
GetData data=new GetData();//实例化自定义的GetData对象
Connection connection=data.getConnection();//从data中获得数据连接对象
ResultSet rs;//游标对象
User user=new User();
String uPassWord=null;
HttpSession session=request.getSession();//获得会话对象
try {
PreparedStatement pStatement=connection.prepareStatement("select * from user where username=?");
pStatement.setString(1, getUser);
//把经过查询得到的符合条件的记录交给游标对象rs
rs=pStatement.executeQuery();
//在游标对象rs中找到每一条记录,实际上如果用户名username不允许重复,则记录只有一条
while(rs.next()){
//把查询的数据封装到User对象,以后使用时只需要使用这个对象就可以了
user.setUserData(rs.getString(2), rs.getString(4), rs.getString(5));
uPassWord=rs.getString(3);
}
data.close();//关闭数据连接
} catch (SQLException e) {
e.printStackTrace();
}
//验证用户名和密码。按照登录用户名查找用户,读取密码,如果没有记录,则用户名错误,如果密码不争取,则密码错误
if("logout".equals(otherAction)){//这个地方必须要用到equals,用原来的==会出错,不知道为什么。
//如果得到了"退出登录"的请求,则将登录的用户名信息置为null
session.setAttribute("lUserName", null);
//重定向到login.jsp页面
response.sendRedirect("login.jsp");
}else{//否则就验证用户名和密码
if(user.getUsename()==null){//如果从数据库得到的用户名为null,表示数据库中根本没有该用户
request.setAttribute("error", "用户名错误");
request.getRequestDispatcher("error.jsp").forward(request, response);
}else if(!getpassword.equals(uPassWord)){//否则检查请求的密码是否和从数据库中读出来的密码匹配
request.setAttribute("error", "密码输入错误");
request.getRequestDispatcher("error.jsp").forward(request, response);
}else{//如果用户名和密码都对,则写入信息重定向网页,显示已经登录
session.setAttribute("lUserName", user.getNickname());//向会话对象写入数据
//重定向到login.jsp页面
response.sendRedirect("login.jsp");
}
}
}
}
三、数据库有以下用户记录。
四、重启服务并加载login.jsp页面。输入一个不存在的用户名。

点击登录后,跳转到error.jsp页面,显示用户名错误。

点击返回登录,输入存在的用户名和错误的密码。

点击登录,跳转到error.jsp页面,显示密码错误。

再点击返回登录,输入完全正确的用户名和密码。

点击登录后,跳转到login.jsp页面。

如果点击退出登录,则返回到未登录状态。表示程序调试正常。
Servlet页面登录的数据库验证程序(二)的更多相关文章
- Servlet页面登录的数据库验证程序(一)
一.基本思想是MVC模式,一个登录页面login.jsp,一个服务器处理程序Servlet.java,一个MySql数据库userinfo. 另外还有相关的数据封装类User和数据库连接类GetDat ...
- Servlet页面注册用户的小程序(一)
本实例实现用userreg.jsp页面中的表单提交注册请求,把注册信息提交给regservlet写入数据库并且查询新用户显示出来. 一.准备工作. 1.jdbc数据驱动开发包mysql-connect ...
- java登录时数据库验证账户密码-mysql
一:连接数据库: package login; import java.sql.*; public class conmysql { String drivername="com.mysql ...
- Servlet初级学习加入数据库操作(二)
源代码地址:https://url56.ctfile.com/f/34653256-527822631-2e255a(访问密码:7567) 将页面中的数据逐步替换为数据库管理 准备一个连接数据库的类 ...
- servlet数据库验证登录
servlet数据库验证登录 一.将数据库连接和验证封装为一个单独的类 import java.sql.*; public class SQLtest { // JDBC 驱动名及数据库 URL st ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端
转自:http://blog.csdn.net/otangba/article/details/8273952 终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的. 服 ...
随机推荐
- 在web.config配置中添加xml内容
在web.config 中添加需要的内容时, 就是在<configuration>节点内添加一个新的<configSections>元素, 在configSections元素中 ...
- pimpl idiom vs. bridge design pattern
http://stackoverflow.com/questions/2346163/pimpl-idiom-vs-bridge-design-pattern
- [Python学习笔记1]Python语言基础 数学运算符 字符串 列表
这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...
- ubuntu 下更新PHP版本 ZT
sudo add-apt-repository ppa:ondrej/php5 如果报错 add-apt-repository: command not found add-apt-repositor ...
- 关于Android 应用保活
通常情况下 , 公司需要让自己的产品在用户的手机中尽可能存活长的时间,包括不受大数字,手动清理后台等情况的影响.这里给出一种方式 就是 双进程守护: 模型如图所示: 两个service通过aidl的方 ...
- php性能优化实用技巧:
以下是五个优化技巧,熟练掌握后对于开发还是很有帮助的. 1. 对字符串使用单引号 PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先 ...
- Cruehead.1
查壳 没有 我拖 alt+F9 到上面 入口处 下断 关键跳 略过 就没了 要实现 强暴 直接过... 仔细来看看... 那两个调用 都下断 看看 判断 ...
- 强大反调试cm的奇葩破解
系统 : Windows xp 程序 : Crackme-xp 程序下载地址 :http://pan.baidu.com/s/1slUwmVr 要求 : 编写注册机 使用工具 : OD & I ...
- 12、(扩展)获取省份表,填充于下拉列表框的简易js
在制作省份下拉列表时,我们常常会遇到大量省份不停复制粘贴的问题,比如百度到这样一个填充着省份信息的表格: 里面含有很多条数据和内容,这时候要一条一条复制粘贴非常繁冗,所以在同事的启发下我写了一个简易的 ...
- NOPI导出加载模板
ListExcel导出(加载模板) /// <summary> /// List根据模板导出ExcelMemoryStream /// </summary> /// <p ...