如何实现springboot中controller之间的相互调用

springboot controller之间相互调用

SpringBoot之间内部调用

@Autowired
private RestTemplate restTemplate ;//自动装配restTemplate
-------------------返回json字符串类型----------------------------------
@RequestMapping("/selectHospatal")
	@ResponseBody
	public String selectHospatal()
			throws Exception {
        //返回结果  pageNum
		PageData result = new PageData();
		PageData pageData =getPageData();
        int page=Integer.parseInt(pageData.getString("page"));
		int limit=Integer.parseInt(pageData.getString("limit"));
		String name="";
		name=pageData.getString("name");
		User user = (User) SecurityUtils.getSubject().getPrincipal();
			/*	管理员注册为0	患者为1药厂注册为3	医生注册为4
			 */
			if(name==null){
				name="";
			}
		String forObject="";
		int status=user.getStatus();//类型
		String zsId=user.getType_id();//类型id
		if(status==5){//诊室注册为5//getManageurl是别的springboot服务的地址如:localhost:8080
			String url = getManageurl+"/doctorController/selectHospatal?crid="+zsId+"&name="+name+"&page="+page+"&limit="+limit;
			forObject = restTemplate.getForObject(url, String.class);
		}
		if(status==6){//科室注册为6
			String url = getManageurl+"/doctorController/selectHospatal?dtid="+zsId+"&name="+name+"&page="+page+"&limit="+limit;
			forObject = restTemplate.getForObject(url, String.class);
        }
		if(status==2){//医院注册为2
     String url = getManageurl+"/doctorController/selectHospatal?houid="+zsId+"&name="+name+"&page="+page+"&limit="+limit;
	forObject = restTemplate.getForObject(url, String.class);
		}
    	return forObject;//返回的是json字符串类型
	}
--------------返回PageData对象---------------------------------
/**
 *   查询数据
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/viewd")
    @ResponseBody
	public PageData viewd() throws Exception{
		//参数
		PageData pageData = getPageData();
		try {
			String url = getManageurl+"/doctorController/view?id="+pageData.getString("id");
		//	String forObject = restTemplate.getForObject(url, String.class);
  			ResponseEntity<PageData> userResponseEntity = RestTemplateUtil.postJson(url, "", PageData.class, restTemplate);
			PageData body = userResponseEntity.getBody();
			return body;
		} catch (Exception e) {
			logger.error(e.toString());
			throw new Exception(e.toString());
		}
	}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2021-06-09

详解SpringBoot中Controller接收对象列表实现

如果Spring Boot中对应的Controller要接收一个对象,该对象中又存放了一个List列表,那么页面该如何传递相关应的参数信息呢. 本篇文章给大家一个简单的示例,提供一种实现方式. 实体类 首先看实体类的结构(注意使用了Lombok): @Data public class Rules { private List<Rule> rules; } 对应Rule实体类代码如下: @Data public class Rule { /** * 类名 */ private String c

java springboot poi 从controller 接收不同类型excel 文件处理

根据poi接收controller层的excel文件导入 可使用后缀名xls或xlsx格式的excel. 1.pom引入 <!-- poi 操作Excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <d

SpringBoot对Controller进行单元测试的实现代码 附乱码解决方案

Controller代码 package com.keafmd.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * Keafmd * * @ClassName: Hel

详解SpringBoot Controller接收参数的几种常用方式

第一类:请求路径参数 1.@PathVariable 获取路径参数.即url/{id}这种形式. 2.@RequestParam 获取查询参数.即url?name=这种形式 例子 GET http://localhost:8080/demo/123?name=suki_rong 对应的java代码: @GetMapping("/demo/{id}") public void demo(@PathVariable(name = "id") String id, @Re

springboot用controller跳转html页面的实现

在学习SpringBoot的过程中遇到一个问题,因为SpringBoot是集成了tomcat的,所以项目是打成jar包,通过SpringMVC注解的方式去运行的,所以静态页面就放在maven工程的resources目录下的templates目录下所以怎么去跳转是个问题,现在就是解决这个问题 首先看项目结构 pom.xml文件依赖 <!-- 1.创建一个Maven工程,选择jar类型项目2.引入SpringBootMaven依赖. --> <!-- Maven parent 目的,聚合工程

SpringBoot @ControllerAdvice 拦截异常并统一处理

在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有@RequestMapping中.参考:@ControllerAdvice 文档 一.介绍 创建 MyControllerAdvice,并添加 @ControllerAdvice注解. package com.sam.demo.controller; import org.springframework.ui

SpringBoot http请求注解@RestController原理解析

这篇文章主要介绍了SpringBoot http请求注解@RestController原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 @RestController @RestController = @Controller + @ResponseBody组成,等号右边两位同志简单介绍两句,就明白我们@RestController的意义了: @Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目

Spring注解@RestControllerAdvice原理解析

这篇文章主要介绍了Spring注解@RestControllerAdvice原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 前段时间部门搭建新系统,需要出异常后统一接口的返回格式,于是用到了Spring的注解@RestControllerAdvice.现在把此注解的用法总结一下. 用法 首先定义返回对象ResponseDto package com.staff.points.common; import lombok.Data;

SpringBoot java-jar命令行启动原理解析

在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,而不需要另外配置一个Web Server.那么spring boot如何启动的呢?今天我们就来一起探究一下它的原理.首先我们来创建一个基本的spring boot工程来帮助我们分析,本次spring boot版本为 2.2.5.RELEASE. // SpringBootDemo.java @SpringBootApplication public class Spr

Springboot错误处理机制实现原理解析

1.默认的错误机制 默认效果 ①在浏览器中访问不存在的请求时,springboot默认返回一个空白页面 浏览器的请求头 ②客户端访问时,返回json数据 { "timestamp": "2020-03-24T02:49:56.572+0000", "status": 404, "error": "Not Found", "message": "No message availa

SpringBoot启动器Starters使用及原理解析

Starters是什么 Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包.如你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了. Starters命名规则 Spring Boot官方的启动器都是以spring-boot-starter-命名的,代表了一个特定的应用类型.第三方的启动器不能以spring-boot开头命名,它们都

springboot @ComponentScan注解原理解析

这篇文章主要介绍了springboot @ComponentScan注解原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 @ComponentScan 告诉Spring从哪里找到bean. 如果你的其他包都在@SpringBootApplication注解的启动类所在的包及其下级包,则你什么都不用做,SpringBoot会自动帮你把其他包都扫描了. 如果你有一些bean所在的包,不在启动类的包及其下级包,那么你需要手动加上@Compone

全面解析SpringBoot自动配置的实现原理

之前一直在用SpringBoot框架,一直感觉SpringBoot框架自动配置的功能很强大,但是并没有明白它是怎么实现自动配置的,现在有空研究了一下,大概明白了SpringBoot框架是怎么实现自动配置的功能,我们编写一个最简单的自动配置功能,大概的总结一下. 一,配置属性类 其实就是值对象注入的方式去配置一些Spring常用的配置,我们编写一个最简单的配置对象. @ConfigurationProperties(prefix = "hello") //@Component //如果这

Spring @Conditional注解原理解析

这篇文章主要介绍了Spring @Conditional注解原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 @Conditional是Spring4新提供的注解,它的作用是根据某个条件加载特定的bean. 我们需要创建实现类来实现Condition接口,这是Condition的源码 public interface Condition { boolean matches(ConditionContext var1, AnnotatedT

Spring Boot和Vue跨域请求问题原理解析

这篇文章主要介绍了Spring Boot和Vue跨域请求问题原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用Spring Boot + Vue 做前后端分离项目搭建,实现登录时,出现跨域请求 Access to XMLHttpRequest at 'http://localhost/open/login' from origin 'http://localhost:8080' has been blocked by CORS pol

SpringBoot启动应用及回调监听原理解析

这篇文章主要介绍了SpringBoot启动应用及回调监听原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主类Main方法 public static void main(String[] args) { SpringApplication.run(SpringBootRunApplication.class, args); } 创建SpringApplication对象 public static ConfigurableApplica