springboot学习(十)web工程扩展

2023-11-03

登录接口

这里是基于演示代码写的登录接口,实际肯定不会这么low,会出现get请求 包括参数注解也会用的是@RequestBody而不是@RequestParam。

@Controller
public class LoginController {

    @RequestMapping("/user/login")
    public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session) {

        if (!Strings.isEmpty(username) && "123456".equals(password)) {
            session.setAttribute("loginUser", username);
            //重定向到main.html页面,也就是跳转到dashboard页面
            return "redirect:/main.html";
        } else{
            model.addAttribute("msg", "用户名或者密码错误");//显示错误信息
            return "index";//跳转到首页
        }
    }

}

关于页面我们用到的是,就是返回的错徐信息msg没有就不会显示

<p style="color:red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>

登录拦截器

首先和之前一样要定义一个自己的拦截器(继承HandlerInterceptor)

package com.zp.config;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object loginUser = request.getSession().getAttribute("loginUser");

        if (loginUser == null) {
            request.setAttribute("msg", "没有权限,请先登录!");
            request.getRequestDispatcher("/index.html").forward(request, response);
            return false;
        } else {
            // 放行
            return true;
        }
    }
}

我们定义好自己的拦截器,还要注入的我们的配置当中addInterceptor(new LoginHandlerInterceptor()),在我们的配置添加拦截器;
添加的部分代码

  @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/index.html", "/", "/user/login", "/css/**", "/img/**", "/js/**");
    }

配置全部代码

package com.zp.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");
        registry.addViewController("/main.html").setViewName("dashboard");
    }

    @Bean
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/index.html", "/", "/user/login", "/css/**", "/img/**", "/js/**");
    }
}

其他增删改查,还有就是404的设置,就是添加一个error文件夹(同理500也可以这样)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot学习(十)web工程扩展 的相关文章

随机推荐

  • 云测平台

    1 云测平台 1 进入首页点击标准兼容测试 2 接着点击开始测试 2 上传测试的应用 3 上传应用 完善信息
  • 【YOLOv7】训练自己的数据集 - 目标检测

    YOLOv7训练自己的数据集 1 准备深度学习环境 1 1 代码克隆 1 2 环境安装 1 3 权重下载 1 4 环境测试 2 准备数据 2 1 yolo格式的数据集准备 3 配置训练的相关文件 3 1 修改数据配置文件 3 2 修改模型配
  • 原码表示

    原码的本质 符号位 绝对值 我们下面分析的类型主要是分析纯小数和纯整数的情况 因为在计算机里面 实数是可以转换成下面这两种形式的 纯小数 纯整数 n 位二进制数来表示这个数的原码 符号位占一位 还剩 n 1 位数值位 n 1 位能表达的最大
  • 虚拟机VMware、linux、WSL、Dorker、Multipass选择时

    引言 家里台式机没有装完整开发环境 今天测试一个程序 需要安装个mysql 可以安装个win的mysql 附上window的mysql地址 MySQL Download MySQL Installer 也可以虚拟机里安装一个mysql 登录
  • 一些常用的公共 DNS 服务器 IP 地址

    公共 DNS 服务器 IP 地址 名称 DNS 服务器 IP 地址 阿里 AliDNS 223 5 5 5 223 6 6 6 CNNIC SDNS 1 2 4 8 210 2 4 8 114 DNS 114 114 114 114 114
  • 编写一个IDEA插件之:自动生成Java代码

    我很喜欢IDEA的一键自动生成代码功能 例如自动生成构造方法 字段的Get Set方法 ToString方法等等 除此之外 也有一些插件提供自动生成代码的功能 例如我们所熟悉的GsonFormat插件 使用该插件可以为我们快速的解析json
  • 简易unity网络游戏架构(个人理解)

    客户端架构 客户端流程 点击UI gt panel调用Request的send方法 gt 调用基类得得send gt 调用face的send方法 gt 调用clientManager的send方法 gt 调用message的包装方法 gt
  • Hexo

    前言 搭建博客两个必要条件 博客框架 托管平台 这里框架我们采用Hexo 而平台大部分人会选择GitHub 这里我选择的是Gitee 属于国内的代码托管平台 相比于GitHub来说 访问速度更快 更稳定 环境要求 Git Nodejs 安装
  • OpenAPI安全合规检查

    OpenAPI安全合规检查是指对使用OpenAPI进行接口开发的系统进行安全性和合规性检查 确保系统在设计 开发和运行过程中符合相关的安全标准和法律法规要求 它包含以下内容 访问控制 检查系统是否实现了适当的身份验证和权限管理机制 以确保只
  • 使用HTTP协议发送POST请求

    HTTP发送POST请求常用的类是HttpClientUtil类 这个类提供三个方法 分别是sendPostByForm sendPostByJson sendPostByXml sendPostByForm 处理 application
  • 预编译合约使用问题 | FISCO BCOS开发问题排查

    预编译合约是否支持event事件日志功能 目前不支持 该特性正在规划中 用户可以关注后续的更新 了解更多干货内容 请关注FISCO BCOS开源社区公众号 访问FISCO BCOS代码仓库可下载项目所有源代码 https github co
  • LeetCode(Python)—— 合并两个有序链表(简单)

    合并两个有序链表 概述 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 输入 l1 1 2 4 l2 1 3 4 输出 1 1 2 3 4 4 输入 l1 l2 输出 输入 l1 l2 0 输
  • 用 VSCode 写 Python,这 14 个插件不容错过

    可以说 Visual Studio Code 这个编辑器 让微软在开源社区赢回了王者段位 要知道全球 2400 万开发者中有 1400 万称 VSCode 为自己的家 再加上 GitHub 和 VSCode 的结合 几乎所有的程序员的都离不
  • 惠普服务器c3000怎么用显示器,HP BladeSystem c3000

    HP BladeSystem c3000 机箱 HP BladeSystem c3000 Platinum 机柜为 HP BladeSystem 带来了全新功能 c3000 以三个单独的细分市场为目标 1 需要 2 8 台刀片服务器的远程站
  • The Process class relies on proc_open, which is not available on your PHP installation报错解决

    同事laravel框架开发的代码有如下错误日志 production ERROR The Process class relies on proc open which is not available on your PHP instal
  • 服务器的作用

    服务器的作用 1 服务器就好像是一个电话总台一样 而其他的网络设备就像是公共电话 所有的数据传输都要经过服务器的处理 2 服务器作为一个网络节点 为用户提供数据处理服务 最常见的就是使用服务器为自己搭建一个网站 3 服务器运算能力强 可以长
  • Kali更新源时候出现——下载签名无效,解决办法

    一 更新源 vim etc apt sources list 复制下面源码 选择一个 粘贴到里面 并把原来的源进行注释 中科大 deb http mirrors ustc edu cn kali kali rolling main non
  • C++中的map用法详解

    目录 1 map的介绍 2 map的操作 1 定义map类型 2 输出map中的元素 3 添加数据 4 查找数据 5 删除数据 1 map的介绍 map是C 中STL中的一个关联容器 以键值对来存储数据 数据类型自己定义 它的内部数据结构是
  • PaddleX入门教程2:搭建并配置Paddlex的推理环境(CPU版本)

    上一个教程中 同学们掌握了利用PaddleX完成训练并发布模型后 接下来我们将通过Python脚本来调用该模型 并做一些基础应用 本节教程主要教同学们从零搭建调用PaddleX导出模型的运行环境 1 运行PaddleX推理需要安装Visua
  • springboot学习(十)web工程扩展

    登录接口 这里是基于演示代码写的登录接口 实际肯定不会这么low 会出现get请求 包括参数注解也会用的是 RequestBody而不是 RequestParam Controller public class LoginControlle