当前位置: 首页 > news >正文

使用Spring Boot编写的小项目

加法计算器
前端代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body>
<form action="return/sum" method="post"><h1>计算器</h1>数字1:<input name="a" type="text"><br>数字2:<input name="b" type="text"><br><input type="submit" value=" 点击相加 ">
</form>
</body></html>

后端代码

    @RequestMapping("/sum")public String sum(Integer a , Integer b){Integer sum = a + b;return  "<h1>计算结果为: "+ sum +" </h1>";}

运⾏测试
在这里插入图片描述
在这里插入图片描述
我们先定义接口
(1) 请求路径:return/sum
(2) 请求方式:get/post
(3) 接口描述"计算两个整数相加

登录案例
分析需求
用户输入账号和密码 后端进行校验是正确
(1)如果不正确前端进行用户告知
(2)如果正确跳转首页显示用户信息

提前准备
将前端文件导入
在这里插入图片描述
创建后端代码
在这里插入图片描述

定义接口
(1)登录接口
/user/login/username = ? & password = ?
接口返回:校验成功/失败
true密码成功
false密码错误
(2)获取用户的登录信息
/user/getUserInfo
接口返回:当前登录用户的名称

编写后端代码

package com.example.demo.demos.web.controller;import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/login")public Boolean login(String username, String password, HttpSession session){//校验参数合法性//如果username和password的值是null或者长度为0就会返回一个falseif(!StringUtils.hasLength(username) || !StringUtils.hasLength(password)){return false;}//对用户名和密码进行校验若对就设置session否则就返回falseif("admin".equals(username) && "admin".equals(password)){//设置Sessionsession.setAttribute("username","admin");return true;}return false;}@RequestMapping("/getUserIofo")public String getUserInfo(HttpServletRequest request){//我们要显示用户就需要从session拿到username//要拿到session就需要从request中拿到HttpSession session = request.getSession();String username = null;if (session != null){username = (String) session.getAttribute("username");}return username;}
}

演示:
在这里插入图片描述
在这里插入图片描述
留言板
输入留言信息 点击提交
页面展示留言信息

接口定义
获取全部留言用List可以用JSON来描述List
请求:
GET/message/getList
使用JSON格式响应

准备工作
导入前端代码

在这里插入图片描述

使用lombok工具

lombok是一个java工具库通过添加注解方式简化java开发
使用
lombok通过⼀些注解的⽅式,可以帮助我们消除⼀冗⻓代码,使代码看起来简洁⼀些⽐如之前的Person对象就可以改为
例如一个person类
在这里插入图片描述

package com.example.demo.demos.web;import lombok.Data;@Data
public class Person2 {public String name;public Integer age;public Integer id;
}

这里加个注解@Data就等于上面的代码

@Data=@Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor

针对上面lombok也提供更精细粒度的注解可以单独对类的属性使用

里面有很多方法当我们要在这个类增加一个属性的时候tostring方法又要重新写相当麻烦
然后我们使用lombok中的注解就可以解决这个问题

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

上述引⼊lombok依赖,需要去找lombok的坐标
然后我们也可以使用EditStarter引入依赖重启Idea
在这里插入图片描述
在pom.xml⽂件中,单击右键,选择Generate进⼊EditStarters的编辑界⾯,添加对应依赖即可.

在这里插入图片描述
在这里插入图片描述
留言版服务器代码实现

package com.example.demo.demos.web.controller;import com.example.demo.demos.web.MessageInfo;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@RequestMapping("/message")
@RestController
public class MessageController {private List<MessageInfo> messageInfos = new ArrayList<>();@RequestMapping("/getList")public List<MessageInfo> getList(){return messageInfos;}@RequestMapping("/publish")public boolean publish(MessageInfo messageInfo){System.out.println(messageInfo);if(StringUtils.hasLength(messageInfo.getFrom())&&StringUtils.hasLength(messageInfo.getFrom())&&StringUtils.hasLength(messageInfo.getMessage())){messageInfos.add(messageInfo);return true;}return false;}}

示例
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用例设计需遵循哪些规范标准?
  • FilterRegistrationBean
  • 条款9:利用destructors避免泄露资源
  • 上周暗网0day售卖情报一览
  • 【管理咨询宝藏114】贝恩为某知名化妆品战略规划方案
  • 低代码与人工智能:革新智能客服系统的高效之道
  • 使用vanna实现Text2SQL
  • wordpress主题给网站增加一个版权声明区块代码分享
  • 品牌曝光秘籍:让更多人知道你的品牌,这些推广技巧必学
  • 软件设计师中级 重点 笔记
  • 【从零开始学习RabbitMQ | 第一篇】如何确保生产者的可靠性
  • 信息抽取模型TPLinker
  • 入门四认识HTML
  • JAVA面试题大全(十六)
  • Python Requests库中data与json参数的区别
  • [译] 怎样写一个基础的编译器
  • Android优雅地处理按钮重复点击
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JS 面试题总结
  • JS基础之数据类型、对象、原型、原型链、继承
  • magento2项目上线注意事项
  • maven工程打包jar以及java jar命令的classpath使用
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • spark本地环境的搭建到运行第一个spark程序
  • Vue2.x学习三:事件处理生命周期钩子
  • Spring Batch JSON 支持
  • 仓管云——企业云erp功能有哪些?
  • # centos7下FFmpeg环境部署记录
  • #define 用法
  • #include
  • #NOIP 2014# day.1 T2 联合权值
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (差分)胡桃爱原石
  • (二)JAVA使用POI操作excel
  • (二)windows配置JDK环境
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • ./configure,make,make install的作用(转)
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ solr入门 ] - 利用solrJ进行检索
  • [AR]Vumark(下一代条形码)
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C#][DevPress]事件委托的使用
  • [C++]unordered系列关联式容器
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [FBCTF2019]RCEService1
  • [GXYCTF2019]禁止套娃1
  • [HXPCTF 2021]includer‘s revenge
  • [IE编程] 了解Urlmon.dll和Wininet.dll