java spring mvc通过httpclient调用别人的接口服务

java spring mvc通过httpclient调用别人的接口服务,第1张

主要有以下几点原因:

1、网络不通,在调用的机器上评一下对方服务器ip或域名;

2、如果接口url用的域名,排查是不是DNS问题,这种问题使用方法1时ping域名应该是不通的,直接ping ip可以通;

3、请求接口时设置的超时时间太短,>

1Springboot整合Swagger2

11pom加swagger依赖

<dependency>

         <groupId>iospringfox</groupId>

         <artifactId>springfox-swagger2</artifactId>

         <version>292</version>

      </dependency>

      <!-- <dependency>

         iospringfox

         springfox-swagger-ui

         292

      -->

      <dependency>

            <groupId>comgithubxiaoymin</groupId>

            <artifactId>swagger-bootstrap-ui</artifactId>

            <version>190</version>

        </dependency>

      <dependency>

          <groupId>ioswaggercorev3</groupId>

          <artifactId>swagger-annotations</artifactId>

          <version>208</version>

      </dependency>

        <dependency>

          <groupId>ioswaggercorev3</groupId>

          <artifactId>swagger-models</artifactId>

          <version>208</version>

</dependency>

12添加swagger配置类

@Configuration

@EnableSwagger2

@EnableSwaggerBootstrapUI

//@ConditionalOnExpression("${swaggerenable:true}")

public class Swagger2 {

//    @Override 

//    public voidaddResourceHandlers(ResourceHandlerRegistry registry) { 

//       registryaddResourceHandler("swagger-uihtml")addResourceLocations("classpath:/META-INF/resources/"); 

//        registryaddResourceHandler("/webjars")addResourceLocations("classpath:/META-INF/resources/webjars/"); 

//    } 

   @Value("${swaggerenable:true}")

   private String enable;

   @Value("${swaggerbasePackage}")

   private String basePackage;

   @Bean

   public Docket createRestApi()

{

      Predicateselector= PathSelectors none ();

      if ("true"equals(enable)) {

         selector=PathSelectors any ();

      }

      //定义全局参数

       Listpars = new ArrayList<>();

          ParameterBuildertoken = new ParameterBuilder();

          tokenname("token")description("token")modelRef( new ModelRef("string"))parameterType("header")required( false )build();

          parsadd(tokenbuild());

      return new Docket(DocumentationType SWAGGER_2 )

            globalOperationParameters(pars) // 全局参数

            groupName("demo01")//指定分组

            apiInfo(apiInfo())

            select()

            apis(RequestHandlerSelectors basePackage (basePackage))

//          paths(PathSelectorsany())

            paths(selector)

            build();

   }

   private ApiInfo apiInfo() {

      return new ApiInfoBuilder()

            title("SpringBoot测试使用 Swagger2 构建RESTful API")

            description("springboot demo 接口文档")

            version("10")

            build();

   }

}

13加上swagger启用禁用开关

新建applicationproperties文件

#swagger启用禁用标识true:启用

swaggerenable=true

#swagger扫描需生成文档的包路径

swaggerbasePackage=comtjcspringbootDemocontroller

14Swagger具体注释用法

>

在springMVC中的Controller层中获取页面中的input中用户输入的值的方法:

后台在采集jsp页面表单里面的数据时没有用到传统的requestgetParameter(),而是在controller的传入参数多了几个对象。

import javautilMap;

import javaxservlet>

import javaxservlet>

import orgspringframeworkstereotypeController;

import orgspringframeworkwebbindannotationRequestMapping;

import orgspringframeworkwebservletModelAndView;

import comzylnonglinbaseBaseController;

import comzylnonglinbaseentityVacate;

@Controller

@RequestMapping(value="/admin/qingjia")

public class VacateController extends BaseController{

/

 跳转到请假页面

 @param req

 @param resp

 @return

/

@RequestMapping(value="/toVacate")

public ModelAndView toVacate(>

Map<String,Object> context = getRootMap();

return forword("/qingjia/vacate", context);

}

/

 提交请假信息

 @param vacate

 @param req

 @param resp

/

@RequestMapping(value="/addVacate")

public void addVacate(Vacate vacate,>

Systemoutprintln(vacategetClassNum());//

Systemoutprintln(vacategetReason());

Systemoutprintln(vacategetsName());

Systemoutprintln(vacategetsNum());

Systemoutprintln(vacategetsPhone());

}

}

Spring MVC:

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。

防止表单重复提交的两种方式

1)通过重定向

采取请求转发的方式完成表单内容的添加会造成内容的重复插入。

当向Servlet发送一条增加记录的请求后,servlet首先向数据库增加一条记录,然后又从数据库中查询出所有数据,接着转发到另一个页面,这时,页面上浏览器的地址显示的是servlet的地址,当用户刷新页面时,又会向servlet发送一条添加请求,这样会导致数据库中重复数据不断增加。

解决办法:采用重定向的方式添加数据不会导致数据的重复插入或删除。

向servlet发送一个添加请求时,这个servlet只执行添加 *** 作,然后重定向到另一个servlet进行数据的查询,最后转发到显示页面。

2)通过Session Token(Session令牌)

当客户端第一次向服务器端发送请求的时候,服务器会通过Token标签,并且会将这个字符串放到session中,然后将这个字符串发送给客户端,在提交之前页面上就有了一个字符串,服务器端也有一个字符串,两个字符串的内容是一样的,当你提交的时候,服务器会比较两个字符串是不是一样的,如果是一样的,就是第一次提交,并且更新服务器端的字符串;如果此时再次重复提交,服务器端的字符串已经发生改变而页面中的那个字符串还没有变,这时,你提交的时候两个字符串就不匹配了,服务器端就会认为是第二次提交,这样,服务器就不会再让提交了,进而转向invalidtoken那所指向的页面。

其实就是第二次与第一次jsp页面向服务器提交的内容和第一次一模一样,当在浏览器上返回前一页时,表单中提交的内容和第一次也是易语言的,所以这种情况下提交也会失败,当返回前面一夜然后刷新,刷新相当于向服务器发送了一次请求,所以这样提交就可以成功。

以上就是关于java spring mvc通过httpclient调用别人的接口服务全部的内容,包括:java spring mvc通过httpclient调用别人的接口服务、如何防止spring mvc重复提交、springboot,springmvc整合swagger等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9267792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存