SrpingBoot基础

SpringBoot基本框架中重要常用的包讲解:

.idea包和.mvn包框架生成不经常用

src包下主要存放前后端代码:

           main包下的java包存放的是后端java代码主要负责数据处理

           resource包下存放的是配置资源和前端页面,其中static中存放的是前端html网页一般存放静      态资源,templates包下一般存放的是动态资源如jsp一类的文件

           application.properties文件主要为编译配置信息,如链接数据库需要的账号密码等

           test包,主要用于代码测试,测试框架

           pox.xml主要用于链接maven库

           DemoApplication.java是SpringBoot的启动类,里边有个main方法点击即可启动项目

SpringBoot更新工具主要是注解,且简化了代码,框架自带tomecat,不需要专门配置tomecat,极大的提高了web项目的开发速度

一、处理web请求(SpringBoot Controller)

         1.基础的获取请求方法,启动项目后默认请求端口号(http://localhost:8080)+括号中具体地址便可访问数据传输需要拼接字符(?name="对应数据")即可传输,需与后端类参数变量名保持一致
@GetMapping("/需要访问的地址页"):
publc String re(String name,String number){System.out.println("前端获取的数据"+name+number)return   "传参成功";
}
         2.指定请求方法,在前端向后端发送数据时,需要指定请求方法如get()或post()请求

         RequestMethod.GET:只接受get()请求,常见的请求方式将需要的变量和变量名拼接在地址栏     后边
         RequestMethod.POST:只接受post()请求,请求不会出现在地址栏上方安全性较高

@RequestMapping (value = "/hello",method = RequestMethod.GET)
public String hello(String name,String number){System.out.println("号码:"+number);return "你好 "+name+" 编号 "+number;
}
       3.注解映射映射请求方法,当前端请求的参数名与后端获取的变量名不一致时将其正确的前端变量名赋值即可
@RequestMapping(value = "/test_02",method = RequestMethod.GET)
public String test2(@RequestParam(value = "nickname",required = false) String name) {System.out.println("接受的nickname值为:"+name);return "注解映射,前端发送变量名与后端接收变量名不一致时做的注解," +"内容即可以获取,原本变量名则无法使用"+"\n" +"使用required方法后选择false原本的变量名就可以接着使用,选择true则相反,但只能进入网页显示页面并不能获取变量值且任意变量都能进";
}

二、静态资源访问基础的前端部署

     1.静态资源根目录在resources/static/ 下
         将默认文件放入static下后默认输入对应端口号拼接需要访问的静态文件后就能访问
      2.设置对应路径,在application.properties文件中添加 spring.mvc.static-path-pattern=/images/***  
         此时访问需要输入访问的端口后加上文件路径/images/需要访问的文件名即可访问
      3.设置静态访问路径文件夹访问,在application.properties文件中添加spring.web.resources.static-locations=classpath:/css
         classpath:/写添加的文件夹名称/,这样就通过static添加文件夹放入对应文件进行操作
      4.在paoolicaton.properties中,sever.port=端口号,可设置端口号

三、文件上传

     1.通过前端上传文件的name名来获取文件,通过MultipartFile类存入变量,HttpServletRequest获            取服务器目录
MultipartFile:   (1)photo.getOriginalFilename()      获取文件名称 
                        (2)photo.getContentType()            获取文件类型 
            HttpServletRequest:(1)request.getServletContext().getRealPath("/upload/")           获取服             务器具体目录
      2.通过io流存储
       File:(1).exists()            判断文件是否存在存在返回true否则返回false
              (2).mkdir()           创建对应文件夹
              (3).transferTo()     存放文件.将顿号前的文件存入()中的路径目录中

      实例代码如下:

    @PostMapping("/Upload")public String Up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException {System.out.println("文件获取器名称:"+nickname);//获取文件名称System.out.println("文件名称:"+photo.getOriginalFilename());//获取文件类型System.out.println("文件类型:"+photo.getContentType());//获取web服务器目录String path = request.getServletContext().getRealPath("/upload/");System.out.println("服务器目录"+path);saveFile(photo,path);return "上传成功";}public void saveFile(MultipartFile photo, String path) throws IOException {//判断文件目录是否存在如果不存在则创建File dire = new File(path);if (!dire.exists()) {dire.mkdir();}File file = new File(path+photo.getOriginalFilename());photo.transferTo(file);}

四、拦截器 

      使用拦截器需要连接 HandlerInterceptor类和WebMvcConfigurer类
      通过将链接HandlerInterceptor类获取到的参数传递到WebMvcConfigurer类中进行筛选在返            回.addPathPatterns("/user/**"):   获取用户的访问类型
    @Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");}
    @Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {System.out.println("preHandle");return true;}

五、MybatisPlus

     1.添加对应的数据库依赖在pom.xml文件中
        <!-- MyBatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><!-- mysq1驱动依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--数据连接池 druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.20</version></dependency>
 2.在application.properties文件中填写对应的数据库配置
spring.application.name=MPDemo          //对应的项目名称
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource        //项目资源类型
spring.datasource.url=jdbc:mysql://localhost:3306/message                //具体的数据库位置
spring.datasource.username=root         //数据库账号名
spring.datasource.password=54ypf0507           //数据库账号密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver            //对应链接
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl          //mybatis的日志实现方式
 3.在对应的项目Application文件中添加注解@MapperScan("对应的Mapper文件项目位置")即项目启动类
@SpringBootApplication
@MapperScan
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}
4.创捷接口类使用@Mapper注解标注接口
5.SpringBoot对应的sql查询方法
@Select("对应查询语句")查询全部对应语句
@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")对应的添加语句
@Update("update user set username = #{id},#{username},#{password},#{birthday}  where id = #{id}")修改对应语句
@Delete("delet from user where id=#{id}")对应删除语句
在对应的标注下创建相关类,获取语句需要的数据如:
@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
public int save(User user);
 6.创建实现类@Autowired标注接口类,创建类对象,获取对应方法进行传参如:
          @Autowiredprivate UserMapper userMapper;@GetMapping("/user")public List<User> query(){List<User> list = userMapper.findAll();System.out.println(list);return list;}@PostMapping("/user")public String save(User user){int i = userMapper.save(user);System.out.println(user);if (i>0){return "添加成功";}else {return "添加失败";}}

 

 

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

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

相关文章

Nacos实现IP动态黑白名单过滤

一些恶意用户&#xff08;可能是黑客、爬虫、DDoS 攻击者&#xff09;可能频繁请求服务器资源&#xff0c;导致资源占用过高。因此我们需要一定的手段实时阻止可疑或恶意的用户&#xff0c;减少攻击风险。 本次练习使用到的是Nacos配合布隆过滤器实现动态IP黑白名单过滤 文章…

vue-next-admin框架配置(vue)

vue-next-admin 先安装依赖 npm i 依赖, npm run dev 运行 1.配置代理 2.把他的逻辑和自己的登录判断逻辑结合(我的放下面&#xff0c;可以参考哦&#xff0c;可以直接使用&#xff0c;到时候修改登录逻辑就好)&#xff0c;别忘了引入ajxio哦 const onSignIn async () &g…

算法定制LiteAIServer视频智能分析平台工业排污检测算法智控环保监管

随着工业化进程的加快&#xff0c;环境污染问题愈加严重&#xff0c;尤其是工业排污对生态环境的影响引发了广泛关注。在此背景下&#xff0c;视频智能分析平台LiteAIServer工业排污检测算法应运而生&#xff0c;作为一种先进的智能化解决方案&#xff0c;它在监测和管理工业排…

mini-lsm通关笔记Week2Day5

项目地址&#xff1a;https://github.com/skyzh/mini-lsm 个人实现地址&#xff1a;https://gitee.com/cnyuyang/mini-lsm Summary 在本章中&#xff0c;您将&#xff1a; 实现manifest文件的编解码。系统重启时从manifest文件中恢复。 要将测试用例复制到启动器代码中并运行…

【WPF】Prism学习(六)

Prism Dependency Injection 1.依赖注入&#xff08;Dependency Injection&#xff09; 1.1. Prism与依赖注入的关系&#xff1a; Prism框架一直围绕依赖注入构建&#xff0c;这有助于构建可维护和可测试的应用程序&#xff0c;并减少或消除对静态和循环引用的依赖。 1.2. P…

学习ASP.NET Core的身份认证(基于Cookie的身份认证1)

B/S架构程序可通过Cookie、Session、JWT、证书等多种方式认证用户身份&#xff0c;虽然之前测试过用户登录代码&#xff0c;也学习过开源项目中的登录认证&#xff0c;但其实还是对身份认证疑惑甚多&#xff0c;就比如登录验证后用户信息如何保存、客户端下次连接时如何获取用户…

使用Cursor和Claude AI打造你的第一个App

大家好&#xff0c;使用Cursor和Claude AI打造应用程序是一个结合智能代码辅助和人工智能对话的创新过程。Cursor是一个编程辅助工具&#xff0c;它通过智能代码补全、聊天式AI对话和代码生成等功能&#xff0c;帮助开发者提高编程效率。Claude AI则是一个强大的人工智能平台&a…

ssm152家庭财务管理系统设计与实现+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;家庭财务管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本家庭财务管理系…

《深入理解 Spring MVC 工作流程》

一、Spring MVC 架构概述 Spring MVC 是一个基于 Java 的轻量级 Web 应用框架&#xff0c;它遵循了经典的 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将请求、响应和业务逻辑分离&#xff0c;从而构建出灵活可维护的 Web 应用程序。 在 Spring MV…

LeetCode - #139 单词拆分

文章目录 前言摘要1. 描述2. 示例3. 答案题解动态规划的思路代码实现代码解析1. **将 wordDict 转换为 Set**2. **初始化 DP 数组**3. **状态转移方程**4. **返回结果** **测试用例**示例 1:示例 2:示例 3: 时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗…

LLM( Large Language Models)典型应用介绍 1 -ChatGPT Large language models

ChatGPT 是基于大型语言模型&#xff08;LLM&#xff09;的人工智能应用。 GPT 全称是Generative Pre-trained Transformer。-- 生成式预训练变换模型&#xff1a; Generative&#xff08;生成式&#xff09;&#xff1a;可以根据输入生成新的文本内容&#xff0c;例如回答问题…

维护在线重做日志

学习目标 解释在线重做日志文件的目的概述在线重做日志文件的结构控制日志开关和检查点多路复用和维护在线重做日志文件使用OMF管理在线重做日志文件获取在线重做日志文件信息 在线重做日志文件提供了在数据库发生故障时重做事务的方法。 每个事务都同步写入重做日志缓冲区&a…

分布式数据库中间件可以用在哪些场景呢

在数字化转型的浪潮中&#xff0c;企业面临着海量数据的存储、管理和分析挑战。华为云分布式数据库中间件&#xff08;DDM&#xff09;作为一款高效的数据管理解决方案&#xff0c;致力于帮助企业在多个场景中实现数据的高效管理和应用&#xff0c;提升业务效率和用户体验。九河…

shell(6)if条件判断与for循环结构

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

vulfocus在线靶场:tomcat-pass-getshell 弱口令 速通手册

目录 一、启动环境&#xff0c;访问页面&#xff0c;并登录&#xff0c;账号密码都是tomcat 二、哥斯拉打war包&#xff0c;图解 三、上传war包&#xff0c;图解 四、访问我们直接url/木马文件名/木马文件.jsp&#xff0c;是否存在了 五、 哥斯拉测试连接结果success&…

DICOM核心概念:显式 VR(Explicit VR)与隐式 VR(Implicit VR)在DICOM中的定义与区别

在DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;标准中&#xff0c;VR&#xff08;Value Representation&#xff09; 表示数据元素的值的类型和格式。理解显式 VR&#xff08;Explicit VR&#xff09;与隐式 VR&#xff08;Implicit VR&#…

2、桥接模式

模式解释 百度&#xff1a; 这种类型的设计模式属于结构型模式&#xff0c;它通过提供抽象化和实现化之间的桥接结构&#xff0c;来实现二者的交流调用。这种模式涉及到一个作为桥接的接口&#xff0c;使得实体类的功能独立于接口实现类&#xff0c;这两种类型的类可被结构化…

小程序-基于java+SpringBoot+Vue的开放实验室预约管理系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

【JavaSE】【网络编程】UDP数据报套接字编程

目录 一、网络编程简介二、Socket套接字三、TCP/UDP简介3.1 有连接 vs 无连接3.2 可靠传输 vs 不可靠传输3.3 面向字节流 vs 面向数据报3.4 双向工 vs 单行工 四、UDP数据报套接字编程4.1 API介绍4.1.1 DatagramSocket类4.1.1.1 构造方法4.1.1.2 主要方法 4.1.2 DatagramPocket…