欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb Servlet实现网页登录功能

程序员文章站 2022-03-23 14:33:17
上次写了一篇jdbc工具类实现登录功能,但是只能在控制台实现输入用户名密码。这次使用了servlet来实现登录功能,可以通过在页面上输入账号密码,然后提交表单,查询数据库,从而实现登录功能。1、配置文...

上次写了一篇jdbc工具类实现登录功能,但是只能在控制台实现输入用户名密码。这次使用了servlet来实现登录功能,可以通过在页面上输入账号密码,然后提交表单,查询数据库,从而实现登录功能。

1、配置文件,导入jar包

JavaWeb Servlet实现网页登录功能

2、创建数据库环境

use student;
create table user(
 id int primary key auto_increment,
    username varchar(32),
    password varchar(32)
);

insert into user values(null,'zhangsan','123');
insert into user values(null,'lisi','234');

3、在web目录下创建html页面

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>登录页面</title>
</head>
<body>
    <form action="/day14_request/loginservlet" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

4、在src下编写druid.properties文件

driverclassname=com.mysql.jdbc.driver
url=jdbc:mysql://localhost:3306/student
username=root
password=root
maxactive=10
maxwait=1000

5、创建包cn.itcast.domain,创建类user

package cn.itcast.domain;

/*
    用户的实体类
 */
public class user {
    private int id;
    private string username;
    private string password;

    public int getid() {
        return id;
    }

    public void setid(int id) {
        this.id = id;
    }

    public string getusername() {
        return username;
    }

    public void setusername(string username) {
        this.username = username;
    }

    public string getpassword() {
        return password;
    }

    public void setpassword(string password) {
        this.password = password;
    }

    @override
    public string tostring() {
        return "user{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

6、创建包cn.itcast.util,编写工具类jdbcutils

package cn.itcast.util;

import com.alibaba.druid.pool.druiddatasourcefactory;

import javax.sql.datasource;
import java.io.ioexception;
import java.io.inputstream;
import java.sql.connection;
import java.sql.sqlexception;
import java.util.properties;

/*
    jdbc工具类,使用durid连接池
 */
public class jdbcutils {
    private static datasource datasource;

    static {
        try {
            //1、加载配置文件
            properties properties = new properties();
            inputstream resourceasstream = jdbcutils.class.getclassloader().getresourceasstream("druid.properties");
            properties.load(resourceasstream);

            //2、初始化连接池对象
            datasource = druiddatasourcefactory.createdatasource(properties);

        } catch (ioexception e) {
            e.printstacktrace();
        } catch (exception e) {
            e.printstacktrace();
        }


    }

    /**
     * 获取连接池对象
     */
    public static datasource getdatasource() {
        return datasource;
    }

    /**
     * 获取连接connection对象
     */
    public static connection getconnection() throws sqlexception {
        return datasource.getconnection();
    }
}

7、创建包cn.itcast.dao,创建类userdao,提供login方法

package cn.itcast.dao;

import cn.itcast.domain.user;
import cn.itcast.util.jdbcutils;
import org.springframework.dao.dataaccessexception;
import org.springframework.jdbc.core.beanpropertyrowmapper;
import org.springframework.jdbc.core.jdbctemplate;

/**
 * 操作数据库中user表的类
 */
public class userdao {
    //声明jdbctemplate对象共用
    private jdbctemplate jdbctemplate = new jdbctemplate(jdbcutils.getdatasource());

    /**
     * 登录方法
     * @param loginuser 只有用户和密码
     * @return user 包含用户全部信息,没有查询到,返回null
     */
    public user login(user loginuser) {

        try {
            //1、编写sql
            string sql = "select * from user where username = ? and password = ?";

            //2、调用query方法
            user user = jdbctemplate.queryforobject(sql,
                    new beanpropertyrowmapper<user>(user.class),
                    loginuser.getusername(),loginuser.getpassword());
            return user;
        } catch (dataaccessexception e) {
            e.printstacktrace();//记录日志
            return null;
        }
    }

}

8、编写cn.itcast.web.servlet.loginservlet类

package cn.itcast.web.servlet;

import cn.itcast.dao.userdao;
import cn.itcast.domain.user;
import org.apache.commons.beanutils.beanutils;

import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import java.io.ioexception;
import java.lang.reflect.invocationtargetexception;
import java.util.map;

@webservlet("/loginservlet")
public class loginservlet extends httpservlet {
    protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        //1、设置编码
        request.setcharacterencoding("utf-8");

        /*//2、获取请求参数
        string username = request.getparameter("username");
        string password = request.getparameter("password");
        //3、封装对象
        user loginuser = new user();
        loginuser.setusername(username);
        loginuser.setpassword(password);*/

        //2、获取所有请求参数(这里使用beanutils来简化操作)
        map<string, string[]> parametermap = request.getparametermap();
        //3.1 创建user对象
        user loginuser = new user();
        //3.2 使用beanutils对象
        try {
            beanutils.populate(loginuser,parametermap);
        } catch (illegalaccessexception e) {
            e.printstacktrace();
        } catch (invocationtargetexception e) {
            e.printstacktrace();
        }


        //4、调用userdao的login方法
        userdao userdao = new userdao();
        user user = userdao.login(loginuser);

        //5、判断user
        if (user == null) {
            //登录失败
            request.getrequestdispatcher("/failservlet").forward(request,response);
        } else {
            //登录成功
            //存储数据
            request.setattribute("user",user);
            //转发
            request.getrequestdispatcher("/successservlet").forward(request,response);
        }
    }

    protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        this.dopost(request,response);
    }
}

运行结果:

1、目录结构

JavaWeb Servlet实现网页登录功能

2、运行界面

JavaWeb Servlet实现网页登录功能

3、输入用户名密码均正确

JavaWeb Servlet实现网页登录功能

4、跳转到成功登录界面

JavaWeb Servlet实现网页登录功能

5、输入用户名或密码错误时

JavaWeb Servlet实现网页登录功能

6、跳转登录失败界面

JavaWeb Servlet实现网页登录功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。