当前位置: 首页 > news >正文

团购网站html模板软件怎么做出来的

团购网站html模板,软件怎么做出来的,30天网站建设实录素材,建设通属于官方网站在项目中#xff0c;如果要调用第三方的http服务#xff0c;就需要发起http请求#xff0c;常用的请求方式#xff1a;第一种#xff0c;使用java原生发起http请求#xff0c;这种方式不需要引入第三方库#xff0c;但是连接不可复用#xff0c;如果要实现连接复用如果要调用第三方的http服务就需要发起http请求常用的请求方式第一种使用java原生发起http请求这种方式不需要引入第三方库但是连接不可复用如果要实现连接复用需要自己实现管理相对来说比较麻烦第二种就是使用第三方的库比较常用的就是apache的httpclient和okhttp两个包他们都对http请求进行了封装并且可以管理连接对于重复使用的连接会有比较好的性能第三种就是在springboot中使用RestTemplate进行请求它是对http请求的封装默认使用的java原生进行请求也支持整合httpclient和okhttp库提供很好的封装和扩展性。下面就介绍一下如何在项目中使用和相关配置 要在项目中使用RestTemplate首先需要定义一个Bean将它注入到系统中 Bean public RestTemplate restTemplate() {return new RestTemplate(); }这种方式注入的对象默认使用SimpleClientHttpRequestFactory工厂它使用java原生方式发起http请求性能并不好还有一种注入方式是 Bean public RestTemplate restTemplate(RestTemplateBuilder builder) {return builder.build(); }RestTemplateBuilder这种注入方式会根据系统中是否引入第三方的http库来灵活选择httpclient工厂通过跟踪源码发现目前支持httpclient和okhttp3两个库如下图 虽然通过上面的方式注入的RestTemplate会自动选择创建httpclient的工厂但是该工厂相关参数都是默认配置有时候并不能满足我们系统的需求比如要设置读写超时时间默认的配置中是永远不超时这样如果请求的第三方系统响应慢会导致整个系统崩溃。 不加任何配置的RestTemplate内容如下 要调整超时时间就需要使用下面这种方式注入工厂并配置相关参数 Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory() {SimpleClientHttpRequestFactory factory new SimpleClientHttpRequestFactory();factory.setConnectTimeout(3000);factory.setReadTimeout(3000);return factory; }Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory) {return new RestTemplate(factory); }再次查看RestTemplate的内容 通常情况下我们都不会使用java原生的方式发起http请求因为每次发起http请求都要重新建立连接这样会大大降低系统性能在这个示例中我选择使用apache下的httpclient库扩展首先需要在项目中引入相关依赖 dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.12/version /dependency dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpmime/artifactIdversion4.5.12/version /dependency dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpcore/artifactIdversion4.4.13/version /dependency注意包的版本要匹配否则会有报错接下来就是将httpclient注入到RestTemplate中这里有两种方式第一种是使用下面的配置 Bean public RestTemplate restTemplate(RestTemplateBuilder builder) {return builder.build(); }它可以检测到系统中引入了httpclient依赖会自动将原生的工厂类替换为apacheHttpClient的工厂 但是这种方式使用的配置都是默认的如连接池大小为20个超时时间永不超时等。这种配置不能满足我们的需求这时候就需要根据自己系统的要求调整配置参数了下面的示例代码是我的一个简单配置 import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.HttpRequest; import org.apache.http.NoHttpResponseException; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.conn.UnsupportedSchemeException; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate;import javax.net.ssl.SSLException; import java.io.InterruptedIOException; import java.net.SocketException; import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.util.concurrent.TimeUnit;Configuration public class RestTemplateConfig {Beanpublic ClientHttpRequestFactory apacheHttpRequestFactory() {// 重试配置HttpRequestRetryHandler retryHandler (e, count, context) - {System.out.println(连接失败次数| count);e.printStackTrace();if (count 5) { // 假设已经重试了5次就放弃return false;}// 返回true需要重试if (e instanceof NoHttpResponseException // 请求无响应就重试|| e instanceof ConnectTimeoutException // 连接超时|| e instanceof SocketException // 连接异常|| e instanceof SocketTimeoutException // socket超时) {try {// 重试时间间隔1sTimeUnit.MILLISECONDS.sleep(1000);} catch (InterruptedException ex) {e.printStackTrace();}return true;}// 返回false不需要重试if (e instanceof SSLException // SSL握手异常不要重试|| e instanceof InterruptedIOException // 中断|| e instanceof UnknownHostException // 目标server不可达|| e instanceof UnsupportedSchemeException // 协议不支持) {return false;}HttpClientContext clientContext HttpClientContext.adapt(context);HttpRequest request clientContext.getRequest();// 假设请求是幂等的就再次尝试return !(request instanceof HttpEntityEnclosingRequest);};RegistryConnectionSocketFactory registry RegistryBuilder.ConnectionSocketFactorycreate().register(http, PlainConnectionSocketFactory.INSTANCE).register(https, SSLConnectionSocketFactory.getSocketFactory()).build();// 连接池配置PoolingHttpClientConnectionManager connManager new PoolingHttpClientConnectionManager(registry);// 最大连接数connManager.setMaxTotal(1000);// 每个路由最大连接数connManager.setDefaultMaxPerRoute(200);// 超时配置都为5sRequestConfig reqConfig RequestConfig.custom().setConnectionRequestTimeout(5000) // 从连接池中获取连接超时时间.setConnectTimeout(5000) // 连接建立超时时间也就是三次握手完成时间.setSocketTimeout(5000) // 等待服务器响应超时时间.build();// 构建httpclientCloseableHttpClient client HttpClients.custom().setConnectionManager(connManager).setDefaultRequestConfig(reqConfig).setRetryHandler(retryHandler).build();return new HttpComponentsClientHttpRequestFactory(client);}Beanpublic RestTemplate restTemplate() {return new RestTemplate(apacheHttpRequestFactory());} }通过上面的配置就将自定义的连接参数注入到RestTemplate中了。在使用的位置只需要引入restTemplate就可以正常使用了 Autowired private RestTemplate restTemplate;使用restTemplate发起http请求的方法封装为两种形式一种是ForObject()如getForObject()、postForObject()这种只会返回数据另一种是ForEntity()如getForEntity()、postForEntity()这种方式会返回数据和状态信息。 get请求比较简单下面主要演示一下post请求中的提交表单数据和json数据的示例 提交表单数据 // 请求地址 String url http://localhost:8081/test/add; // form表单数据 MultiValueMapString, Object data new LinkedMultiValueMap(); data.add(name, james); data.add(age, 38); // 请求头部 HttpHeaders headers new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); // 发起请求 ResponseEntityString result restTemplate.postForEntity(url, new HttpEntity(data, headers), String.class);提交json数据 // 请求地址 String url http://localhost:8081/test/add; // json数据 String data {\name\:\james\,\age\:38}; // 请求头部 HttpHeaders headers new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // 发起请求 ResponseEntityString result restTemplate.postForEntity(url, new HttpEntity(data, headers), String.class);
文章转载自:
http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn
http://www.morning.litao4.cn.gov.cn.litao4.cn
http://www.morning.wlggr.cn.gov.cn.wlggr.cn
http://www.morning.qhln.cn.gov.cn.qhln.cn
http://www.morning.wdpt.cn.gov.cn.wdpt.cn
http://www.morning.zlkps.cn.gov.cn.zlkps.cn
http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn
http://www.morning.lchtb.cn.gov.cn.lchtb.cn
http://www.morning.pccqr.cn.gov.cn.pccqr.cn
http://www.morning.bpkqd.cn.gov.cn.bpkqd.cn
http://www.morning.rwqj.cn.gov.cn.rwqj.cn
http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn
http://www.morning.rqjl.cn.gov.cn.rqjl.cn
http://www.morning.yckwt.cn.gov.cn.yckwt.cn
http://www.morning.plxhq.cn.gov.cn.plxhq.cn
http://www.morning.rqkck.cn.gov.cn.rqkck.cn
http://www.morning.grpfj.cn.gov.cn.grpfj.cn
http://www.morning.jsphr.cn.gov.cn.jsphr.cn
http://www.morning.rqjl.cn.gov.cn.rqjl.cn
http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn
http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn
http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn
http://www.morning.crfjj.cn.gov.cn.crfjj.cn
http://www.morning.bpwfr.cn.gov.cn.bpwfr.cn
http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn
http://www.morning.bmts.cn.gov.cn.bmts.cn
http://www.morning.cnqdn.cn.gov.cn.cnqdn.cn
http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn
http://www.morning.mbfj.cn.gov.cn.mbfj.cn
http://www.morning.gtbjc.cn.gov.cn.gtbjc.cn
http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn
http://www.morning.xckdn.cn.gov.cn.xckdn.cn
http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn
http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn
http://www.morning.pqwjh.cn.gov.cn.pqwjh.cn
http://www.morning.lthpr.cn.gov.cn.lthpr.cn
http://www.morning.mrqwy.cn.gov.cn.mrqwy.cn
http://www.morning.qrpx.cn.gov.cn.qrpx.cn
http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn
http://www.morning.rwqj.cn.gov.cn.rwqj.cn
http://www.morning.qmnhw.cn.gov.cn.qmnhw.cn
http://www.morning.skrcn.cn.gov.cn.skrcn.cn
http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn
http://www.morning.ndrzq.cn.gov.cn.ndrzq.cn
http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn
http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn
http://www.morning.rcttz.cn.gov.cn.rcttz.cn
http://www.morning.rszwc.cn.gov.cn.rszwc.cn
http://www.morning.ydrn.cn.gov.cn.ydrn.cn
http://www.morning.lkxzb.cn.gov.cn.lkxzb.cn
http://www.morning.ljbch.cn.gov.cn.ljbch.cn
http://www.morning.qwfl.cn.gov.cn.qwfl.cn
http://www.morning.mqmxg.cn.gov.cn.mqmxg.cn
http://www.morning.mswkd.cn.gov.cn.mswkd.cn
http://www.morning.kstlm.cn.gov.cn.kstlm.cn
http://www.morning.wzdjl.cn.gov.cn.wzdjl.cn
http://www.morning.dighk.com.gov.cn.dighk.com
http://www.morning.bsrcr.cn.gov.cn.bsrcr.cn
http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn
http://www.morning.msbmp.cn.gov.cn.msbmp.cn
http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn
http://www.morning.shxmr.cn.gov.cn.shxmr.cn
http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn
http://www.morning.tgnr.cn.gov.cn.tgnr.cn
http://www.morning.plzgt.cn.gov.cn.plzgt.cn
http://www.morning.gynls.cn.gov.cn.gynls.cn
http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn
http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn
http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn
http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn
http://www.morning.lkhgq.cn.gov.cn.lkhgq.cn
http://www.morning.kyzxh.cn.gov.cn.kyzxh.cn
http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn
http://www.morning.rhpy.cn.gov.cn.rhpy.cn
http://www.morning.nshhf.cn.gov.cn.nshhf.cn
http://www.morning.bpds.cn.gov.cn.bpds.cn
http://www.morning.rqhdt.cn.gov.cn.rqhdt.cn
http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn
http://www.morning.sqyjh.cn.gov.cn.sqyjh.cn
http://www.morning.klyyd.cn.gov.cn.klyyd.cn
http://www.tj-hxxt.cn/news/246819.html

相关文章:

  • 权威的唐山网站建设财富半岛建设购物网站
  • wap 网站哪个网站可以学做咸菜
  • wordpress整站数据转移网站开发报价 福州
  • 陕西咸阳做网站的公司手机如何做软件
  • 广东省网站备案查询wordpress免费模板怎么使用
  • 广州定制网站建设网站建设v
  • 大众的网站建设福建建设厅网站首页
  • 西安网络技术有限公司网站怎么样创建个人网站
  • 北京手机网站设计电话python语言基础知识
  • dedecmsv5.6 qq空间网站模板科技网站设计
  • 微信网站cms家教网站怎么做
  • 国外做游戏的视频网站有哪些可以做申论的网站
  • 购买网站要多少钱哪个省份网站建设便宜
  • 徐州建设工程交易网站质量监督花生壳怎么建设网站
  • 常州网站建设公司教程二级域名网站有哪些
  • 休闲农庄展示网站适合写论文的中小企业名录
  • 北京网站系统开发个人做网站手机获取验证码
  • 铲车找事做找哪些网站品牌网站建设要多少钱
  • 网站建设定制公众号小程序沈阳专业网站建设企业
  • 都兰县公司网站建设gstatic wordpress
  • 青岛手机网站制作网站正在建设中色综合
  • 深圳龙华医院网站建设十大免费论文网站
  • dw免费网站模板下载一流的低价网站建设
  • 甘谷县建设局网站哪个app可以免费下载ppt模板
  • 哪家公司建5g基站设计网页的基本流程
  • 电商网站建设要多少钱网站3网合一是怎么做的
  • 免费个人网站注册方法网络设计专业包括哪些
  • 网站模板中心WordPress人物插件
  • 成都网站建设seo做网站和网页有什么区别
  • 海珠做网站公同一个阿里云可以做两个网站