SrpingBoot基础

news2024/11/22 19:40:52

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/**"):   获取用户的访问类型
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");
    }
    @Override
    public 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标注接口类,创建类对象,获取对应方法进行传参如:
          @Autowired
          private 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.coloradmin.cn/o/2244577.html

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

相关文章

Spring6 MyBatis

1. 依赖 <dependencies><!-- spring核心--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.14</version></dependency><!-- Resource注解的依赖…

JavaEE专栏介绍

专栏导读 在当今快速发展的信息技术时代&#xff0c;JavaEE作为企业级应用开发的核心技术之一&#xff0c;扮演着至关重要的角色。本“JavaEE”专栏旨在为对JavaEE感兴趣的开发者提供一个全面的学习平台&#xff0c;从基础概念到高级应用&#xff0c;帮助读者深入理解JavaEE框…

互联网数字化商品管理浪潮思考:从信息化到精准运营

目录 一、商品数字化转型面临的现状分析 &#xff08;一&#xff09;运营方向分析 &#xff08;二&#xff09;商品归类分析 二、商品数字化管理建设分析 三、基础建设——商品信息数字化 &#xff08;一&#xff09;商品信息质量数字化的目的 &#xff08;二&#xff0…

一文读懂Redis6的--bigkeys选项源码以及redis-bigkey-online项目介绍

一文读懂Redis6的--bigkeys选项源码以及redis-bigkey-online项目介绍 本文分为两个部分&#xff0c;第一是详细讲解Redis6的--bigkeys选项相关源码是怎样实现的&#xff0c;第二部分为自己对--bigkeys源码的优化项目redis-bigkey-online的介绍。redis-bigkey-online是自己开发的…

随机场模型与命名实体识别:深入理解CRF及其应用

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

Qlik Sense QVD 文件

QVD 文件 QVD (QlikView Data) 文件是包含从 Qlik Sense 或 QlikView 中所导出数据的表格的文件。QVD 是本地 Qlik 格式&#xff0c;只能由 Qlik Sense 或 QlikView 写入和读取。当从 Qlik Sense 脚本中读取数据时&#xff0c;该文件格式可提升速度&#xff0c;同时又非常紧凑…

ESP8266 AP模式TCP客户端 电脑手机网络调试助手

1.AP模式TCP客户端和电脑网络调试助手 2.AP模式TCP客户端和手机网络调试助手

Python脚本-linux远程安装某个服务

需求&#xff1a; 某公司因为网站服务经常出现异常&#xff0c;需要你开发一个脚本对服务器上的服务进行监控&#xff1b;检测目标服务器上是否存在nginx软件(提供web服务的软件)&#xff0c;如果不存在则安装(服务器可能的操作系统Ubuntu24/RedHat9)&#xff1b;如果nginx软件…

linux 中mysql查看慢日志

1、到mysql容器&#xff0c;先登录到数据库&#xff0c;查看是否开启 mysql -h 127.0.0.1 -uroot -p SHOW VARIABLES LIKE slow_query_log; 2、如果没有开启&#xff0c;需要先开启 set global slow_query_log ON; 3、查看慢日志文件 SHOW VARIABLES LIKE slow_query_log…

笔记02----重新思考轻量化视觉Transformer中的局部感知CloFormer(即插即用)

1. 基本信息 论文标题: 《Rethinking Local Perception in Lightweight Vision Transformer》中文标题: 《重新思考轻量化视觉Transformer中的局部感知》作者单位: 清华大学发表时间: 2023论文地址: https://arxiv.org/abs/2303.17803代码地址: https://github.com/qhfan/CloF…

光猫、路由器、交换机之连接使用(Connection and Usage of Optical Cats, Routers, and Switches)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

群核科技首次公开“双核技术引擎”,发布多模态CAD大模型

11月20日&#xff0c;群核科技在杭州举办了第九届酷科技峰会。现场&#xff0c;群核科技首次正式介绍其技术底层核心&#xff1a;基于GPU高性能计算的物理世界模拟器。并对外公开了两大技术引擎&#xff1a;群核启真&#xff08;渲染&#xff09;引擎和群核矩阵&#xff08;CAD…

目录背景缺少vscode右键打开选项

目录背景缺少vscode右键打开选项 1.打开右键管理 下载地址&#xff1a;https://wwyz.lanzoul.com/iZy9G2fl28uj 2.开始搜索框搜索vscode&#xff0c; 找到其源目录 3.目录背景里面&#xff0c; 加入vscode.exe 3.然后在目录背景下&#xff0c; 右键&#xff0c; code就可以打…

【已解决】“EndNote could not connect to the online sync service”问题的解决

本人不止一次在使用EndNote软件时遇到过“EndNote could not connect to the online sync service”这个问题。 过去遇到这个问题都是用这个方法来解决&#xff1a; 这个方法虽然能解决&#xff0c;但工程量太大&#xff0c;每次做完得歇半天身体才能缓过来。 后来再遇到该问…

Java小白成长记(创作笔记一)

目录 序言 思维导图 开发流程 新建SpringBoot并整合MybatisPlus 新建SpringBoot 整合MybatisPlus 统一结果封装 全局异常处理 引入数据库 序言 在一个充满阳光的早晨&#xff0c;一位对编程世界充满好奇的年轻人小小白&#xff0c;怀揣着梦想与激情&#xff0c;踏上了学习…

vue--响应式数据

1、建一个vue应用程序&#xff08;简约&#xff09; 引入外链式 <title>第一个Vue程序</title><script src"../vue.global.js"></script> </head> {{}}插值表达式 <body><!-- {{ }} 插值表达式, 可以将 Vue 实例中定义的…

网络安全,文明上网(2)加强网络安全意识

前言 在当今这个数据驱动的时代&#xff0c;对网络安全保持高度警觉已经成为每个人的基本要求。 网络安全意识&#xff1a;信息时代的必备防御 网络已经成为我们生活中不可或缺的一部分&#xff0c;信息技术的快速进步使得我们对网络的依赖性日益增强。然而&#xff0c;网络安全…

怎么做好白盒测试?

白盒测试 一、什么是白盒测试&#xff1f;二、白盒测试特点三、白盒测试的设计方法1、逻辑覆盖法1、测试设计方法—语句覆盖a、用例设计如下&#xff1a;b、语句覆盖的局限性 2、测试设计方法—判定覆盖a、测试用例如下&#xff1a;b、判定覆盖的局限性 3、测试设计方法—条件覆…

阻尼Newton方法-数值最优化方法-课程学习笔记-5

这篇文章我们继续来学习数值最优化方法第三章的后续内容 阻尼Newton方法 这一章我们以及在之前了解过了&#xff1a;最速下降法&#xff0c;基本Newton方法&#xff0c;这一节我们来了解阻尼newton方法 之前我们提到的基本Newton方法是以一固定步长和Newton方向进行迭代的&a…

力扣 只出现一次的数字-136

只出现一次的数字-136 class Solution { public:int singleNumber(vector<int>& nums) {//按位异或的规则是&#xff1a;两个二进制位相同时结果为0&#xff0c;不同时结果为1//具有自反性&#xff0c;两个二进制位相同时结果为0&#xff0c;一个数(a)和0按位异或的…