JSP+Servlet+JavaBean实现用户登陆,用户退出

来源:互联网 发布:logo的设计软件 编辑:程序博客网 时间:2024/05/22 01:37

注册还是沿用上一期的表和数据库
先看看文件布局

先看看JavaBean的设计User.java

package model;/** * 用户实体类 */public class User {    private int id;         // 标识    private String username;// 用户名    private String password;// 密码    private String sex;     // 性别    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;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}

接下来看看数据库的操作DataBaseUtil:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/** * 数据库连接工具类 */public class DataBaseUtil {    /**     * 获取数据库连接     * @return Connection对象     */    public static Connection getConnection(){        Connection conn = null;        try {            // 加载驱动            Class.forName("com.mysql.jdbc.Driver");            // 数据库连接url            String url = "jdbc:mysql://localhost:3306/MyBlog";            // 获取数据库连接            conn = DriverManager.getConnection(url, "root", "");        } catch (Exception e) {            e.printStackTrace();        }        return conn;    }    /**     * 关闭数据库连接     * @param conn Connection对象     */    public static void closeConnection(Connection conn){        // 判断conn是否为空        if(conn != null){            try {                conn.close();   // 关闭数据库连接            } catch (SQLException e) {                e.printStackTrace();            }        }    }}

登陆的UserDao.java

import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import model.User;/** * 用户数据库操作类 */public class UserDao {    /**     * 用户登录     * @param username 用户名     * @param password 密码     * @return 用户对象     */    public User login(String username, String password){        User user = null;        // 获取数据库连接Connection对象        Connection conn = DataBaseUtil.getConnection();        // 根据用户名及密码查询用户信息        String sql = "select * from tb_user where username = ? and password = ?";        try {            // 获取PreparedStatement对象            PreparedStatement ps = conn.prepareStatement(sql);            // 对SQL语句的占位符参数进行动态赋值            ps.setString(1, username);            ps.setString(2, password);            // 执行查询获取结果集            ResultSet rs = ps.executeQuery();            // 判断结果集是否有效            if(rs.next()){                // 实例化一个用户对象                user = new User();                // 对用户对象属性赋值                user.setId(rs.getInt("id"));                user.setUsername(rs.getString("username"));                user.setPassword(rs.getString("password"));                user.setSex(rs.getString("sex"));            }            // 释放此 ResultSet 对象的数据库和 JDBC 资源            rs.close();            // 释放此 PreparedStatement 对象的数据库和 JDBC 资源            ps.close();        } catch (Exception e) {            e.printStackTrace();        }finally{            // 关闭数据库连接            DataBaseUtil.closeConnection(conn);        }        return user;    }    /**     * 判断用户名在数据库中是否存在     * @param username 用户名     * @return 布尔值     */    public boolean userIsExist(String username){        // 获取数据库连接Connection对象        Connection conn = DataBaseUtil.getConnection();        // 根据指定用户名查询用户信息        String sql = "select * from tb_user where username = ?";        try {            // 获取PreparedStatement对象            PreparedStatement ps = conn.prepareStatement(sql);            // 对用户对象属性赋值            ps.setString(1, username);            // 执行查询获取结果集            ResultSet rs = ps.executeQuery();            // 判断结果集是否有效            if(!rs.next()){                // 如果无效则证明此用户名可用                return true;            }            // 释放此 ResultSet 对象的数据库和 JDBC 资源            rs.close();            // 释放此 PreparedStatement 对象的数据库和 JDBC 资源            ps.close();        } catch (SQLException e) {            e.printStackTrace();        }finally{            // 关闭数据库连接            DataBaseUtil.closeConnection(conn);        }        return false;    }}

LoginServlet.java

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import model.User;/** * 用户登录Servlet类 */public class LoginServlet extends HttpServlet {    private static final long serialVersionUID = -3009431503363456775L;    @Override    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 获取用户名        String username = request.getParameter("username");        // 获取密码        String password = request.getParameter("password");        // 实例化UserDao对象        UserDao userDao = new UserDao();            // 根据用户密码查询用户        User user = userDao.login(username, password);        // 判断user是否为空        if(user != null){            // 将用户对象放入session中            request.getSession().setAttribute("user", user);            // 转发到result.jsp页面            request.getRequestDispatcher("message.jsp").forward(request, response);        }else{            // 登录失败            request.setAttribute("info", "错误:用户名或密码错误!");            request.getRequestDispatcher("message.jsp").forward(request, response);        }    }}

UserExitServlet.java

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import model.User;/** * 用户退出Servlet */public class UserExitServlet extends HttpServlet {    private static final long serialVersionUID = 1599366365079846238L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 获取session        HttpSession session = request.getSession();        // 获取用户对象        User user = (User)session.getAttribute("user");        // 判断用户是否有效        if(user != null){            // 将用户对象逐出session            session.removeAttribute("user");            // 设置提示信息            request.setAttribute("info", user.getUsername() + " 已成功退出!");        }        // 转发到message.jsp页面        request.getRequestDispatcher("message.jsp").forward(request, response);    }}

最后就是我们的jsp页面:
login.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>用户登录</title>    <link rel="stylesheet" type="text/css" href="images/styles.css">    <script type="text/javascript">        function login(form){            if(form.username.value == ""){                alert("用户不能为空!");                return false;            }            if(form.password.value == ""){                alert("密码不能为空!");                return false;            }        }    </script>  </head>  <body>      <div align="center">            <div class="div1">                <div class="top">用户注册</div>                <div class="bottom">                    <div class="div2">                        <ul>                            <li><a href="login.jsp">用户登录</a></li>                            <li><a href="message.jsp">当前用户</a></li>                            <li><a href="UserExitServlet">用户退出</a></li>                        </ul>                    </div>                     <div class="div3">                         <form action="LoginServlet" method="post" onSubmit="return login(this);">                            <table align="center" width="300" border="0" class="tb1">                                <tr>                                    <td align="right">用户名:</td>                                    <td>                                        <input type="text" name="username">                                    </td>                                </tr>                                <tr>                                    <td align="right">密 码:</td>                                    <td>                                        <input type="password" name="password">                                    </td>                                </tr>                                <tr>                                    <td colspan="2" align="center" height="50">                                        <input type="submit" value="登 录">                                        <input type="reset" value="重 置">                                    </td>                                </tr>                            </table>                        </form>                     </div>                </div>            </div>      </div>  </body></html>

message.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%><%@ page import="model.User" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>    <head>        <title>提示信息</title>        <link rel="stylesheet" type="text/css" href="images/styles.css">    </head>    <body>        <div align="center">            <div class="div1">                <div class="top">提示信息</div>                <div class="bottom">                    <div class="div2">                        <ul>                                        <li><a href="login.jsp">用户登录</a></li>                            <li><a href="message.jsp">当前用户</a></li>                            <li><a href="UserExitServlet">用户退出</a></li>                        </ul>                    </div>                     <div class="div3">                         <%                             // 获取提示信息                            String info = (String)request.getAttribute("info");                            // 如果提示信息不为空,则输出提示信息                            if(info != null){                                out.println(info);                            }                            // 获取登录的用户信息                            User user = (User)session.getAttribute("user");                            // 判断用户是否登录                            if(user != null){                        %>                        <table align="center" width="350" border="1" height="200" bordercolor="#E8F4CC">                            <tr>                                <td align="center" colspan="2">                                    <span style="font-weight: bold;font-size: 18px;"><%=user.getUsername() %></span>                                    登录成功!                                </td>                            </tr>                                                  <tr>                                <td align="right">性 别:</td>                                <td><%=user.getSex()%></td>                            </tr>                                              </table>                        <%                                                          }else{                                out.println("<br>对不起,您还没有登录!");                            }                        %>                     </div>                </div>            </div>      </div>    </body></html>

看看登陆情况:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
用户退出后再点击当前用户:
这里写图片描述

0 0