栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一个简单的登录案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一个简单的登录案例

需求:
    编写login.html 登录页面使用Druid数据库连接池技术, 操作mysql使用JDBC Template 技术封装 JDBC登录成功跳转到SuccessServlet展示: 登录成功!登录失败跳转到FailServlet展示: 登录失败, 用户名或密码错误
分析

index.jsp登录页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    登录页面
  
  
    
用户名:
密码:

html文件中form表单中的action路径的写法: 虚拟目录+Servlet的资源路径

配置文件

把druid.properties文件复制到 src 目录下,

druid.properties文件如下

username=root
password=qq124519
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/SchoolTownDB?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=yes
initialSize=10
maxActive=50
maxWait=3000

lib所在的目录位置: 在WEB-INF目录下, 所以在WEB-INF目录下创建一个lib目录
加载以下的jar包:(把以下的jar包复制过来), 并且要加载到Library

    用于连接数据库的jar包 mysql-connector-java-8.0.16.jar用于数据库连接池的jar包 druid-1.0.9.jar用于JDBCTemplate的jar包
    commons-logging-1.2.jar
    spring-beans-5.0.0.RELEASE.jar
    spring-core-5.0.0.RELEASE.jar
    spring-jdbc-5.0.0.RELEASE.jar
    spring-tx-5.0.0.RELEASE.jar

    如图所示:

上面的jar包可以在官网下载, 也可以在下面连接下载
链接:https://pan.baidu.com/s/1vXtLb4xjMyY9889NH5e1EA
提取码:1234


创建数据库环境

创建数据库SchoolTownDB和数据表USER (在MySQL环境上)
数据表包括字段id, username, password

-- 创建数据库
CREATE DATAbase IF NOT EXISTS SchoolTownDB;

-- 使用数据库
USE SchoolTownDB;

-- 创建USER表
CREATE TABLE USER(
	id INT PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(32) UNIQUE NOT NULL,
	PASSWORD VARCHAR(32) NOT NULL	
);

为数据库加上一条数据,方便测试

创建User类
package 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 + ''' +
                '}';
    }
}


创建UserDao类

用来操作数据库, 去提供login的方法

package dao;

import domain.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import until.JDBCUtils;


public class UserDao {
    //声明JDBCTemplate对象共用
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    
    public User login(User loginUser) {

        //编写sql
        String sql ="select * from user where username=? and password =?";
        //调用query方法
        User user = template.queryForObject(sql, new BeanPropertyRowMapper(User.class), loginUser.getUsername(), loginUser.getPassword());

        return user;
    }
}

创建工具类JDBCUtils
package until;

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;


public class JDBCUtils {

    private static DataSource ds;

    //用静态代码块加载配置文件
    static {

        try {
            //加载配置文件
            Properties pro =new Properties();

            //使用ClassLoader加载配置文件, 获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    
    public static DataSource getDataSource(){
        return ds;
    }

    

    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}


编写LoginServlet类
package servlet;

import dao.UserDao;
import domain.User;

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;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置一下编码解决网络乱码问题
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");//设置编码

        //获取请求参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //封装user对象
        User loginUser = new User();
        loginUser.setUsername(username);
        loginUser.setPassword(password);

        //调用UserDao的login方法
        UserDao dao = new UserDao();
        User user = dao.login(loginUser);

        //判断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);

    }
}

如果登录成功,则跳转到SuccessServlet

package servlet;

import domain.User;

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;

@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取request域中共享的user对象
        User user = (User) request.getAttribute("user");

        if (user!=null){
            //给页面写一句话

            //设置一下编码解决网络乱码问题
            response.setContentType("text/html;charset=utf-8");
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");//设置编码

            //输出
            response.getWriter().write("登陆成功,"+user.getUsername()+"欢迎您");
        }


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}


如果登录失败,则跳转到FailServlet

package servlet;

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;

@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //给页面写一句话

        //设置一下编码解决网络乱码问题
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");//设置编码

        //输出
        response.getWriter().write("登陆失败,用户名或密码错误");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

到这里,代码就写完了,下面测试以下,启动服务器

测试结果

总结以下,需要用到的代码块和jar包

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号