基于Model2的登录案例

一个小的登录Demo,坑还是挺多的,比如post请求会乱码,包结构等

包结构

JavaBean:(User.java)

package javabean;

public class User {
    private String username;
    private String password;

    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{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

 Login.jsp

<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2021/3/13
  Time: 16:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/servlet/loginServlet" method="post">
    <table>
        <tr><td>用户名:</td><td><input type="text" name="username" /></td></tr>
        <tr><td>密码:</td><td><input type="password" name="password" /></td></tr>
        <tr><td colspan="2"><input type="submit" value="登录"/></td></tr>
        <tr><td></td><td style="color: red">${errInfo}</td></tr>
    </table>
    </form>
</body>
</html>

LoginServlet

package servlet;

import javabean.User;

import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

@WebServlet("/servlet/loginServlet")
public class LoginServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        request.setCharacterEncoding("UTF-8");//防止post乱码
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user=new User();
        user.setUsername(username);
        user.setPassword(password);

        // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
        final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
        final String DB_URL = "jdbc:mysql://localhost:3306/javaee?serverTimezone=UTC&characterEncoding=utf-8";

        // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
        //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
        //static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

        // 数据库的用户名与密码,需要根据自己的设置
        final String USER = "账号";
        final String PASS = "密码";

            Connection conn = null;
            Statement stmt = null;
            try{
                // 注册 JDBC 驱动
                Class.forName(JDBC_DRIVER);
                // 打开链接
                conn = DriverManager.getConnection(DB_URL,USER,PASS);
                // 执行查询
                stmt = conn.createStatement();
                String sql;
                sql = " SELECT * FROM user where username = '"+user.getUsername()+"' and password = '"+user.getPassword()+"'";
                ResultSet rs = stmt.executeQuery(sql);

                if(rs.next()){    //查不到数据 sql执行false
                    String username2 = rs.getString("username");
                    String password2  = rs.getString("password");
                    System.out.println("查到了");
                    if(user.getUsername().equals(username2) && user.getPassword().equals(password2)){
                        User usertemp = new User();
                        usertemp.setUsername(username2);
                        request.setAttribute("usertemp", usertemp);
                        request.getRequestDispatcher("/main.jsp").forward(request, response);
                    }
                }
                else  {
                    request.setAttribute("errInfo", "用户名或密码不正确!");
                    System.out.println("没查到");
                    request.getRequestDispatcher("/Login.jsp").forward(request, response);
                    //response.sendRedirect(request.getContextPath()+"/Login.jsp");
                }
                // 完成后关闭
                rs.close();
                stmt.close();
                conn.close();
            }catch(Exception se){
                // 处理 JDBC 错误
                se.printStackTrace();
            } finally {
                // 关闭资源
                try {
                    if (stmt != null) stmt.close();
                    if (conn != null) conn.close();
                }
                 catch (Exception se) {
                    se.printStackTrace();
                }
            }
        }

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

 main.jsp

<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2021/3/13
  Time: 17:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>登录成功</title>
</head>
<body>
<h1>${usertemp.username},你好。欢迎登录系统!</h1>
</body>
</html>

数据表自己建个简单的就行,字段id,username,password啥的。

下一篇:添加了filter和listenermodel2的登录案例+Filter过滤未登录用户+Listener监听访问人数

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值