学生管理系统-登录功能

学生管理系统-登录功能


最近在学JavaWeb,可以通过这个小案例理解JavaWeb是如何工作的,怎样通过前台页面调取后台数据库里的数据,以及用户登录等等
JavaBean+JSP+Servlet
数据库用的是mysql
编辑器用的是idea

Servlet是什么?

servlet

1,客户端发送请求至服务器端;
2,服务器将请求信息发送至 Servlet;
3,Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4,服务器将响应返回给客户端。

Javabean是什么?

说白了就是类而已,只不过现在改了一个名字而已,之前写的时候都是一堆类混在一起,现在就是把他们拆开,按照不同的功能放在一起,一般我们用四个包来区分。
包的命名

1, bean包:这个包里面放的都是一些属性类,一般数据库里面有什么表,相应的就要有什么bean,当然表里面的数据在bean里面也要全有,比如有一个user表,表里面有username,password那么在该包下就要建立相应的User(User只是一个名字,你自己可以随便取)类,有私有变量username和password,与之对应的get和set函数

2,control:这个包放置的就是servlet类,用来网页与后台数据的交互

3,dao :这个包就是放一些类,类里面的函数就是用来对数据库进行操作的,例如增删改查。

4,util :这包里面放的就是用来连接数据库的函数,在Dao函数里面直接调用这个就能连接数据库,代码复用。

一,登录界面(login.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录学生管理系统</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <link type="text/css" href="css/login.css" rel="stylesheet">
</head>
<body>
    <div >
        <div ><img class="bj bj-blur" src="img/login-bj.jpg"></div>
        <div class="box">
            <h1>学生管理系统登录</h1>
            <h2>登录失败,账号或者密码错误</h2>
            <form method="post" action="/c">
            <ul>
                <li>用户名:<input type="text" name="username"></li>
                <li> 密&nbsp;&nbsp;码 :<input type="password" name="password"></li>
                <li class="i"><span><input type="radio" name="G" value="0">管理员</span><span><input type="radio" checked name="G" value="1">学生</span></li>
                <li><input type="submit" value="登录"></li>
                <li><input type="button" value="注册"></li>
                <%
                    if (session.getAttribute("msg")!=null){
                        session.setAttribute("msg",null);
                        %>
                <script>
                    $("h2").css("display","block");
                    $("input").focus(function () {
                        $("h2").css("display","none");
                    })
                </script>
                <%
                    }
                %>
            </ul>

            </form>
        </div>
    </div>
<script>
    $("input[type=button]").click(function () {
        alert("注册功能暂未开放!")
    })
    $("img").removeClass("bj-blur");
    $(".box").mouseover(function () {
        $("img").addClass("bj-blur");
        $(".box").css("opacity",0.9);
    })
    $(".box").mouseleave(function () {
        $("img").removeClass("bj-blur");
        $(".box").css("opacity",0.5);
    })
</script>
</body>
</html>

登录界面

二,我们需要建立与之匹配的数据库,需要用户名和密码和标记是否管理员(0为管理员,1位普通用户)

数据库

三:接下来我们需要建立一个Bean的包,上面说了这个里面的数据与数据库都是一一对应的,我们给包取名为bean,将类取名为User

User.java

package com.student.bean;

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;
    }
}

四:接下来我们需要建立数据库的连接在util包中创建Tool.java

Tool.java

 package com.student.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 数据库操作
 */
public class Tool {

    /**
     * 获取数据库连接
     * @return 数据库对象
     */
    public static Connection getConnection(){
        Connection conn=null;
        try {
            //加载MySql数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            String url="JDBC:Mysql://localhost:3306/student";
            String username="root";
            String password="wxy";
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return  conn;
    }


    /**
     * 关闭数据库连接
     * @param conn 数据库对象
     * @param ps
     */
    public static void close(Connection conn, PreparedStatement ps){
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }





    public static void main(String[] args) {
        Connection conn = Tool.getConnection();
        if (conn!=null){
            System.out.println("连接成功");
        }else {
            System.out.println("连接失败");
        }
    }
}

五:然后我们就要建立servlet类,在control包中,建立一个checkLogin的servlet类

checkLogin.java

package com.student.control;

import com.student.bean.User;
import com.student.dao.UserDao;

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 java.io.IOException;


/**
 * 0管理员
 * 1普通用户
 */
public class checkLogin  extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session=request.getSession();
        String uname=request.getParameter("username");
        String pwd=request.getParameter("password");
        //标记登录类型
        int g = Integer.parseInt(request.getParameter("G"));
        //定义全局身份标识
        if (g==0){
            session.getServletContext().setAttribute("sf","管理员");
        }else {
            session.getServletContext().setAttribute("sf","学生(普通用户)");
        }
        //管理员登录0
        User u = new UserDao().checkLogin(uname, pwd,g);
        //普通用户1
        User uStudent=new UserDao().checkLogin(uname,pwd,g);
        if (u!=null || uStudent!=null){

            //标记用户名
            session.setAttribute("u",uname);
            response.sendRedirect("main.jsp");
        }else {
            response.sendRedirect("login.jsp");
            session.setAttribute("msg","登录失败,账号或者密码错误!");
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

六:配置servlet文件,用来实现从jsp界面跳转到servlet的操作。在WEB-INF下面的web.xml文件

此处输入图片的描述

    <servlet>
        <servlet-name>checkLogin</servlet-name>
        <servlet-class>com.student.control.checkLogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>checkLogin</servlet-name>
        <url-pattern>/c</url-pattern>
    </servlet-mapping>

七:建立Dao,用来执行sql语句,判断是否登录成功。类名取为UserDao,

UserDao.java

package com.student.dao;

import com.student.bean.User;
import com.student.util.Tool;

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

public class UserDao {

    /**
     * 判断用户输入账号密码是否正确
     * @param name 用户名
     * @param pwd 密码
     * @return  User对象
     */
    public User checkLogin(String name,String pwd,int isRoot){
        Connection conn = Tool.getConnection();
        PreparedStatement ps =null;
        ResultSet rs=null;
        User user=null;
        try {
            ps = conn.prepareStatement("select * from loginuser where username=? and password=? and isRoot=?");
            ps.setString(1,name);
            ps.setString(2,pwd);
            ps.setInt(3,isRoot);
            rs= ps.executeQuery();

            while (rs.next()){
                user = new User();
                user.setID(rs.getInt(1));
                user.setUsername(rs.getString(2));
                user.setPassword(rs.getString(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            Tool.close(conn,ps);
        }
        return user;
    }

}

八:执行login.jsp

执行过程

最后修改:2019 年 02 月 09 日 01 : 16 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

8 条评论

  1. athony

    还缺一个service包吧

  2. 重庆微信抢房

    正常路过。。。

  3. 北极星

    哇哦,能发个源码嘛

  4. ponpoue

    日常,来串门,欢迎去我的博客访问

  5. 孙亮亮

    厉害··· 博客也很简洁轻便。

  6. 楚狂人博客

    自己写的么,厉害啊

  7. 蓝色花海

    请大佬加友链OωO
    名称:二十二片海
    简介:我的船上没有手下,只有伙伴
    图标:https://ws1.sinaimg.cn/large/0072Lfvtly1fxs8i0yqaij30hs0hsjrr.jpg
    网址:www.22sea.cn

  8. 兴凡

    串门!!