文档章节

JSP复习笔记——第10章 连接数据库 之 使用JSP基于数据库完成用户登陆程序

暗之幻影
 暗之幻影
发布于 2014/12/18 09:39
字数 693
阅读 59
收藏 0


使用JSP基于数据库完成用户登陆程序
使用Statement存在安全问题:SQL注入漏洞
select * from person where name="darkness" and password="wind" or "1"="1"
密码:wind" or "1"="1

---------------person.sql----------------------
DROP TABLE person ;

CREATE TABLE person 
(
	id varchar(20) not null primary key ,
	name varchar(20) not null ,
	password varchar(20) 
) ;

INSERT INTO person (id,name,password) VALUES ('darkness','wind','ffffff') ;
INSERT INTO person (id,name,password) VALUES ('cloud','sky','wind') ;

-- 提交事务
commit ;


--------------------login.jsp-------------
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
	<title>登陆</title>
</head>
<body>
<center>
	<h1>登陆范例——用户名及密码固定</h1>
	<hr>
	<br>
	<br>
	<form action="login_conf.jsp" method="post">
	<table>
		<tr>
			<td colspan="2">用户登陆</td>
		</tr>
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="uname"></td>
		</tr>
		<tr>
			<td>密&nbsp;&nbsp;码:</td>
			<td><input type="password" name="upassword"></td>
		</tr>
		<tr>
			<td colspan="2">
			<input type="submit" value="登陆">
			<input type="reset" value="重置">
			</td>
		</tr>
	</table>
	</form>
</center>
</body>
</html>


-----------------------login_conf.jsp------------
<%@ page contentType="text/html;charset=gb2312"%>
<%-- 导入java.sql包,表示要使用数据库操作 --%>
<%@ page import="java.sql.*"%>
<html>
<head>
	<title>登陆</title>
</head>
<body>
<center>
	<h1>登陆范例——用户名及密码固定</h1>
	<hr>
	<br>
	<br>
	<%
		// 接收请求的内容
		String name = request.getParameter("uname") ;
		String password = request.getParameter("upassword") ;

		// 定义变量,如果用户是合法用户,则将此标记变为true
		boolean flag = false ;
	%>
	<%
		// 定义数据库操作的常量、对象
		// 数据库驱动程序
		final String DBDRIVER	= "oracle.jdbc.driver.OracleDriver" ;
		// 数据库连接地址
		final String DBURL		= "jdbc:oracle:thin:@localhost:1521:sky" ;
		// 数据库用户名
		final String DBUSER		= "scott" ;
		// 数据库连接密码
		final String DBPASSWORD	= "darkness" ;
		// 声明一个数据库连接对象
		Connection conn			= null ;
		// 声明一个数据库操作对象
		PreparedStatement pstmt	= null ;
		// 声明一个结果集对象
		ResultSet rs			= null ;
		// 声明一个SQL变量,用于保存SQL语句
		String sql = null ;
	%>
	<%
		// 进行数据库操作
		try {
			// 编写SQL语句
			sql = "SELECT name FROM person WHERE id=? and password=?" ;
			// 加载驱动程序
			Class.forName(DBDRIVER) ; 
			// 连接数据库
			conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
			// 实例化数据库操作对象
			pstmt = conn.prepareStatement(sql) ;
			// 设置pstmt的内容
			pstmt.setString(1,name) ;
			pstmt.setString(2,password) ;
			// 查询记录
			rs = pstmt.executeQuery() ;
			// 判断是否有记录
			if(rs.next())
			{
				// 如果有记录,则执行此段代码
				// 用户是合法的,可以登陆
				flag = true ;
			}
			// 依次关闭
			rs.close() ;
			pstmt.close() ;
			conn.close() ;
		}catch(Exception e){
}
	%>
	<%
		// 判断用户名及密码
		if(flag) {
			// 合法用户
	%>
			<jsp:forward page="login_success.jsp"/>
	<%
		} else {
			// 非法用户
	%>
			<jsp:forward page="login_failure.jsp"/>
	<%
		}
	%>
</center>
</body>
</html>


----------------------login_success.jsp-------------
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
	<title>登陆</title>
</head>
<body>
<center>
	<h1>登陆范例——用户名及密码固定</h1>
	<hr>
	<br>
	<br>
	<h2>登陆成功</h2>
	<h3>欢迎<font color="red" size="15">
		<%=request.getParameter("uname")%>
	</font>光临!!!</h3>
</center>
</body>
</html>
------------------login_failure.jsp-------------
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
	<title>登陆</title>
</head>
<body>
<center>
	<h1>登陆范例——用户名及密码固定</h1>
	<hr>
	<br>
	<br>
	<h2>登陆失败</h2>
	<h3>错误的用户名及密码!!!</h3>
	<a href="login.jsp">重新登陆</a>
</center>
</body>
</html>


© 著作权归作者所有

暗之幻影
粉丝 20
博文 377
码字总数 71245
作品 0
南京
高级程序员
私信 提问
JSP复习笔记——第11章 JSP 构架和MVC设计模式

11.1 JSP Model I 体系结构 11.2 JSP Model II 体系结构/MVC设计模式 11.3 使用MVC设计模式改写用户注册程序 11.3.1 使用serlvet实现Controller层 11.3.2 使用jsp实现表示层 11.3.3 使用Jav...

暗之幻影
2014/12/18
75
0
【J2EE】之常用的接口和协议

前言 初接触J2EE,会遇到很多之前没有遇到过的术语,下面我们来简单地汇总一下这些接口和协议吧。 各大接口和协议详解 JDBC 1.定义:Java数据库连接 2.地位:用于Java应用程序连接数据库的标...

m18633778874
2018/04/26
0
0
Apache TomEE 入门指南

介绍 Apache TomEE(发音同“tommy”)是一个新的JavaEE服务器,由Apache软件基金会开发,你大概能够从它的名字猜到,它是从Tomcat而来,同时加入的JavaEE的特征:TomEE=Tomcat+java EE。因此...

oschina
2013/03/19
11.6K
1
JavaWeb22-HTML篇笔记

第22章WEB22-网上商城实战篇 今日任务 Ø 完成后台的功能模块 1.1 网上商城的后台功能的实现:1.1.1 后台的功能的需求: 1.1.1.1 分类管理: 【查询所有分类】 在左侧菜单页面中点击分类管理: 提...

我是小谷粒
2018/06/08
0
0
J2EE平台简介 

1.1.1 J2EE规范 J2EE(Java 2 Platform,Enterprise Edition)是SUN公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。多层次分布式应用模...

曾赛
2009/09/06
392
0

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
31分钟前
2
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
34分钟前
2
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部