SpringBoot创建JSP登录页面功能实例代码

下面我来详细讲解一下“SpringBoot创建JSP登录页面功能实例代码”的完整攻略。

环境准备

在开始前,我们需要先准备好以下环境:

  1. JDK 1.8 及以上
  2. Spring Boot 2.0.0 及以上
  3. IntelliJ IDEA 或 Eclipse 等开发工具
  4. Tomcat 8.5 及以上

创建 Spring Boot 项目

先使用你喜欢的开发工具创建一个 Spring Boot 项目,稍加配置即可,这里不再赘述。我使用的是 IntelliJ IDEA。

引入依赖

在项目的 pom.xml 文件中添加以下依赖:

<dependencies>
    <!-- Spring Boot Web 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot JSP 依赖 -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
</dependencies>

其中第二个依赖用于支持 JSP 页面的渲染,第三个依赖则是 JSP 页面必须的标准标签库。

配置视图解析器

在 Spring Boot 中,视图解析器是通过 Thymeleaf 引擎实现的。但我们这里需要使用 JSP 模板引擎,因此需要进行如下配置:

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }
}

这里使用 @Configuration 注解表示这是一个配置文件,同时实现了 WebMvcConfigurer 接口,覆盖其中的 configureViewResolvers 方法。在方法中定义一个 InternalResourceViewResolver 类型的 bean,作为视图解析器。其中:

  • Prefix 表示 JSP 文件的存放路径,这里选择 WEB-INF/views 目录下。
  • Suffix 表示 JSP 文件的后缀名,这里是 .jsp。
  • ViewClass 表示使用 JSTL 标准标签库。

编写登录页面

在 WEB-INF/views 目录下创建 login.jsp 文件,输入以下页面代码:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>登录</title>
    <style>
        body {
            background-color: #f4f4f4;
            font-family: Arial, sans-serif;
        }

        input {
            width: 100%;
            padding: 12px 20px;
            margin: 8px 0;
            display: inline-block;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }

        button {
            background-color: #4CAF50;
            color: white;
            padding: 14px 20px;
            margin: 8px 0;
            border: none;
            cursor: pointer;
            width: 100%;
        }

        button:hover {
            opacity: 0.8;
        }

        .container {
            padding: 16px;
            background-color: white;
            text-align: center;
        }

        .error-msg {
            color: red;
        }
    </style>
</head>
<body>

<div class="container">
    <h1>欢迎登录</h1>
    <form action="/login" method="post">
        <label for="username"><b>用户名</b></label>
        <input type="text" placeholder="请输入用户名" name="username" required>

        <label for="password"><b>密码</b></label>
        <input type="password" placeholder="请输入密码" name="password" required>

        <button type="submit">登录</button>
        <c:if test="${not empty error}">
            <div class="error-msg">${error}</div>
        </c:if>
    </form>
</div>

</body>
</html>

这里使用了 HTML 和 CSS 样式来美化页面,使用表单输入框来获取用户输入的用户名和密码,使用 JSTL 的 c:if 标签来判断是否有错误提示信息。

编写控制器和服务

创建一个 LoginController 类,用于处理登录相关的请求:

@Controller
public class LoginController {

    @Autowired
    private UserService userService;

    @GetMapping("/login")
    public String login() {
        return "login";
    }

    @PostMapping("/login")
    public String doLogin(HttpServletRequest request, HttpSession session) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = userService.getUser(username);

        if (user != null && password.equals(user.getPassword())) {
            session.setAttribute("user", user);
            return "redirect:/index";
        } else {
            request.setAttribute("error", "用户名或密码错误!");
            return "login";
        }
    }
}

其中:

  • @Controller 表示这是一个控制器类。
  • @GetMapping 和 @PostMapping 用于处理 GET 和 POST 请求。
  • @Autowired 用于自动注入 UserService 类。
  • login 方法用于返回 login.jsp 页面。
  • doLogin 方法用于处理登陆请求。首先获取用户输入的用户名和密码,然后调用 UserService 类的 getUser 方法,查询数据库中是否有对应的用户信息,如果有则将用户信息存储到 HttpSession 中,并跳转到 /index 页面;否则将错误提示信息存储到 HttpServletRequest 中,返回 login.jsp 页面。

创建一个 UserService 接口及其实现类,用于查询数据库中的用户信息:

public interface UserService {
    User getUser(String username);
}

@Service
public class UserServiceImpl implements UserService {

    private Map<String, User> users;

    public UserServiceImpl() {
        users = new HashMap<>();
        users.put("admin", new User("admin", "admin123"));
        users.put("user", new User("user", "user123"));
    }

    @Override
    public User getUser(String username) {
        return users.get(username);
    }
}

其中:

  • UserService 接口只有一个方法,用于获取用户信息。
  • UserServiceImpl 类实现了 UserService 接口,同时模拟了一个用户存储 Map。

运行项目

以上代码完成后,就可以启动 Spring Boot 项目,访问 localhost:8080/login 地址,即可进入登录页面。输入正确的用户名和密码,会跳转到 /index 页面;如果输入错误,则会显示相应的错误信息。

示例代码:https://github.com/grace789456/springboot-login-page

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot创建JSP登录页面功能实例代码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java之Jackson使用案例详解

    Java之Jackson使用案例详解 Jackson是Java中最流行的JSON序列化和反序列化库之一,它提供了轻量级快速、灵活的JSON处理方式。本文将详细讲解在Java中如何使用Jackson进行JSON序列化和反序列化。内容如下: 简介 在Java中使用Jackson进行JSON处理时,可以使用以下依赖: <!– Jackson核心模块 –&…

    Java 2023年5月26日
    00
  • 深入Java对象的地址的使用分析

    让我们来详细讲解一下深入Java对象的地址的使用分析的完整攻略。 概述 Java中的对象占用内存空间,对象的地址是用一个指针来表示的。在Java代码中,我们可以使用对象的引用来访问该对象,但在底层,JVM是通过引用所对应的对象地址来操作该对象的。因此,深入Java对象的地址的使用分析对于提高Java程序的性能和调试程序都是非常有帮助的。 获取对象地址 获取对…

    Java 2023年5月26日
    00
  • Mybatis Generator最完美配置文件详解(完整版)

    “Mybatis Generator最完美配置文件详解(完整版)”是一篇非常详细的文章,主要针对MyBatis Generator配置文件进行讲解,并提供了多个示例供读者参考。 首先,文章介绍了MyBatis Generator的概述,其作用是根据数据库表和配置文件生成对应的Java实体类、Mapper接口和XML文件。然后,文章详细讲解了MyBatis G…

    Java 2023年5月20日
    00
  • JavaWeb搭建网上图书商城毕业设计

    下面是详细讲解“JavaWeb搭建网上图书商城毕业设计”的完整攻略。 概述 实现一个基于JavaWeb技术的网上图书商城,需要掌握以下几个方面的知识和技能:- 前端开发:HTML、CSS、JavaScript、jQuery等基础知识。- 后端JavaWeb开发:Servlet、JSP、JDBC、MVC框架等技术。- 数据库MySQL的使用,包括SQL语句的编…

    Java 2023年5月20日
    00
  • 一个用JSP做的日历

    下面我来为您详细讲解“一个用JSP做的日历”的完整攻略。 1. 准备工作 在使用JSP制作日历前,需要准备以下工具和环境: Java Web开发环境(如Apache Tomcat) 文本编辑器(如Notepad++, Sublime Text等) 了解基本的HTML、CSS和JavaScript 2. 创建JSP文件 首先,创建一个JSP文件,并添加HTML…

    Java 2023年6月15日
    00
  • Java实现LeetCode(1.两数之和)

    Java实现LeetCode(1.两数之和) 一、题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,并且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] …

    Java 2023年5月19日
    00
  • 基于java开发之系统托盘的应用

    关于“基于Java开发之系统托盘的应用”的开发攻略,我将按照以下步骤进行讲解。 步骤一:创建系统托盘 导入相关包及类 Java提供了一些相关的包和类,至少要导入以下这些: import java.awt.*; import java.awt.event.*; import javax.swing.*; 创建系统托盘 接着,在 Java 中创建系统托盘可以采用…

    Java 2023年5月24日
    00
  • Java 数组内置函数toArray详解

    Java 数组内置函数 toArray 详解 toArray() 是 Java 数组的内置函数之一。它可以将一个数组转换成一个目标类型的数组。在这篇文章中,我们将探讨 toArray() 函数的使用以及一些示例。 toArray() 函数的使用 toArray() 函数的基本形式如下: public <T> T[] toArray(T[] a) …

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部