16 Springboot——登录功能实现

16.1 修改index.html中表单跳转的地址

        将action的地址改为user/login,意思是点击提交按钮后,就会跳转到user/login地址,然后只要用Controller类的@RequsetMapping去接这个地址就行了。

<body class="text-center"><form class="form-signin" th:action="@{user/login}"><img class="mb-4" th:src="@{/img/bootstrap-solid.svg}" alt="" width="72" height="72"><h1 class="h3 mb-3 font-weight-normal">Please sign in</h1><label class="sr-only">Username</label><input type="text" class="form-control" placeholder="Username" required="" autofocus=""><label class="sr-only">Password</label><input type="password" class="form-control" placeholder="Password" required=""><div class="checkbox mb-3"><label><input type="checkbox" value="remember-me"> Remember me</label></div><button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button><p class="mt-5 mb-3 text-muted">© 2017-2018</p><a class="btn btn-sm">中文</a><a class="btn btn-sm">English</a></form></body>

16.2 controller类

        当访问localhost:8080/user/login时,会返回在页面返回一字符串(本例是hello),@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中。

package jiang.com.springbootstudy.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class LoginController {@RequestMapping("/user/login")@ResponseBodypublic String login(){return "hello";}
}

        以上代码只是简单实现了点击按钮后,访问请求,最后响应了一个字符串的过程。该项目中不需要使用ResponseBody注解,实现请求后的数据转发合页面跳转即可。注意,之前的表单中,input没有name属性,只有placeholder属性,改为name属性即可,然后相应的属性值改下,因为后面需要使用@RequestParm注解来接受表单数据,最终代码如下:

package jiang.com.springbootstudy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.thymeleaf.util.StringUtils;@Controller
public class LoginController {@RequestMapping("/user/login")public String login(@RequestParam("username") String username,@RequestParam("password") String password,Model model){if (!StringUtils.isEmpty(username)&&"123456".equals(password)){return "redirect:/main.html";}else {model.addAttribute("msg","用户名或密码错误!");return "index";}}
}

        这里使用了重定向(redirect), return "redirect:/main.html"会使访问localhost:8080/user.login地址后,网页被转移到localhost:8080/main.html地址,注意!这个是main.html是虚拟的地址,并不是转发到main.html页面的意思,因此需要使用mvc的配置类对请求就行转发,转发到实际地址中。最终,如果访问localhost:8080/main.html地址,就会打开一个dashboard.html页面。mvc配置类代码如下:

package jiang.com.springbootstudy.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MyMvcConfig implements WebMvcConfigurer {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("index");  //setViewName后面不用加htmlregistry.addViewController("/index.html").setViewName("index");registry.addViewController("/main.html").setViewName("dashboard"); // 前面的main.html是假的,只是一种请求,后面才是真的,输入请求后会跳转的地方是后面的html}
}

16.3 修改index页面

        根据Controller类的处理逻辑,如果用户名和密码错误,就会返回indem.html页面,并转发msg数据。转发后,需要在相应位置上把msg数据显示出来。需要在相应位置上加一行html代码,并且对p标签的样式进行了更改,需要增加的html代码如下:

<link th:href="@{/css/mystyle.css}" type="text/css" rel="stylesheet">
<p  class="p-msg" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>

        css样式的代码如下:

p.p-msg{color: red;
}

        输入错误后转发到index.html的结果:

 16.4 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59193.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 是如何解决循环依赖问题的?

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;项目场景&#xff1a;示例:通过蓝牙芯片(HC-05)与手机 APP 通信&#xff0c;每隔 5s 传输一批传感器数据(不是很大) 问题描述 我们都知道&#xff0c;如果在代码中&#xff0c;将两个…

记录一次因为代码混淆导致的安卓app崩溃的事件

最近公司布置了一个新任务&#xff0c;给一个旧的安卓app增加一个新功能。 功能是替换加密算法&#xff0c;新的算法库由第三法提供&#xff0c;通过jni调用底层C库。 按照项目需求&#xff0c;修改了代码&#xff0c;调试测试阶段也都运行正常。结果发布的时候&#xff0c;测…

视频网站如何选择国外服务器?

​ 视频网站如何选择国外服务器? 地理位置&#xff1a;选择靠近目标用户群体的国外服务器位置是至关重要的。若用户主要集中在中国以外的地区&#xff0c;因您应选择位于用户所在地附近的服务商&#xff0c;以确保视频的传输速度。 带宽和速度&#xff1a;选择带宽足够且方便升…

【论文阅读】对抗溯源图主机入侵检测系统的模仿攻击(NDSS-2023)

作者&#xff1a;伊利诺伊大学芝加哥分校-Akul Goyal、Gang Wang、Adam Bates&#xff1b;维克森林大学-Xueyuan Han、 引用&#xff1a;Goyal A, Han X, Wang G, et al. Sometimes, You Aren’t What You Do: Mimicry Attacks against Provenance Graph Host Intrusion Detect…

基于kubeadm部署K8S集群

目录 基于kubeadm部署K8S集群 一、环境准备 1、主机初始化配置 2、配置主机名并绑定hosts&#xff0c;不同主机名称不同 3、主机配置初始化 二、部署docker环境 1、三台主机上分别部署 Docker 环境 2、镜像加速器&#xff08;所有主机配置&#xff09; 三、部署kubern…

Maven基础总结

前言 Maven 是一个项目管理工具&#xff0c;可以对 Java 项目进行构建、依赖管理。 基本要求掌握 配置Maven环境直接查。 得会在IDEA创建Maven的java项目吧、会创建Maven的web项目吧、会创建多模块项目吧。 得会配置插件pligin、依赖dependency吧 一、Maven四大特性 1、…

【springboot项目】在idea中启动报错合集

一、IDEA中报错 “Error running ‘Application‘: Command line is too long.“ 的解决办法 报错详情&#xff1a; Error running Application: Command line is too long.Shorten command line for Application or also for Spring Boot default configuration.报错原因&am…

【香瓜说职场】建立公司(2017.07.25)

自从17年4月份开始辞职创业&#xff0c;已经3个多月了。跟大家分享一下创业经历。 一、我的合伙人 我的合伙人是我的客户。我给他上过蓝牙教学课、帮他做了个蓝牙自拍器&#xff08;叫orbit 360&#xff0c;已在售&#xff0c;百度能搜到&#xff09;&#xff0c;历经一年多。双…

objectMapper.getTypeFactory().constructParametricType 方法的作用和使用

在使用 Jackson 库进行 JSON 数据的序列化和反序列化时&#xff0c;经常会使用到 ObjectMapper 类。其中&#xff0c;objectMapper.getTypeFactory().constructParametricType 方法用于构造泛型类型。 具体作用和使用如下&#xff1a; 作用&#xff1a; 构造泛型类型&#x…

吐血整理,Python接口自动化测试-接口关联依赖处理(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 场景说明 在面试…

DP(状态机模型)

大盗阿福 阿福是一名经验丰富的大盗。趁着月黑风高&#xff0c;阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N 家店铺&#xff0c;每家店中都有一些现金。 阿福事先调查得知&#xff0c;只有当他同时洗劫了两家相邻的店铺时&#xff0c;街上的报警系统才会启动&#x…

PostgreSQL和MySQL多维度对比

文章目录 0.前言1. 基础对比2.PostgreSQL和MySQL语法对比3. 特性4. 参考文档 0.前言 在当今的软件开发和数据管理领域&#xff0c;数据库是至关重要的基础设施之一。选择正确的数据库管理系统&#xff08;DBMS&#xff09;对于应用程序的性能、可扩展性和数据完整性至关重要。…