java web 基础springboot

news2024/11/26 12:24:30

1.SprintBootj集成mybaits 连接数据库

pom.xml文件添加依赖

<!--	mysql驱动-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.30</version>
		</dependency>

<!--	mybatis 整合Sprintboot框架起步依赖-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
	</dependencies>

mapper文件 数据持久层

  • RESTFul风格

简单的说就是没有方法体,直接拼接地址

@GetMapping(value = "/studentrestfull/detail/{id}/{name}")
    public Object student1(@PathVariable("id") Integer id,
                           @PathVariable("name") String name)

注意的点:

//以上代码restful请求不容易区分请求类型造成错误
//路径冲突;通常在RESTFUL风格中方法的请求方式会按照增删改查进行区分
//路径冲突;更改请求路径
//RESTFul请求风格要求路径中出现都是名词,不要是动词
@RestController
public class StudentControllerRestful {

    @RequestMapping(value = "studentrestfull")
    public Object studentrestfull(Integer id,String name){

        Student student = new Student();
        student.setId(id);
        student.setName(name);
        return student;
    }

    //restful请求风格 (get) http://127.0.0.1:8081/springboot/studentrestfull/detail/11/lisi
//    @RequestMapping(value = "/studentrestfull/detail/{id}/{name}")
    @GetMapping(value = "/studentrestfull/detail/{id}/{name}")
    public Object student1(@PathVariable("id") Integer id,
                           @PathVariable("name") String name){
        Map<String,Object> retMap = new HashMap<>();
        retMap.put("id",id);
        retMap.put("name",name);
        return retMap;
    }

    //restful请求风格  使用postman进行数据验证
//    @RequestMapping(value = "/studentrestfull/detail/{id}/{status}")
    @DeleteMapping(value = "/studentrestfull/detail/{id}/{status}")
    public Object student2(@PathVariable("id") Integer id,
                           @PathVariable("status") String status){
        Map<String,Object> retMap = new HashMap<>();
        retMap.put("id",id);
        retMap.put("status",status);
        return retMap;
    }

    //以上代码restful请求不容易区分请求类型造成错误
    //通常在RESTFUL风格中方法的请求方式会按照增删改查进行区分


    //city与status进行冲突
//    @DeleteMapping(value = "/studentrestfull/detail/{id}/{city}")
    @DeleteMapping(value = "/studentrestfull/{id}/detail/{city}")
    public Object student3(@PathVariable("id") Integer id,
                           @PathVariable("city") String city){
        Map<String,Object> retMap = new HashMap<>();
        retMap.put("id",id);
        retMap.put("city",city);
        return retMap;
    }

}
  • 集成redis

        1.添加依赖 (pom文件)

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

         2.核心配置文件中添加redis配置(application.properties文件)

spring.redis.host=127.0.0.1
spring.redis.port= 6379
spring.redis.password= 123456

 redis控制器

@Controller
public class StudentControllerRedis {
    @Autowired
    private StudentService studentService;

    @RequestMapping(value = "/put")
    public @ResponseBody Object putredis(String key,String value){
        studentService.put(key,value);
        return "写入成功";
    }

    @RequestMapping(value = "/get")
    public @ResponseBody String get(){
        String count = studentService.get("name");
        return "数据count为:" +count;
    }
}

 redis接口

public interface StudentService {

//    根据学生id查询学生  这是接口  需要实现类StudentServiceImpl
    Student querStudengById(Integer id);
//修改学生id
    int updateStudentById(Student student);


    //将值存放到server中
    void put(String key, String value);

    //从redis获取count值
    String get(String count);
}

 redis接口实现层

//StudentService 的实现类  业务层
@Service
public class StudentServiceImpl implements StudentService {
    @Autowired  //加载对象
    private StudentMapper studentMapper;

    @Autowired  //加载对象
    private RedisTemplate<Object,Object> redisTemplate;

    @Override
    public Student querStudengById(Integer id) {
        return studentMapper.selectByPrimaryKey(id);
    }

    @Transactional  //事物,int a = 10/0; 执行出错,数据库不改变
    @Override
    public int updateStudentById(Student student) {
        int i = studentMapper.updateByPrimaryKeySelective(student);
//        int a = 10/0;
        return i;
    }

    @Override
    public void  put(String key,String value){
        redisTemplate.opsForValue().set(key,value);  //操作string
    }


    @Override
    public String get(String key){
        String count = (String) redisTemplate.opsForValue().get(key);
        return count;
    }




}
  •  SpringBoot 集成Dubbo 分布式框架  (服务提供者consumer)

         

 pom文件

<!--        dubbo集成springboot起步依赖-->
<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

<!--        注册中心-->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

配置文件

#设置Dubbo的配置
spring.application.name=022-springboot-dubbo-consumer


#当前工程是一个服务的提供者
spring.dubbo.server = true

#设置注册中心
spring.dubbo.registry=zookeeper://127.0.0.1:2181

web中的控制文件

@Controller
public class Studentconsumer {
    //  dubbo:reference interface="" version="" check=""
    @Reference(interfaceClass = StudentServiceDobbu.class,version = "1.0.0",check = false)
    private StudentServiceDobbu studentServiceDobbu;

    //http://127.0.0.1:8081/student/count
    @RequestMapping(value = "student/count")
    public @ResponseBody Object studnetCount(){
        Integer allStudnetCount = studentServiceDobbu.querAllStudentCount();
        return "学生总人数" + allStudnetCount;
    }
}

dubbo接口

package com.javawebs.springboot_014.service;

public interface StudentServiceDobbu {

//    获取学生总人数
    Integer querAllStudentCount();
}

impl接口实现类

package com.javawebs.springboot_014.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.javawebs.springboot_014.service.StudentServiceDobbu;
import org.springframework.stereotype.Component;

@Component //加载到springboot
@Service(interfaceClass = StudentServiceDobbu.class,version = "1.0.0",timeout = 15000) //暴露接口

public class StudentServiceDobbuImpl implements StudentServiceDobbu {
    @Override
    public Integer querAllStudentCount() {
        //调用数据持久层

        return 10000;
    }
}

启动器

@SpringBootApplication  //开启spring配置
@EnableDubboConfiguration  //开启Dobbu注解配置
@MapperScan(basePackages = "com.javawebs.springboot_014.mapper")  //开启扫描mapper接口的包和子包 总的
//@EnableTransactionManagement   //可选项  加不加事物都生效

public class Springboot014Application {

    public static void main(String[] args) {
        SpringApplication.run(Springboot014Application.class, args);
    }

}

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

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

相关文章

学习HCIP的day.09

目录 一、BGP&#xff1a;边界网关路由协议 二、BGP特点&#xff1a; 三、BGP数据包 四、BGP的工作过程 五、名词注解 六、BGP的路由黑洞 七、BGP的防环机制—水平分割 八、BGP的基本配置 一、BGP&#xff1a;边界网关路由协议 是一种动态路由协议&#xff0c;且是…

花果山博客

1&#xff1a;前言 2&#xff1a;项目介绍 3&#xff1a;统一返回结果 4&#xff1a;登录功能实现 前言 简单介绍一个写这个博客的目的。 因为之前学开发都是学完所需的知识点再去做项目&#xff0c;但是这时候在做项目的过程中发现以前学过的全忘了&#xff0c;所以为了减少这…

Vue3导入Element-plus方法

先引入依赖 npm install element-plus --savemain.js中要引入两个依赖 import ElementPlus from element-plus; import "element-plus/dist/index.css";然后 这个东西 我们最好还是挂载vue上 所以 还是 createApp(App).use(ElementPlus)然后 我们可以在组件上试一…

腾讯云轻量服务器镜像安装宝塔Linux面板怎么使用?

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

从零搭建微服务-认证中心(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 创建新项目 MingYue Idea 创建 maven 项目这…

操作系统第五章——输入输出管理(下)

提示&#xff1a;枕上诗书闲处好&#xff0c;门前风景雨来佳。 文章目录 5.3.1 磁盘的结构知识总览磁盘 磁道 扇区如何从磁盘中读/写数据盘面 柱面磁盘的物理地址磁盘的分类知识回顾 磁盘调度算法知识总览磁盘的读写操作需要的时间先来先服务算法FCFS最短寻找时间优先SSTF扫描算…

SVG图形滤镜

SVG有提供Filter(滤镜)这个东西&#xff0c;可以用来在SVG图形上加入特殊的效果&#xff0c;像是图形模糊化、产生图形阴影、将杂讯加入图形等。以下介绍的是图形模糊化、产生图形阴影这2个滤镜效果。 浏览器对于SVG Filter的支援 SVG : 滤镜 (仅列出部分有使用到的属性) <…

【数据结构】超详细之实现栈

栈的实现步骤 栈的介绍栈的初始化栈的插入(入栈)栈的出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空销毁栈栈元素打印 栈的介绍 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xf…

快捷转换/互转 Markdown 文档和 TypeScript/TypeDoc 注释

背景 作为文档工具人&#xff0c;经常需要把代码里面的注释转换成语义化的 Markdown 文档&#xff0c;有时也需要进行反向操作。以前是写正则表达式全局匹配&#xff0c;时间长了这种方式也变得繁琐乏味。所以写了脚本来互转&#xff0c;增加一些便捷性。 解决方案 注释转 M…

【C++】初遇C++

认识C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object orient…

学好网络安全,每年究竟能挣多少钱呢?

薪资的高低&#xff0c;应该是想要转行网络安全的同学最关心的话题了。毕竟薪资是个人水平和自我价值的体现嘛。&#xff08;文末资料&#xff09; 今天就展开谈谈网络安全行业的薪资吧。 先来看张图&#xff0c; 大家在求职时都有一个期望薪资&#xff0c;企业会有一个实际薪…

5月的面试难度有点大....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

R语言实践——使用rWCVP映射多样性

使用rWCVP映射多样性 加载库工作流1. 物种丰富度2. 特有物种丰富度3. 特定区域的物种热力图 加载库 library(rWCVP) library(tidyverse) library(sf) library(gt)工作流 1. 物种丰富度 我们可以使用 wcvp_summary 将所有物种的全球出现数据压缩为每个 WGSRPD 3 级区域的原始…

chatgpt赋能python:Python三角函数角度的介绍

Python三角函数角度的介绍 Python语言为各种计算提供了强大的支持。而Python在数学领域的支持更是非常强大&#xff0c;包括对三角函数角度的计算。在Python中&#xff0c;支持常用的三角函数&#xff0c;例如sin、cos、tan等。这些函数都需要将角度转换为弧度&#xff0c;并且…

车载网络测试 - CANCANFD - 基础篇_01

目录 问题思考&#xff1a; 一、为什么需要总线? 二、什么是CAN总线? 三、为什么是CAN总线? 四、曾经的车用总线 1、SAEJ1850(Class2) 2、SAEJ1708 3、K-Line 4、BEAN 5、 byteflight, K-Bus 6、D2B 五、当前的车用总线 1、CAN 2、LIN 3、FlexRay 4、MOST 六…

C#中的DataGridView中添加按钮并操作数据

背景&#xff1a;最近在项目中有需求需要在DataGridView中添加“删除”、“修改”按钮&#xff0c;用来对数据的操作以及显示。 在DataGridView中显示需要的按钮 首先在DataGridView中添加需要的列&#xff0c;此列是用来存放按钮的。 然后在代码中“画”按钮。 if (e.Column…

你知道什么叫三目表达式吗

目录 什么是三目表达式&#xff1f; 运用 1.单个使用 2.嵌套使用 什么是三目表达式&#xff1f; 1.三目表达式是一种编程中常见的表达式,它能够有效地帮助我们解决一些问题。 2.三目表达式由三个部分组成,分别是:条件表达式、结果表达式 听不懂么&#xff0c;那我们就来举个…

网页制作-技术学习笔记

PxCook PxCook测量像素工具下载 https://www.fancynode.com.cn/pxcookPxCook基本操作 通过软件打开设计图 打开软件 创建web项目 拖拽入设计图&#xff0c;png用设计模式 psd用开发模式 常用快捷键 放大设计图&#xff1a;ctrl 缩小设计图&#xff1a;ctrl - - 移动…

一、STM32开发环境的搭建(Keil+CubeMX)

1、STM32开发环境所需的东西 (1)KeilMDK安装包。 (2)STM32CubeMX。 (3)Keil软件对应的单片机pack包。 (4)STM32Cube MCU包。 2、Keil简介及安装 略 3、CubeMX简介及安装 3.1、CubeMX简介 (1)STM32CubeMX是一种图形工具&#xff0c;通过分步过程可以非常轻松地配置STM3…

Flutter 可冻结的侧滑表格 sticky-headers-table 结合 NestedScrollView 吸顶悬浮的使用实践

最近在做flutter web的开发&#xff0c;需要做一个类似云文档中表格固定顶部栏和左侧栏的需求&#xff0c;也就是冻结列表的功能 那么在pub上呢也有不少的开源库&#xff0c;比如&#xff1a; table_sticky_headers data_table_2 如果说只是简单的表格和吸顶&#xff0c;那么这…