- OkHttp搞定Http请求
头秃到底
文章目录OkHttp依赖包创建OkHttpClient构造UrlHeader头设定Get请求同步Get异步GetPost请求Json内容Form表单文件上传Put请求Json内容参数方式Delete请求OkHttp工具类OkHttp官方文档仓库OkHttp是一款高效的HTTP客户端框架:HTTP/2支持允许对同一主机的所有请求共享一个套接字。连接池可以减少请求延迟(如果HTTP/2不可用)。透明G
- android 下载txt,Android 下载文件(使用OKHttp)
weixin_39942492
android下载txt
finallongstartTime=System.currentTimeMillis();OkHttpClientokHttpClient=newOkHttpClient();Requestrequest=newRequest.Builder().url(url).addHeader("Connection","close").build();okHttpClient.newCall(reque
- HTTP 请求 400错误
飞滕人生TYF
http网络协议网络
问题HTTP请求400错误详细问题客户端发送请求publicstaticUserInfoupdateUserInfo(UserInfouserInfo){//创建OkHttpClient对象OkHttpClientclient=newOkHttpClient();//创建请求体MediaTypeJSON=MediaType.parse("application/json;charset=utf-8
- OkHttp之OkHttpClient.Builder
hello world 搬运工
androidokhttp
okhttp3.OkHttpClient.BuilderpublicstaticfinalclassOkHttpClient.BuilderOkHttpClient.Builder是用来帮助创建OkHttpClient的;通过它我们可以方便的对OkHttpClient进行设置;下面是OkHttpClient.Builder设置OkHttpClient的常用方法:设置连接的连接超时的时间,默认10s
- OkHttpClient连接池
artcccj
背景最近项目中接入了一个三方的预览云服务,开发、测试环境用起来很流畅,没有什么问题。但是上线之后,发现文件在上传到云服务这个过程中:间歇性出现超时(频率挺高),几分钟那种,这谁能忍啊?问题定位首先怀疑是文件太大经过排查发现,超时的文件只有200+KB,甚至有些文件只有40+KB,这就很离谱云服务提供商接口问题这么小的文件都能超时,肯定是服务商接口问题超时。基于这种思想,直接就开始联系对方的技术支持
- OKhttp的简述
Android_开发
1,创建OKhttpClient对象2,创建Request对象,通过内部类builder调用生成request对象3,创建一个call对象,若同步execute/enqueue失败之后重定向拦截器桥接拦截器缓存拦截器服务器和客服端连接拦截器dispatcher.enqueue就绪队列和运行队列
- OkHttp3.6.0源码解析
Wocus
前言OkHttp是一个非常流行的框架,已经被谷歌加入开源库中,Retrofit目前也是采用OkHttp实现的,此文章纯属个人笔记。github地址https://github.com/square/okhttp基本使用valhttpClient=OkHttpClient()valrequest=Request.Builder().url("www.baidu.com").build()//同步请求
- okhttp异步请求:AsyncCall、线程池、双向队列
崽子猪
1.创建一个OkHttpClient--->newOkHttpClient();2.创建一个Request对象--->newRequest.Builder();3.创建一个Response对象(表示一个被执行的请求)--->client.newCall(request)--->执行异步请求call.enqueue();onFailure()和onResponse()都是在子线程中完成的,当你要更新
- 大模型: OpenAi流式会话报错【org.springframework.http.converter.HttpMessageNotWritableException: No converter 】
玉成226
【大模型】ai
文章目录一、背景二、解決方案一、背景使用OkHttpClient-sse流式会话报如下错误信息Resolved[org.springframework.http.converter.HttpMessageNotWritableException:Noconverterfor[classjava.util.LinkedHashMap]withpresetContent-Type'text/event
- 认识并使用OkHttp3
南七行者
java后端技术栈AIGChttpokhttp3
认识并使用OkHttp3一、前言:发送Http请求并处理响应1、背景2、传统技术:使用java.net.HttpURLConnection3、学习OkHttp3(可以实现真正的流式处理)二、OkHttp31、OkHttp3是什么?2、如何使用OkHttp3呢?2.1为OkHttpClient创建单例2.1.1默认设置2.1.2自定义设置(更常用)2.1.3不用主动关闭Httpclient2.2同步
- OKHttp 源码分析
星流星
OKHttp是一个来自Square的HTTP客户端框架,用于Java和Android应用程序。它的设计是为了更快地加载资源并节省带宽。OKHttp源码地址:https://github.com/square/okhttpOKHttp的简单使用下面让我们从一个简单的Demo来开始OKHttp的源码阅读。classOKHttpGetDemo{privatevalclient=OkHttpClient(
- SpringCloud 之HttpClient、HttpURLConnection、OkHttpClient切换源码
小咸鱼的技术窝
springcloud源码springcloudjavaspringbootOkHttpClientHttpClient
SpringCloud之HttpClient、HttpURLConnection、OkHttpClient切换源码HttpClient、HttpURLConnection、OkHttpClient区别切换HttpClient源码分析总结切换HttpClient源码验证切换是否成功okHttpClient切换源码分析总结okHttpClient切换源码同时开启okHttp与httpClient会发生
- okhttpclient.setsslsocketfactory 报错解决
王者无双
网络
以前一直都用HttpUrlConnection这个类来做通信和进行文件下载,apk更新升级等。后续因为更新apk的时候包体积较大,网络不好的时候,用HttpUrlConnection偶尔会下载失败,于是下载更新apk就改为了okhtt3这个库,其他业务请求还是用HttpUrlConnection这个类。至于用什么版本的okhttp3进行通信其实请求代码差别不大,比如我用的是implementati
- 2020-04-22
LiuZhanYue
OKHttp一,OK_GET异步请求1,添加依赖implementation'com.squareup.okhttp3:okhttp:3.12.0'网络权限2获取OK对象OkHttpClientokHttpClient=newOkHttpClient.Builder().build();3,获取request对象4,获取call对象Callcall=okHttpClient.newCall(bui
- Android面试Android进阶(十八)-Retrofit相关
肖义熙
Retrofit是基于OkHttp封装的一个网络请求框架,底层网络请求通信由OkHttp实现。上篇文章讲了一些OkHttp相关的一些东西,没看过的可以去看看OkHttp相关本篇基于v2.9.0版本分析源码及问答,先看看Retrofit的简单使用,基于使用来分析。//1、创建OkHttpClient实例(非必须,内部帮你实例化了一个)valmOkHttpClient=OkHttpClient.Bui
- OkHttp ,使用 HttpUrl.Builder 来添加查询参数并添加到请求对象
明月一壶酒
后端#javaweb开发okhttpjava开发语言
在使用OkHttp中,你可以使用HttpUrl.Builder来添加查询参数并将其添加到请求对象中。下面是一个示例代码:importokhttp3.HttpUrl;importokhttp3.OkHttpClient;importokhttp3.Request;importokhttp3.Response;publicclassMain{publicstaticvoidmain(String[]a
- android Retrofit2.0请求 延长超时操作
Dr_abandon新秀
Androidandroidretrofit超时
importokhttp3.OkHttpClient;importretrofit2.Retrofit;importretrofit2.converter.gson.GsonConverterFactory;publicclassMyApiClient{privatestaticfinalStringBASE_URL="https://api.example.com/";//创建OkHttpCli
- Retrofit 2.0 实现Https传输
chenzhenlindx
证书获取1.从网页获取在chrome浏览器打开服务地址,Ctrl+Shift+I打开开发者工具,选择Security->Viewcertificate下载证书;image.png2.找网站开发者(后台)要☺保存证书文件到assets目录下image.png设置证书,并信任所有证书OkHttpClient.Builderbuilder=newOkHttpClient.Builder();try{//
- SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)
Oak科技
websocketspringbootwebsocket后端
SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)文章目录SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)@[TOC]前言一、初始化OkHttpClient1.OkHttpClient实现二、websocket服务代码实现1.websocket服务端实现2.Spar
- Retrofit+rxjava网络请求框架 三 请求日志打印
lodtap
该工具类用于打印请求参数等日志,若下载文件时,需要关闭该日志打印,否则会导致文件临时缓存,影响文件下载进度的获取,文件过大时还会导致OOMimportandroid.util.Log;importokhttp3.OkHttpClient;importokhttp3.logging.HttpLoggingInterceptor;publicclassRetrofitUtils{/***获取OkHtt
- Android-网络请求库okhttp源码阅读随笔
wuri
一:先看看okhttp简单的配置以及使用:1.在app的module中先配置依赖implementation'com.squareup.okhttp3:okhttp:3.10.0'2.okhttp执行网络请求调用方式:异步请求调用Call.enqueue();同步请求调用Call.execute()Activity二:框架基本流程源码剖析由于OkhttpClient内部有非常复杂且多的参数配置,作
- 【图片上传】- Could not initialize class okhttp3.OkHttpClient
@Arielle。
工具okhttpjava
【图片上传】Couldnotinitializeclassokhttp3.OkHttpClient爆错原因查看okhttp对应okio版本:查看项目中使用的okhttp版本:解决方式爆错原因由于OkHttp依赖于okio,目前OkHttp最新的版本为4.7.2,使用Maven/Gradle导入的话不会出现该问题,出现此问题的原因应该是只是单纯把OkHttp的JAR导入,并没有把okio一起导入,所
- OkHttp 3,android开发基础教程
读读金典
程序员面试移动开发android
Interceptor调用链Interceptor接口在OKHttp包下有5个内置实现,也就是上图中最大的那一个框。它们通过责任链的方式调用,实现了Http协议的整个流程,当然这个流程指的是应用层协议的流程,不包括底下传输层的实现。Interceptor是可扩展可配置的,用户可以自定义实现Interceptor接口,并且通过OkHttpClient添加到Http流程的实现中去。OKHttpClie
- Android面试Android进阶(十七)-OkHttp相关问题
肖义熙
问:简述OkHttp简单使用流程(基本不会这么问,为了分析)答:OkHttp使用流程基本分为四个步骤。1、创建OkHttpClient实例2、创建Request3、OkHttpClient生成一个Call对象实例(RealCall)4、发送请求(同步、异步)如://1、创建一个OkHttpClient的实例valclient=OkHttpClient.Builder().build()//2、创建
- SpringCloud实用-OpenFeign整合okHttp
你家宝宝
web框架学习springcloudokhttpspringopenfeign整合
文章目录前言正文一、OkHttpFeignConfiguration的启用1.1分析配置类1.2得出结论,需要增加配置1.3调试二、OkHttpFeignLoadBalancerConfiguration的启用2.1分析配置类2.2得出结论2.3测试附录附1:本系列文章链接附2:OkHttpClient增加拦截器配置附2.1新建配置类OkHttpConfig附2.2调试结果前言众所周知,我们在使用
- OkHttp3源码解析(整体流程)
ModestStorm
转载自OkHttp3源码解析(整体流程)今天主要讲一下OkHttp3源码解析(整体流程),主要分为四大块:okhttp的基本用法OkHttpClient分析Request分析Call分析OkHttp的基本用法添加依赖implementation'com.squareup.okhttp3:okhttp:3.11.0'可以去Okhttp-Github查看并依赖最新的版本。添加网络权限请求构建OkHtt
- Okhttp 浅析
夏沫1999
okhttp
安全的连接OkHttpClient:OkHttpClient:1.线程调度2.连接池,有则复用,没有就创建3.interceptor4.interceptor5.监听工厂6.是否失败重试7.自动修正访问,如果没有权限或认证8是否重定向followRedirects9.协议切换时候是否继续重定向10.Cookiejar容器默认返回空的11.本地缓存12dns域名解析为dns地址通过原生方式,根据域名
- Android okhttp3.0配置https信任所有证书
H100
androidhttps网络协议
参考:Androidokhttp3.0配置https的自签证书和信任所有证书privateOkHttpClientgetHttpsClient(){OkHttpClient.BuilderokhttpClient=newOkHttpClient().newBuilder();//信任所有服务器地址okhttpClient.hostnameVerifier(newHostnameVerifier()
- 【Android】【Kotlin】使用【Retrofit】基本使用
我又来搬代码了
Android学习笔记androidandroidstudio
api"https://www.wanandroid.com/user/login"Retrofit封装objectRetrofitClient{privatevarretrofit:Retrofit?=nullconstvalBASE_URL="https://www.wanandroid.com/user/"privatefungetOkHttpClient():OkHttpClient{va
- OkHttp网络请求读写超时
郑子
Android:应用篇okhttp
查看OkHttp的源码:OkHttpClient的Builder()publicBuilder(){...callTimeout=0;connectTimeout=10_000;readTimeout=10_000;writeTimeout=10_000;...}callTimeout:整个请求的超时时间,如果设置了这个值,则总超时时间不会超过这个值,默认值为0,表示没有限制,总超时时间为:con
- 开发者关心的那些事
圣子足道
ios游戏编程apple支付
我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么?
产品标识符(Product Identifiers)是一串字符串,它用来识别你在应用内贩卖的每件商品。App Store用产品标识符来检索产品信息,标识符只能包含大小写字母(A-Z)、数字(0-9)、下划线(-)、以及圆点(.)。你可以任意排列这些元素,但我们建议你创建标识符时使用
- 负载均衡器技术Nginx和F5的优缺点对比
bijian1013
nginxF5
对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器。
目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高
- LeetCode[Math] - #9 Palindrome Number
Cwind
javaAlgorithm题解LeetCodeMath
原题链接:#9 Palindrome Number
要求:
判断一个整数是否是回文数,不要使用额外的存储空间
难度:简单
分析:
题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。
注:没有看到有关负数是否可以是回文数的明确结论,例如
- 画图板的基本实现
15700786134
画图板
要实现画图板的基本功能,除了在qq登陆界面中用到的组件和方法外,还需要添加鼠标监听器,和接口实现。
首先,需要显示一个JFrame界面:
public class DrameFrame extends JFrame { //显示
- linux的ps命令
被触发
linux
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行
- Android 音乐播放器 下一曲 连续跳几首歌
肆无忌惮_
android
最近在写安卓音乐播放器的时候遇到个问题。在MediaPlayer播放结束时会回调
player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
Log.i("H
- java导出txt文件的例子
知了ing
javaservlet
代码很简单就一个servlet,如下:
package com.eastcom.servlet;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.Resu
- Scala stack试玩, 提高第三方依赖下载速度
矮蛋蛋
scalasbt
原文地址:
http://segmentfault.com/a/1190000002894524
sbt下载速度实在是惨不忍睹, 需要做些配置优化
下载typesafe离线包, 保存为ivy本地库
wget http://downloads.typesafe.com/typesafe-activator/1.3.4/typesafe-activator-1.3.4.zip
解压r
- phantomjs安装(linux,附带环境变量设置) ,以及casperjs安装。
alleni123
linuxspider
1. 首先从官网
http://phantomjs.org/下载phantomjs压缩包,解压缩到/root/phantomjs文件夹。
2. 安装依赖
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
3. 配置环境变量
vi /etc/profil
- JAVA IO FileInputStream和FileOutputStream,字节流的打包输出
百合不是茶
java核心思想JAVA IO操作字节流
在程序设计语言中,数据的保存是基本,如果某程序语言不能保存数据那么该语言是不可能存在的,JAVA是当今最流行的面向对象设计语言之一,在保存数据中也有自己独特的一面,字节流和字符流
1,字节流是由字节构成的,字符流是由字符构成的 字节流和字符流都是继承的InputStream和OutPutStream ,java中两种最基本的就是字节流和字符流
类 FileInputStream
- Spring基础实例(依赖注入和控制反转)
bijian1013
spring
前提条件:在http://www.springsource.org/download网站上下载Spring框架,并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程1.武器接口
package com.bijian.spring.base3;
public interface Weapon {
void kil
- HR看重的十大技能
bijian1013
提升能力HR成长
一个人掌握何种技能取决于他的兴趣、能力和聪明程度,也取决于他所能支配的资源以及制定的事业目标,拥有过硬技能的人有更多的工作机会。但是,由于经济发展前景不确定,掌握对你的事业有所帮助的技能显得尤为重要。以下是最受雇主欢迎的十种技能。 一、解决问题的能力 每天,我们都要在生活和工作中解决一些综合性的问题。那些能够发现问题、解决问题并迅速作出有效决
- 【Thrift一】Thrift编译安装
bit1129
thrift
什么是Thrift
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and s
- 【Avro三】Hadoop MapReduce读写Avro文件
bit1129
mapreduce
Avro是Doug Cutting(此人绝对是神一般的存在)牵头开发的。 开发之初就是围绕着完善Hadoop生态系统的数据处理而开展的(使用Avro作为Hadoop MapReduce需要处理数据序列化和反序列化的场景),因此Hadoop MapReduce集成Avro也就是自然而然的事情。
这个例子是一个简单的Hadoop MapReduce读取Avro格式的源文件进行计数统计,然后将计算结果
- nginx定制500,502,503,504页面
ronin47
nginx 错误显示
server {
listen 80;
error_page 500/500.html;
error_page 502/502.html;
error_page 503/503.html;
error_page 504/504.html;
location /test {return502;}}
配置很简单,和配
- java-1.二叉查找树转为双向链表
bylijinnan
二叉查找树
import java.util.ArrayList;
import java.util.List;
public class BSTreeToLinkedList {
/*
把二元查找树转变成排序的双向链表
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \
- Netty源码学习-HTTP-tunnel
bylijinnan
javanetty
Netty关于HTTP tunnel的说明:
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/http/package-summary.html#package_description
这个说明有点太简略了
一个完整的例子在这里:
https://github.com/bylijinnan
- JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
coder_xpf
jqueryjsonmapval()
JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
数据库查询出来的map有一个字段为空
通过System.out.println()输出 JSONUtil.serialize(map): {"one":"1","two":"nul
- Hibernate缓存总结
cuishikuan
开源sshjavawebhibernate缓存三大框架
一、为什么要用Hibernate缓存?
Hibernate是一个持久层框架,经常访问物理数据库。
为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。
缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
二、Hibernate缓存原理是怎样的?
Hibernate缓存包括两大类:Hib
- CentOs6
dalan_123
centos
首先su - 切换到root下面1、首先要先安装GCC GCC-C++ Openssl等以来模块:yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel2、再安装ncurses模块yum -y install ncurses-develyum install ncurses-devel3、下载Erang
- 10款用 jquery 实现滚动条至页面底端自动加载数据效果
dcj3sjt126com
JavaScript
无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的结果,改变了一直以来只能通过点击下一页来翻页这种常规做法。
无限滚动自动翻页技术的鼻祖是微博的先驱:推特(twitter),后来必应图片搜索、谷歌图片搜索、google reader、箱包批发网等纷纷抄袭了这一项技术,于是靠滚动浏览器滚动条
- ImageButton去边框&Button或者ImageButton的背景透明
dcj3sjt126com
imagebutton
在ImageButton中载入图片后,很多人会觉得有图片周围的白边会影响到美观,其实解决这个问题有两种方法
一种方法是将ImageButton的背景改为所需要的图片。如:android:background="@drawable/XXX"
第二种方法就是将ImageButton背景改为透明,这个方法更常用
在XML里;
<ImageBut
- JSP之c:foreach
eksliang
jspforearch
原文出自:http://www.cnblogs.com/draem0507/archive/2012/09/24/2699745.html
<c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的最后一个项目 step 步长 否 1
- Android实现主动连接蓝牙耳机
gqdy365
android
在Android程序中可以实现自动扫描蓝牙、配对蓝牙、建立数据通道。蓝牙分不同类型,这篇文字只讨论如何与蓝牙耳机连接。
大致可以分三步:
一、扫描蓝牙设备:
1、注册并监听广播:
BluetoothAdapter.ACTION_DISCOVERY_STARTED
BluetoothDevice.ACTION_FOUND
BluetoothAdapter.ACTION_DIS
- android学习轨迹之四:org.json.JSONException: No value for
hyz301
json
org.json.JSONException: No value for items
在JSON解析中会遇到一种错误,很常见的错误
06-21 12:19:08.714 2098-2127/com.jikexueyuan.secret I/System.out﹕ Result:{"status":1,"page":1,&
- 干货分享:从零开始学编程 系列汇总
justjavac
编程
程序员总爱重新发明轮子,于是做了要给轮子汇总。
从零开始写个编译器吧系列 (知乎专栏)
从零开始写一个简单的操作系统 (伯乐在线)
从零开始写JavaScript框架 (图灵社区)
从零开始写jQuery框架 (蓝色理想 )
从零开始nodejs系列文章 (粉丝日志)
从零开始编写网络游戏 
- jquery-autocomplete 使用手册
macroli
jqueryAjax脚本
jquery-autocomplete学习
一、用前必备
官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
当前版本:1.1
需要JQuery版本:1.2.6
二、使用
<script src="./jquery-1.3.2.js" type="text/ja
- PLSQL-Developer或者Navicat等工具连接远程oracle数据库的详细配置以及数据库编码的修改
超声波
oracleplsql
在服务器上将Oracle安装好之后接下来要做的就是通过本地机器来远程连接服务器端的oracle数据库,常用的客户端连接工具就是PLSQL-Developer或者Navicat这些工具了。刚开始也是各种报错,什么TNS:no listener;TNS:lost connection;TNS:target hosts...花了一天的时间终于让PLSQL-Developer和Navicat等这些客户
- 数据仓库数据模型之:极限存储--历史拉链表
superlxw1234
极限存储数据仓库数据模型拉链历史表
在数据仓库的数据模型设计过程中,经常会遇到这样的需求:
1. 数据量比较大; 2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等; 3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态, 比如,查看某一个用户在过去某一段时间内,更新过几次等等; 4. 变化的比例和频率不是很大,比如,总共有10
- 10点睛Spring MVC4.1-全局异常处理
wiselyman
spring mvc
10.1 全局异常处理
使用@ControllerAdvice注解来实现全局异常处理;
使用@ControllerAdvice的属性缩小处理范围
10.2 演示
演示控制器
package com.wisely.web;
import org.springframework.stereotype.Controller;
import org.spring