Java Web应用程序实现用户登录、学生信息管理和验证码验证以及页面跳转等基本功能(IDEA)含(Ajax、JSTL)

一、具体框架以及代码功能的展示:

 

1. 文件结构

  • web03: 项目根目录。

    • src: 包含Java源代码。

      • cn.lvb: 主包。

        • bean: 包含实体类,如 Book 和 Student

        • controller: 包含处理HTTP请求的Servlet类,如 DoLoginIndexStuList1VerifyCode

        • dao: 包含数据访问对象(DAO)类,如 StudentDAO

    • web: 包含Web资源。

      • css: 样式表文件。

      • fonts: 字体文件。

      • images: 图片资源。

      • js: JavaScript文件。

      • WEB-INF: 包含受保护的资源,如 web.xml 和 JSP 文件。

      • jsp: 包含JSP页面,如 index.jsp 和 stu_list.jsp

      • login.html: 登录页面。

2. Java 类

  • Book.java: 一个简单的Java Bean类,表示书籍实体,包含书籍的ID、名称、作者、价格和描述等属性。

  • DoLogin.java: 处理用户登录请求的Servlet。它验证用户输入的用户名、密码和验证码,并返回JSON格式的响应。

  • Index.java: 处理主页请求的Servlet。检查用户是否已登录,如果未登录则重定向到登录页面。

  • StuList1.java: 处理学生列表请求的Servlet。从 StudentDAO 获取学生列表并转发到 stu_list.jsp 页面。

  • VerifyCode.java: 生成验证码图片的Servlet。验证码图片用于登录时的验证。

  • StudentDAO.java: 数据访问对象类,提供对学生数据的访问方法,如获取所有学生列表或根据学号获取单个学生信息。

3. JSP 页面

  • index.jsp: 主页面,显示后台管理系统的布局和导航菜单。

  • stu_list.jsp: 显示学生列表的页面,使用JSTL标签库遍历并显示学生信息。

  • login.html: 登录页面,包含用户名、密码和验证码的输入表单,以及登录按钮。

4. HTML 和 JavaScript

  • login.html: 包含登录表单和JavaScript代码,用于处理登录请求和验证码刷新。

    • mylogin(): JavaScript函数,通过AJAX发送登录请求到 DoLogin Servlet,并根据响应结果进行相应操作。

    • refreshCaptcha(): JavaScript函数,用于刷新验证码图片。

5. CSS 和样式

  • CSS 文件: 包含样式表文件,用于定义页面的外观和布局。

  • 内联样式: 在 login.html 中定义了登录页面的样式,包括背景图片、表单布局等。

6. Servlet 功能

  • DoLogin: 处理登录请求,验证用户输入的用户名、密码和验证码,并返回JSON格式的响应。

  • Index: 检查用户是否已登录,如果未登录则重定向到登录页面,否则转发到主页。

  • StuList1: 获取学生列表并转发到显示页面。

  • VerifyCode: 生成验证码图片并存储在会话中,用于验证用户输入。

7. DAO 功能

  • StudentDAO: 提供对学生数据的访问方法,如获取所有学生列表或根据学号获取单个学生信息。

8. 页面交互

  • AJAX 请求: 在 login.html 中使用AJAX发送登录请求,并根据响应结果进行页面跳转或显示错误信息。

  • 验证码刷新: 通过JavaScript函数 refreshCaptcha() 刷新验证码图片,避免浏览器缓存旧的验证码。

9. 页面布局

  • index.jsp: 使用Bootstrap框架和自定义样式构建后台管理系统的布局,包括侧边导航栏、头部信息和主要内容区域。

  • stu_list.jsp: 使用Bootstrap表格组件显示学生列表,并提供编辑和删除操作的按钮。

10. 依赖库

  • Bootstrap: 用于构建响应式页面布局和样式。

  • jQuery: 用于简化JavaScript代码和处理AJAX请求。

  • JSTL: 用于在JSP页面中遍历和显示数据。

!!
!!运行结果展示先放在这里,具体代码可往下看:

用户名密码代码已经设置好了:tom 123456 :

当登陆用户名密码错误时:

正确时但验证码错误,重新刷新验证码登录:

都正确时,进入页面:

但是要注意 只有登陆了之后http://localhost:8080/web03/Index 这个网页才能直接访问,否则运行后只会跳转到让你登陆的界面:http://localhost:8080/web03/login.html

 二、代码各个部分以及功能展示:

这个 Index 类是一个Servlet,用于处理主页请求。它的主要功能是检查用户是否已经登录,并根据

用户的登录状态决定是否允许访问主页。以下是代码的详细解释:

1. 注解

  • @WebServlet("/Index"): 这个注解将该Servlet映射到URL路径 /Index。当用户访问 /Index 时,该Servlet会被调用。

2. doGet 方法

  • HttpSession session = request.getSession();: 获取当前用户的会话(Session)。会话用于在多个请求之间存储用户相关的信息。

  • String user = (String)session.getAttribute("user");: 从会话中获取名为 user 的属性。这个属性通常在用户登录成功后设置(例如在 DoLogin Servlet 中设置)。

  • if(user==null): 检查 user 属性是否为 null。如果为 null,表示用户未登录。

    • response.sendRedirect("login.html");: 如果用户未登录,重定向到 login.html 页面,要求用户登录。

    • return;: 结束方法执行,确保后续代码不会被执行。

  • request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request,response);: 如果用户已登录,将请求转发到 /WEB-INF/jsp/index.jsp 页面。/WEB-INF 目录下的资源通常受保护,不能直接通过URL访问,只能通过服务器端转发访问。

3. doPost 方法

  • protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException: 处理POST请求。

    • doGet(request, response);: 在 doPost 方法中调用 doGet 方法,使得POST请求和GET请求的处理逻辑一致。这是一种常见的做法,特别是在处理表单提交时。

4. 功能总结

  • 用户登录验证: 该Servlet首先检查用户是否已经登录。如果用户未登录,则重定向到登录页面。

  • 页面转发: 如果用户已登录,则将请求转发到主页 (index.jsp),允许用户访问主页内容。

  • 安全性: 通过检查会话中的 user 属性,确保只有已登录的用户才能访问主页。

5. 使用场景

  • 这个Servlet通常用于保护需要登录才能访问的页面。例如,在后台管理系统中,只有登录后的用户才能访问管理页面。

  • 通过这种方式,可以有效地防止未授权用户访问受保护的资源。

6. 相关技术

  • HttpSession: 用于在多个请求之间存储用户信息。会话通常用于跟踪用户的登录状态。

  • RequestDispatcher: 用于将请求转发到其他资源(如JSP页面)。转发是在服务器端完成的,客户端不会知道转发的目标资源。

  • sendRedirect: 用于将客户端重定向到另一个URL。与转发不同,重定向会导致客户端发起一个新的请求。

通过这个Servlet,应用程序能够确保只有已登录的用户才能访问主页,从而保护敏感资源不被未授权用户访问。

package cn.lvb.controller;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

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

        HttpSession session = request.getSession();
        String user = (String)session.getAttribute("user");
        if(user==null)
        {
            response.sendRedirect("login.html");
            return;
        }

        request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request,response);
    }

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

这个 index.jsp 文件是一个Java Server Page (JSP)

用于构建后台管理系统的首页。它提供了用户界面和导航功能,允许用户访问系统的不同部分。以下是该文件的功能与作用的详细解释:

1. 页面结构

  • DOCTYPE 和 HTML 标签: 定义了文档类型和HTML文档的基本结构。

  • head 部分: 包含页面的元数据、标题、样式表和脚本引用。

  • body 部分: 包含页面的实际内容,分为左侧导航栏、头部信息和主要内容区域。

2. 页面功能

  • 左侧导航栏 (<aside class="lyear-layout-sidebar">):

    • Logo: 显示系统的Logo,点击可以返回首页。

    • 导航菜单: 包含多个菜单项和子菜单项,用于导航到系统的不同部分,如后台首页、学生信息、UI元素、表单、示例页面、JS插件等。

    • 多级菜单: 支持多级菜单结构,允许用户访问更深层次的页面。

    • 版权信息: 显示在导航栏底部,包含版权声明和链接。

  • 头部信息 (<header class="lyear-layout-header">):

    • 用户信息: 显示当前登录用户的头像和用户名,并提供下拉菜单用于访问个人信息、修改密码、清空缓存和退出登录。

    • 主题配色切换: 允许用户切换系统的主题配色,包括Logo、头部和侧边栏的背景颜色。

  • 主要内容区域 (<main class="lyear-layout-content">):

    • iframe 内容: 使用 <div id="iframe-content"></div> 作为占位符,用于动态加载其他页面的内容。

3. 样式和脚本

  • 样式表:

    • Bootstrap: 提供响应式布局和基本样式。

    • Material Design Icons: 提供图标支持。

    • 自定义样式 (style.min.css): 定义系统的自定义样式。

  • 脚本:

    • jQuery: 用于简化JavaScript代码和处理DOM操作。

    • Bootstrap: 提供交互组件和JavaScript功能。

    • Perfect Scrollbar: 提供自定义滚动条。

    • Multitabs: 支持多标签页功能。

    • 自定义脚本 (index.min.js): 包含系统的自定义JavaScript逻辑。

4. 动态内容加载

  • 多标签页功能: 通过 multitabs 类和相关脚本,支持在主要内容区域动态加载和切换多个标签页,提升用户体验。

5. 用户交互

  • 导航菜单: 用户可以通过点击导航菜单项访问系统的不同功能页面。

  • 用户信息下拉菜单: 提供用户相关的操作选项,如查看个人信息、修改密码、退出登录等。

  • 主题配色切换: 允许用户根据个人喜好切换系统的视觉主题。

6. 安全性

  • 用户登录验证: 虽然在这个JSP文件中没有直接处理登录验证,但通常会在服务器端(如Servlet)验证用户是否已登录,未登录用户会被重定向到登录页面。

7. 使用场景

  • 后台管理系统: 这个页面通常用于后台管理系统的主页,提供系统的整体导航和用户界面。

  • 多模块支持: 通过多级菜单和多标签页功能,支持系统的多个模块和功能页面。

8. 技术栈

  • 前端: HTML, CSS, JavaScript, Bootstrap, jQuery.

  • 后端: JSP, Java Servlets.

通过这个 index.jsp 文件,系统能够提供一个功能丰富、用户友好的后台管理界面,支持多模块导航和动态内容加载,提升用户的操作体验。


<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>首页 - 光年(Light Year Admin)后台管理系统模板</title>
    <link rel="icon" href="favicon.ico" type="image/ico">
    <meta name="keywords" content="LightYear,光年,后台模板,后台管理系统,光年HTML模板">
    <meta name="description" content="LightYear是一个基于Bootstrap v3.3.7的后台管理系统的HTML模板。">
    <meta name="author" content="yinqi">
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/materialdesignicons.min.css" rel="stylesheet">
    <link rel="stylesheet" href="js/bootstrap-multitabs/multitabs.min.css">
    <link href="css/style.min.css" rel="stylesheet">
</head>

<body>
<div class="lyear-layout-web">
    <div class="lyear-layout-container">
        <!--左侧导航-->
        <aside class="lyear-layout-sidebar">

            <!-- logo -->
            <div id="logo" class="sidebar-header">
                <a href="index.html"><
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莓事哒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值