在刚学网站开发的时候,我做的第一个功能就是登录功能,虽然现在看来很简单,但是对于当时的我来说是很棘手的,因为这涉及到一系列的请求响应的过程,无从下手,所以今天就详细的讲解一下利用jsp+servlet+mysql如何做一个简单的登录功能
开发需求
用户在登录页填写用户名和密码,点击登录会把数据传到servlet里然后跟数据库进行验证,如果验证成功就转到登录成功界面,用户名或密码错误就跳转到登录失败界面并提示用户名或密码错误。
开发过程
一、数据库建表
打开navicat等mysql工具,建一个数据库,名称随意,然后点击查询,复制以下内容点击运行,完成建表CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(16) DEFAULT NULL,
`password` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
这里我们有三个字段:id(主键),username(用户名),password(密码)
二、Jsp页面
所有的jsp页面都要放在WebRoot下
1、登录页面:login.jsp
登录
这里有两个文本输入框,分别用来输入用户名和密码,我们用Form表单来提交数据,所以action里就要填写进行数据处理的servlet的名字,然后我们用post的方式进行提交,点击登录数据就会上传到名字为Login的servlet
2、登录成功页面:success.jsp
3、登录失败页面:error.jsp
三、后台处理的servlet
1、在myeclipse里右键src–>new–>package,建立一个包名:servlet(可以自定义)
2、右键新建的包名servlet–>new–>servlet,建立一个sevlet类,名字就叫Login,然后点击Finish
3、打开WebRoot下面的web-inf下面的web.xml,填入下面内容
Login
servlet.Login
Login
/Login
4、打开刚才建的Login.java,开始进行数据的处理,打开servlet我们可以看到两个方法,一个是doget,一个是dopost,这里我们doget不用,因为form表单用的是post,还有更多post和get 的区别大家可以自行百度,然后我们直接在doget里调用dopost,以防出错,然后就在dopost进行开发。public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取用户填写的用户名,request.getParameter(“username”);括号里的Username必须和输入框的name属性一致
String username=request.getParameter(“username”);
//获取密码
String password=request.getParameter(“password”);
//实例化数据库类Loginyan,里面存放数据库查询的方法,这个我们下面再写
Loginyan login=new Loginyan();
//调用方法验证
//不为空则登陆成功
if(login.logintrue(username, password)>0){
//如果返回值大于0,说明查询成功,数据库里有这个人的信息,那么我们就跳转到登陆成功界面
response.sendRedirect(request.getContextPath()+”/success.jsp”);
}else{
//如果返回值不大于0,说明查询失败,数据库里没有这个人的信息,那么我们就跳转到登陆失败界面
response.sendRedirect(request.getContextPath()+”/error.jsp”);
}
}
5、书写数据库查询类
(1)在myeclipse里右键src–>new–>package,建立一个包名:jdbc(可以自定义)
(2)右键新建的包名jdbc–>new–>class,建立一个类,名字就叫Loginyan,然后点击Finish
(3)在WebRoot下的lib包下加入mysql连接的jar包,如果没有的话可以在这下载:mysql连接jar包
(4)打开Loginyan,填入下面内容package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//用于登陆以及个人信息获取的数据库类
public class Loginyan {
//登陆验证是否正确
public int logintrue(String a,String b) {
//加载驱动
try {
Class.forName(“com.mysql.jdbc.Driver”);
//建立连接
Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8″,”root”,”123456″);
//建立SQL语句的执行器
Statement stat=conn.createStatement();
//ִ执行SQl语句得到结果集
ResultSet result=stat.executeQuery(“select count(*) from user where username='”+a+”‘and password='”+b+”‘”);
//处理结果集
while(result.next()){
//如果数据库查询到了
return 1;
}
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//否则返回空
return 0;
}
}
在这里我们可以看到数据库连接的几步走
1、加载驱动
2、建立连接
3、建立SQL语句的执行器
4、执行SQl语句得到结果集
5、处理结果集
总结
这样一个完整的利用jsp+servlet+mysql的登录功能就完成了,我写这篇文章的目的不仅仅是教大家做一个简单的登录功能,而是希望大家能明白其中的原理,这所有的步骤其实就是一个“请求–>处理–>响应”的过程,原理明白了,其他的功能也是如此,当然还是要动手敲代码的,熟能生巧,希望大家能够爱上java,爱上编程。
你还没有登录,请先使用 QQ登录 或 注册!
文章评论
发表评论