1.使用Spring Initializer快速创建Spring Boot项目

1.1 IDEA:使用 Spring Initializer快速创建项目

  IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;
 
  选择我们需要的模块;向导会联网创建Spring Boot项目;
 
  默认生成的Spring Boot项目;
  • 主程序已经生成好了,我们只需要我们自己的逻辑
  • resources文件夹中目录结构

    1.   static:保存所有的静态资源; js css images;

    2.   templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板(freemarker、thymeleaf);

    3.   application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;
 

导入依赖

 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <!--引入springboot-mybatis的依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.</version>
</dependency>
<!--MySQL的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

实体类

public class Users  {
private Integer uid; private String userName; private String password; private String realName; public Users(Integer uid, String username, String password, String realname) {
this.uid = uid;
this.userName = username;
this.password = password;
this.realName = realname;
} public Users() {
super();
} public Integer getUid() {
return uid;
} public void setUid(Integer uid) {
this.uid = uid;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password == null ? null : password.trim();
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getRealName() {
return realName;
} public void setRealName(String realName) {
this.realName = realName;
}
}

dao层接口

@Repository("iUsersDao")
public interface IUsersDao {
//登录
Users getlogin(@Param("userName") String userName, @Param("password") String password);
}

dao层xml

<mapper namespace="com.example.dao.IUsersDao">
<!--登录-->
<select id="getlogin" resultType="com.example.entity.Users">
SELECT * FROM users WHERE userName=#{userName} AND PASSWORD=#{password}
</select>
</mapper>

IUserService接口层

public interface IUsersService {
//登录
Users getlogin(String userName, String password); }

IUserService接口实现层

@Service("iUsersService")
public class IUsersServiceImpl implements IUsersService {
@Resource("iUsersDao")
private IUsersDao iUsersDao;
@Override
public Users getlogin(String userName, String password) {
return iUsersDao.getlogin(userName,password);
}
}

IUserController层

@Controller
@RequestMapping("/user")
public class IUserController {
//植入对象
@Resource(name = "iUserService")
private IUserService service;
/*返回頁面*/
@RequestMapping("/getlogin")
public String getlogin(){
return "login";
}
/*登录*/
@RequestMapping("/login")
public ModelAndView login(Users user, ModelAndView mv, HttpServletRequest request, Model model){
Users login = service.login(user.getUserName(),user.getPassword());
System.out.println(login);
if (login!=null){
request.getSession().setAttribute("login",login);
System.out.println("成功!!");
mv.setViewName("index");
}else{
System.out.println("失败!!");
mv.setViewName("login");
}
return mv;
} }

application.properties文件

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///invoicingsystem
spring.datasource.username=root
spring.datasource.password=root

login.html页面

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>系统登录 - 小型进销存系统</title>
<link rel="stylesheet" href="css/style.css"/>
<style>
#parent{
width:500px;
height:200px;
margin-top:%;
margin-left:%;
transform:translate(-%,-%) ;
background:#;
}
.password,.subBtn{
margin-top: %;
margin-left: %;
}
.loginHeader{
padding-top: %;
}
</style>
</head>
<body class="login_bg">
<div id="parent">
<section class="loginBox">
<header class="loginHeader" style="text-align:center; ">
<h1>小型进销存系统</h1>
</header>
<section class="loginCont">
<form class="loginForm" action="/user/login" method="post" onsubmit="return check()" >
<div class="inputbox" style="text-align:center; ">
<label for="user">用户名:</label>
<input id="user" type="text" name="userName" placeholder="请输入用户名" required="required" />
</div>
<div class="password" style="text-align:center; " >
<label for="mima">密码:</label>
<input id="mima" type="password" name="password" placeholder="请输入密码" required="required" />
</div>
<div class="subBtn" style="text-align:center; ">
<input type="submit" value="登录" />
<input type="reset" value="重置"/>
</div>
</form>
</section>
</section>
</div>
</body>
</html>

index.html页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en" >
<meta charset="UTF-8">
<title>小型进销存系统</title>
<!-- <link rel="stylesheet" th:href="@{/css/public.css}">
<link rel="stylesheet" th:href="@{/css/style.css}">-->
<style>
#parent{
margin-top:%;
margin-left:%;
transform:translate(-%,-%) ;
}
</style>
</head>
<body>
<div id="parent">
<!--头部-->
<header class="publicHeader">
<div class="publicHeaderR">
<p><span></span><span style="color: red" th:text="${session.login.getRealName()}"></span> , 欢迎你! <a href="/user/remover">退出登录</a></p>
</div>
</header>
<!--主体内容-->
<section class="publicMian">
<div class="left">
<nav>
<ul class="list">
<li ><a href="/user/prodectAdd">销售</a></li>
<li><a href="/user/saleList">销售信息查询</a></li>
<li><a href="/user/view">查看库存</a></li>
</ul>
</nav>
</div>
<div class="right" style="border: 3px solid blue;width: 400px;height: 200px;margin-top: -100px;margin-left: 200px" >
<img class="wColck" src="img/clock.jpg" alt=""/>
<div class="wFont" style="text-align:center;margin-top:10% ">
<p>欢迎使用小型进销存系统系统!</p>
</div>
</div>
</section>
</div>
</body>
</html>

SpringBoot实现登录的更多相关文章

  1. SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能

    SpringBoot注册登录(一):User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接      SpringBoot注册登录(三):注册 ...

  2. springboot之登录注册

    springboot之登录注册 目录结构 pom.xml <?xml version="1.0" encoding="UTF-8"?> <pr ...

  3. Springboot实现登录功能

    SpringBoot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再 ...

  4. SpringBoot 并发登录人数控制

    通常系统都会限制同一个账号的登录人数,多人登录要么限制后者登录,要么踢出前者,Spring Security 提供了这样的功能,本文讲解一下在没有使用Security的时候如何手动实现这个功能 dem ...

  5. Springboot之登录模块探索(含Token,验证码,网络安全等知识)

    简介 登录模块很简单,前端发送账号密码的表单,后端接收验证后即可~ 淦!可是我想多了,于是有了以下几个问题(里面还包含网络安全问题): 1.登录时的验证码 2.自动登录的实现 3.怎么维护前后端登录状 ...

  6. 使用SpringBoot实现登录注册的几个问题

    一.用户名密码都正确的情况下被登录拦截器拦截 控制台报错:org.apache.ibatis.executor.ExecutorException: A query was run and no Re ...

  7. SpringBoot日记——登录与拦截器篇

    之前的文章我们把登录页写了出来,但是想要让登录现实他的基本功能,要如何做呢?本篇文章就来帮你实现第一步,让登录页对账号密码做校验,并且完成登录跳转. LoginController 1. 要实现登录, ...

  8. WEB开发----springboot的登录拦截机制

    如果是一个后台的管理项目的,有些东西是不能直接就可以访问的,必须要登录才可以进去,所以就需要进行登录拦截,只有登录过的用户才可以正常访问. 登录拦截是不会拦截jsp页面的方法,所以我们需要在Contr ...

  9. springboot的登录拦截机制

    转自:https://blog.csdn.net/qq_26555463/article/details/78296103 如果是一个后台的管理项目的,有些东西是不能直接就可以访问的,必须要登录才可以 ...

随机推荐

  1. Django表单集合----Formset

    概述:Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息,下面将会详细讲述如何使 ...

  2. vue 合成图片

    目的:将二维码图片和背景图片合成变成一张图片 方法一: 引入依赖 cnpm install qrcanvas --save cnpm install html2canvas --save 具体代码: ...

  3. Nginx专题(1):Nginx之反向代理及配置

    摘要:本文从Nginx的概念出发,分别从反向代理的概念.优势.配置代码3个方面介绍了Nginx的特性之一反向代理. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方 ...

  4. 深究1.8版本HashMap源码

    put方法 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } 在putVal方法之 ...

  5. window10系统下,彻底删除卸载mysql

    本文介绍,在Windows10系统下,如何彻底删除卸载MySQL...1>停止MySQL服务开始->所有应用->Windows管理工具->服务,将MySQL服务停止.2> ...

  6. windows服务参考

    dll文件 aaclient.dll 何时何地都可以访问客户端 accessibilitycpl.dll 轻松访问控制面板 acledit.dll 访问控制列表编辑器 aclui.dll 安全描述符编 ...

  7. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  8. 「考试」小P的生成树

    考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长 ...

  9. 2019.NET Conf China(中国.NET开发者峰会)活动全纪录:.NET技术之崛起,已势不可挡

    一.微软走向开放与.NET Core的诞生 当今时代,气象更新,技术飞速发展. 当今时代,开发者大概是最优秀的群体.每一位开发者,无不奋勇向前,努力追寻时代的步伐,以大无畏的精神迎接挑战,紧跟大时代成 ...

  10. GO 基础学习笔记(1) | 简介

    一.官网查看系列 Golang官网:https://golang.org/ Golang中文网:https://studygolang.com/(推荐) 项目学习网站: https://gowalke ...