摘录(jsp)(dao实现登陆验证)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值