1.登录文件login.jsp
<%@ pagecontentType="text/html;charset=gb2312"%>
<table>
<form action=login_con.jspmethod=post>
<tr>
<tdcolspan="2">用户登陆</td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text"name="name"></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;码:</td>
<td><inputtype="password"name="password"></td>
</tr>
<tr>
<tdcolspan="2">
<inputtype="submit" value="登陆">
<inputtype="reset" value="重置">
</td>
</tr>
</table>
</form>

2.提交登录处理文件login_con.jsp
<%@ pagecontentType="text/html;charset=gb2312"%>
<%@ pageimport="org.test.factory.*"%>
<%
request.setCharacterEncoding("gb2312");
%>
<%//引入javaBean%>
<jsp:useBean id="perv" scope="request"class="org.test.vo.PersonVo"/>
<jsp:setProperty name="perv"property="*"/>
<%if(DAOFactory.getPersonDAOInstance().isLogin(perv))
{//DAOFactory.getPersonDAOInstance()返回了一个personDao的对象
//逻辑判断都在perosonDao里
//合法用户 forward标签形式跳转(服务端跳转,会话在一个请求范围内)
%><jsp:forwardpage="login_success.jsp"/><% else%><jsp:forwardpage="login_failure.jsp"/><%%>

3.登录成功欢迎页面login_success.jsp
<%@ pagecontentType="text/html;charset=gb2312"%>
<%//login.failure能够接收到request范围内的信息,所以这个id为perv的vo对像还是login_con.jsp中生成的那个%>
<jsp:useBean id="perv" scope="request"class="org.test.vo.PersonVo"/>
<h1>登录成功,欢迎<jsp:getPropertyname="perv"property="name"/></h1>

4.登录失败页面login_failure.jsp
<%@pagecontentType="text/html;charset=gb2312"%>
<h1>错误的用户名和密码!!</h1><br><ahref="login.jsp">重新登录</a>

5.库test的preson表结构及数据
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(120) NOT NULL,
`password` varchar(120) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO `person` (`id`, `name`, `password`) VALUES (1, 'york','123456');

6.VO类PersonVo.java
package org.test.vo;

import java.util.*;
public class PersonVo //表中所有字段
private String id;
private String name;
private String password;

//getter and setter
public void setId(Stringid)this.id = id; public String getId()return this.id;
}

public void setName(Stringname)this.name = name; public String getName()return this.name;
}

public voidsetPassword(String password)this.password = password; public StringgetPassword()return this.password;}

7.DO接口 PersonDAO.java
package org.test.dao;
import org.test.vo.*;//包含前面的vo类

public interface PersonDAO //一个验证是否登录的方法
public booleanisLogin(PersonVo pv);
};

8.数据库连接类 DataBaseConnection.java
package org.test.dbc;
import java.sql.*;

public class DataBaseConnection //定义数据库属性

private final StringDBDRIVER = "com.mysql.jdbc.Driver";
private final String DBURL ="jdbc:mysql://localhost/test";
private final String DBUSER ="root";
private final StringDBPASSWORD = "";
private Connection conn =null; //数据库连接对象

//在构造方法中连接数据库
publicDataBaseConnection()try{Class.forName(DBDRIVER);
conn =DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);//创建连接;catch(Exception e)System.out.println(e); }

//返回连接对象
publicConnection getConnection()return this.conn;
}

//关闭数据库连接
public voidclose()try{
conn.close();catch(Exception e)System.out.println(e); }
};

9.DO实现类 PersonDAOImpl.java
package org.test.daoimpl;

import java.sql.*;
import org.test.dao.*;
import org.test.dbc.*;
import org.test.vo.*;

public class PersonDAOImpl implements PersonDAO publicboolean isLogin(PersonVo pv)boolean flag = false;

//声明一个数据库操作对象
PreparedStatement pstmt = null;ResultSet rs = null;String sql = null;
DataBaseConnection dbc = null;//我们的DB连接类的实例
dbc = new DataBaseConnection();

sql= "SELECT name FROM person WHERE name=? and password=?";
try{
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1,pv.getName());
pstmt.setString(2,pv.getPassword());

rs = pstmt.executeQuery();//执行查询
if(rs.next())//有数据,则合法用户
flag = true;
pv.setName(rs.getString(1));
//System.out.println("///");
}

//关闭资源
rs.close();
pstmt.close();catch(Exception e)System.out.println(e);finally// 最后一定要保证数据库已被关闭
dbc.close() ;//System.out.println(flag);
return flag;};

10.DAO工厂类 DAOFactory.java
package org.test.factory;

import org.test.dao.*;
import org.test.daoimpl.*;

public class DAOFactory//static方法,通过类名调用
publicstatic PersonDAO getPersonDAOInstance()return new PersonDAOImpl();//用一个接口的实现类生成一个接口的类};

转载于:https://www.cnblogs.com/wstt/archive/2012/12/06/2804600.html

摘录(jsp)(dao实现登陆验证)相关推荐

  1. [JSP暑假实训] 五.MyEclipse+Servlet+JSP实现火车票网站注册操作及登陆验证

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 前一篇文章讲解 ...

  2. jsp测试mysql_Jsp登陆与MySQL对接验证

    最近在做一个Web项目,账户登陆验证是Web项目中必不可少的环节,所以需要阶段性的记录,帮助自己更好的掌握其中的知识. Jsp登陆涉及到POST方法参数获取,以及MySQL数据库信息的获取.可能因为自 ...

  3. JSP复习笔记——第10章 连接数据库 之 jsp+DAO实现留言管理程序

    2019独角兽企业重金招聘Python工程师标准>>> 案例-jsp+DAO实现留言管理程序 ----------------Note.java------------------- ...

  4. ssm过滤器可以只过滤html吗,SSM登陆验证之过滤器实现

    开发中登陆验证是必不可少的,这里介绍过滤器实现的登陆验证. 第一步:创建一个过滤器 package com.test.filter; import java.io.IOException; impor ...

  5. JavaWeb学习笔记①——Java向下转型在JavaEE中运用——登陆验证

    在学习JavaEE的过程中慢慢了解到Java中编程思想的优秀设计,以下将是一个多态-向下转型的示例,该实例是在Servlet-过滤器中的登陆验证的示例,代码中运用向下转型解决问题 import jav ...

  6. Java的登陆验证问题

    java中的登陆验证问题可以有多种方式进行验证,通过拦截器功能完成,可以通过过滤器功能完成,也可以简单的代码在JSP页面中单独完成,其中都 涉及到一个关键的验证步骤,这个验证原理ASP,PHP,JAV ...

  7. Spring MVC拦截器~~~登陆验证拦截

    [ 30 分 钟 轻 松 入 门 Spring MVC][web 三 大 组 件 之 ~ ~ Filter 过 滤 器] Interceptor 拦截器学习: 1.了解spring mvc拦截器的概念 ...

  8. Filter过滤器~~~编码过滤和登陆验证

    Filter过滤器··简介: Filter过滤器是一个小型的web组件(web三大组件之一), 可以动态地拦截url请求和响应, 以便查看.提取或操作包含在url请求和响应中的信息. Filter过滤 ...

  9. qq登陆inc.php,登陆验证 qq登陆验证 php 登陆验证

    用户登录验证脚本,Chkpwd.asp '=======用户登录验证脚本======= '如果尚未定义Passed对象,则将其定义为false,表示没有通过验证 If IsEmpty(Session( ...

最新文章

  1. ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片
  2. Java基础概念(一)
  3. html5 悬停边框,Html,css:在悬停时更改行的边框颜色(Html,css: Change a row's border colow on hover)...
  4. SAP Spartacus Reference App Structure
  5. 数据结构之基于Java的顺序栈实现
  6. 如果访问设备屏幕宽度小于1024,跳转到移动端
  7. Adobe正式在中国市场推出Creative Cloud创意应用软件
  8. 用C++完成三国杀(无GUI)
  9. c/c++再学习:C与Python相互调用
  10. Rust : 宏、重复、及向量与递归实例
  11. SpringBoot下载项目中文件
  12. 并联串联混合的电压和电流_并联电阻的计算公式(附各种并联电阻网络图解)...
  13. QT 使用QAxWidget和QAxObject操作DOCX和EXECL文件,包括修改数据、插入图片、修改表格、打印文档、复制SHEET、修改页码数等
  14. texlive2020 安装_texlive测试是否安装成功
  15. 无人机原理图、pcb图下载地址
  16. android修改图标
  17. 小白篇:阿里云 对象存储 OSS
  18. Swift - 给图片添加滤镜效果(棕褐色老照片滤镜,黑白滤镜)
  19. cad放大_左手快捷键,右手鼠标,这就是CAD!
  20. redis常见使用场景与实例

热门文章

  1. 应用案例 | 港口货物与运输车辆如何更快找到彼此?成功配对方法在这里!
  2. linux 中swap分区的中庸是什么
  3. matlab ode45设置步长,MATLAB中用ode45求解微分方程,如何设置最大步长?
  4. AUTOSAR RTE 总结
  5. 汇接局、端局、关口局
  6. INCA软件ProF脚本扩展应用
  7. (Fabric学习八)部署区块链浏览器Hyperledger explorer
  8. 上海市黄浦区税务系统代理服务器,上海黄浦区国税局/地税局/税务所/办税服务厅地址及电话...
  9. java 读取rom文件_Android -- 读写文件到内部ROM,SD卡,SharedPreferences,文件读写权限...
  10. 多彩m618plus评测_Delux多彩M618Plus垂直鼠标晒单 使用体验_什么值得买