Promise 计算机基础知识 学生排队 深度图像 oop concurrency jq遍历对象 jq选择第一个子元素 less的比较级 mysql分区表优劣分析 python正则提取字符串 python字典get python开发 python参数 python基础练习 random函数用法 python读文件 python零基础 java8特性 java集合 java实例变量 java获取文件 磁盘分区软件 凯立德地图免费下载 subprocess 高效能人士的七个习惯pdf python封装 地球末日攻略 流媒体下载 脚本语言 剑灵龙骨卷轴 水之td合成 浏览器安卓 pip安装教程 达芬奇resolve 下雪软件 网页制作教程 剑魔刷图加点 按键精灵脚本制作教程 惠普键盘灯怎么开
当前位置: 首页 > 学习教程  > 编程语言

使用servlet实现简单学生用户登陆功能登陆功能的详细步骤

2020/8/11 19:54:43 文章标签:

在这里插入图片描述
在数据库里面创建一个student表:
在这里插入图片描述
注意在动态项目的lib目录要自己创建
在这里插入图片描述

登陆前端页面

登陆功能使用post请求,这样可以使你提交表单数据不会在浏览器地址栏中显示

Login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login01</title>
</head>
<body>
<form action="/request/loginServlet" method="post">
        <table border="1" cellspacing="0">
            <tr>
                <td><label for="id1">用户名:</label></td>
                <td> <input id="id1" type="text" name="username" placeholder="请输入用户名"></td>
            </tr>
            <tr>
                <td><label for="id2">密&nbsp;&nbsp;&nbsp;&nbsp;码:</label></td>
                <td> <input id="id2" type="password" name="password" placeholder="请输入密码"></td>
            </tr>
            <tr>
                <!--两种提交方式-->
                <!--<td colspan="2" align="center"><input type="submit" value="登陆"></td>-->
               <td align="center" colspan="2" > <input type="button" value="登陆按钮" onclick="this.form.submit()"> </td>
            </tr>
        </table>
</form>
</body>
</html>

Domin包下创建一个User用户类:

package com.xxx.domain;
public class User {
    private String name;
    private String password;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

在dao包下创建UserDao类

package com.xxx.dao;

import com.xxx.Utils.JdbcUtilsDruid;
import com.xxx.domain.User;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDao {
    
    public User login(User user){
        User user1 = null;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            connection = JdbcUtilsDruid.getConnection();
            String sql = "select * from student where name = ?and pass = ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,user.getName());
            preparedStatement.setString(2,user.getPassword());
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                user1 = new User();
                user1.setName(resultSet.getString("name"));
                user1.setPassword(resultSet.getString("pass"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭连接
         JdbcUtilsDruid.closeAll(resultSet,preparedStatement,connection);
        }
        return user1;
    }
}

在service包下创建UserService类:

public class UserService {

    private UserDao userDao = new UserDao();
    public User login(User user){
        return userDao.login(user);
    }
}

在servlet包下创建LoginServlet类

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
       // System.out.println("哈哈哈哈"+username+"\t"+password);
        User user = new User();
        user.setName(username);
        user.setPassword(password);
        UserService userService = new UserService();
        User login = userService.login(user);
        if(login!=null){
            //System.out.println("成功");
            //用键值对存储登陆成功的用户对象
            req.setAttribute("user",login);
            //跳转到登陆成功的servlet
            req.getRequestDispatcher("/successServlet").forward(req,resp);
        }else {
            //跳转到登陆失败的servlet
            req.getRequestDispatcher("/failServlet").forward(req,resp);
            //System.out.println("失败");
        }
    }
}

在servlet包下创建SuccessServlet类

@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // resp.setCharacterEncoding("GBK");这种也可以
        //设置中文显示
        resp.setContentType("text/html;charset=utf-8");
        //获取到登陆成功的用户对象
        User user = (User)req.getAttribute("user");
        System.out.println("用户名:"+user.getName());
        System.out.println("密码:"+user.getPassword());
        //在网页输出登陆成功用户的姓名
        resp.getWriter().print("登陆成功,欢迎"+user.getName()+"同学");
        //resp.getWriter().write("登陆成功,欢迎"+username+"同学");对应GBK的那种

    }
}

在servlet包下创建FailServlet类

@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //System.out.println("失败了,请重新登陆");
        resp.setCharacterEncoding("GBK");

        resp.getWriter().write("失败了,请重新登陆");
    }
}

JDBC工具类:

使用了阿里的jdbc连接池技术要导入jar包
Jar包,mysql jar包和阿里连接池jar包,和阿里配置文件我都放在百度网盘里

链接:https://pan.baidu.com/s/1vfPPy7Rm6e9hrBLYQiC8gA
提取码:dlwf

public class JdbcUtilsDruid {

    private static DataSource ds;//定义连接池对象
    static {
        Properties properties = new Properties();//创建配置文件对象
        InputStream resourceAsStream = JdbcUtilsDruid.class.getClassLoader().getResourceAsStream("druid.properties");
        try {
            properties.load(resourceAsStream);
            //通过工厂创建的方法创建连接池对象,配置文件中连接数据库的信息都在连接池对象里面
            ds = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //获取连接
    public static Connection getConnection() throws Exception{
        return ds.getConnection();
    }
    //关闭资源
    public static void closeAll(AutoCloseable ... all){
        for(AutoCloseable a:all){
            if(a!=null){
                try {
                    a.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

配置文件:

配置文件的位置在src下面
在这里插入图片描述
文件名及文件类型druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/zang?useUnicode=true&characterEncoding=utf8
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000


本文链接: http://www.dtmao.cc/news_show_100246.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?