当前位置:   article > 正文

java http请求头部工具类_servletutils.getrequest()

servletutils.getrequest()
  1. /**
  2. * 权限相关通用常量
  3. *
  4. * @author ws
  5. */
  6. public class SecurityConstants {
  7. /**
  8. * 令牌自定义标识
  9. */
  10. public static final String TOKEN_AUTHENTICATION = "Authorization";
  11. /**
  12. * 令牌前缀
  13. */
  14. public static final String TOKEN_PREFIX = "Bearer ";
  15. /**
  16. * 用户ID字段
  17. */
  18. public static final String USER_ID = "user_id";
  19. /**
  20. * 用户NO字段
  21. */
  22. public static final String USER_NO = "user_no";
  23. /**
  24. * 用户ID字段
  25. */
  26. public static final String USER_TYPE = "user_type";
  27. /**
  28. * 用户名字段
  29. */
  30. public static final String LOGIN_NAME = "login_name";
  31. /**
  32. * 用户名称
  33. */
  34. public static final String USER_NAME = "user_name";
  35. /**
  36. * 昵称
  37. */
  38. public static final String NICK_NAME = "nick_name";
  39. /**
  40. * 授权信息字段
  41. */
  42. public static final String AUTHORIZATION_HEADER = "authorization";
  43. /**
  44. * open id
  45. */
  46. public static final String OPEN_ID = "open_id";
  47. /**
  48. * company name
  49. */
  50. public static final String COMPANY_NAME = "company_name";
  51. /**
  52. * customer no
  53. */
  54. public static final String CUSTOMER_NO = "customer_no";
  55. }

 

  1. import com.destination.destinationquery.util.StringUtils;
  2. import org.springframework.web.context.request.RequestAttributes;
  3. import org.springframework.web.context.request.RequestContextHolder;
  4. import org.springframework.web.context.request.ServletRequestAttributes;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import javax.servlet.http.HttpSession;
  8. import java.io.IOException;
  9. /**
  10. * @author ws
  11. * @title: Result
  12. * @description: 客户端工具类
  13. * @date 2021/2/5
  14. */
  15. public class ServletUtils {
  16. /**
  17. * 获取String参数
  18. */
  19. public static String getParameter(String name) {
  20. return getRequest().getParameter(name);
  21. }
  22. /**
  23. * 获取String参数
  24. */
  25. public static String getParameter(String name, String defaultValue) {
  26. return ConvertUtils.toStr(getRequest().getParameter(name), defaultValue);
  27. }
  28. /**
  29. * 获取Integer参数
  30. */
  31. public static Integer getParameterToInt(String name) {
  32. return ConvertUtils.toInt(getRequest().getParameter(name));
  33. }
  34. /**
  35. * 获取Integer参数
  36. */
  37. public static Integer getParameterToInt(String name, Integer defaultValue) {
  38. return ConvertUtils.toInt(getRequest().getParameter(name), defaultValue);
  39. }
  40. /**
  41. * 获取request
  42. */
  43. public static HttpServletRequest getRequest() {
  44. return getRequestAttributes().getRequest();
  45. }
  46. /**
  47. * 获取response
  48. */
  49. public static HttpServletResponse getResponse() {
  50. return getRequestAttributes().getResponse();
  51. }
  52. /**
  53. * 获取session
  54. */
  55. public static HttpSession getSession() {
  56. return getRequest().getSession();
  57. }
  58. public static ServletRequestAttributes getRequestAttributes() {
  59. RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
  60. return (ServletRequestAttributes) attributes;
  61. }
  62. /**
  63. * 将字符串渲染到客户端
  64. *
  65. * @param response 渲染对象
  66. * @param string 待渲染的字符串
  67. * @return null
  68. */
  69. public static String renderString(HttpServletResponse response, String string) {
  70. try {
  71. response.setContentType("application/json");
  72. response.setCharacterEncoding("utf-8");
  73. response.getWriter().print(string);
  74. } catch (IOException e) {
  75. e.printStackTrace();
  76. }
  77. return null;
  78. }
  79. /**
  80. * 是否是Ajax异步请求
  81. *
  82. * @param request
  83. */
  84. public static boolean isAjaxRequest(HttpServletRequest request) {
  85. String accept = request.getHeader("accept");
  86. if (accept != null && accept.indexOf("application/json") != -1) {
  87. return true;
  88. }
  89. String xRequestedWith = request.getHeader("X-Requested-With");
  90. if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) {
  91. return true;
  92. }
  93. String uri = request.getRequestURI();
  94. if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) {
  95. return true;
  96. }
  97. String ajax = request.getParameter("__ajax");
  98. if (StringUtils.inStringIgnoreCase(ajax, "json", "xml")) {
  99. return true;
  100. }
  101. return false;
  102. }
  103. }
  1. package com.destination.destinationquery.util.Security;
  2. import cn.hutool.core.lang.Assert;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.destination.destinationquery.util.StringUtils;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.http.server.reactive.ServerHttpRequest;
  8. import org.springframework.stereotype.Component;
  9. import javax.servlet.http.HttpServletRequest;
  10. import java.io.UnsupportedEncodingException;
  11. import java.net.URLDecoder;
  12. /**
  13. * 权限获取工具类
  14. *
  15. * @author ws
  16. */
  17. @Component
  18. public class SecurityUtils {
  19. private static final Logger log = LoggerFactory.getLogger(SecurityUtils.class);
  20. public static String urlDecode(String str)
  21. {
  22. try
  23. {
  24. return URLDecoder.decode(str,"UTF-8");
  25. }
  26. catch (UnsupportedEncodingException e)
  27. {
  28. return "";
  29. }
  30. }
  31. /**
  32. * 获取用户手机号
  33. */
  34. public static String getPhone_NO() {
  35. String customerNo = ServletUtils.getRequest().getHeader(SecurityConstants.Phone_NO);
  36. Assert.isFalse(StrUtil.isBlank(customerNo), () -> new BusinessException("手机号不能为空"));
  37. return urlDecode(customerNo);
  38. }
  39. /**
  40. * 获取用户权限
  41. */
  42. public static String getRole_Type() {
  43. String customerNo = ServletUtils.getRequest().getHeader(SecurityConstants.ROLE_TYPE);
  44. Assert.isFalse(StrUtil.isBlank(customerNo), () -> new BusinessException("权限不能为空"));
  45. return urlDecode(customerNo);
  46. }
  47. /**
  48. * 获取请求token
  49. */
  50. public static String getToken() {
  51. return getToken(ServletUtils.getRequest());
  52. }
  53. /**
  54. * 根据request获取请求token
  55. */
  56. public static String getToken(HttpServletRequest request) {
  57. String token = request.getHeader(SecurityConstants.TOKEN_AUTHENTICATION);
  58. return replaceTokenPrefix(token);
  59. }
  60. /**
  61. * 根据request获取请求token
  62. */
  63. public static String getToken(ServerHttpRequest request) {
  64. String token = request.getHeaders().getFirst(SecurityConstants.TOKEN_AUTHENTICATION);
  65. return replaceTokenPrefix(token);
  66. }
  67. /**
  68. * 替换token前缀
  69. */
  70. public static String replaceTokenPrefix(String token) {
  71. if (StringUtils.isNotEmpty(token) && token.startsWith(SecurityConstants.TOKEN_PREFIX)) {
  72. token = token.replace(SecurityConstants.TOKEN_PREFIX, "");
  73. }
  74. return token;
  75. }
  76. }
  1. import com.destination.destinationquery.util.StringUtils;
  2. import java.math.BigDecimal;
  3. import java.math.BigInteger;
  4. import java.nio.ByteBuffer;
  5. import java.nio.charset.Charset;
  6. import java.text.NumberFormat;
  7. import java.util.Set;
  8. /**
  9. * 类型转换器
  10. *
  11. * @author p&s
  12. */
  13. public class ConvertUtils {
  14. /**
  15. * 转换为字符串<br>
  16. * 如果给定的值为null,或者转换失败,返回默认值<br>
  17. * 转换失败不会报错
  18. *
  19. * @param value 被转换的值
  20. * @param defaultValue 转换错误时的默认值
  21. * @return 结果
  22. */
  23. public static String toStr(Object value, String defaultValue) {
  24. if (null == value) {
  25. return defaultValue;
  26. }
  27. if (value instanceof String) {
  28. return (String) value;
  29. }
  30. return value.toString();
  31. }
  32. /**
  33. * 转换为字符串<br>
  34. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
  35. * 转换失败不会报错
  36. *
  37. * @param value 被转换的值
  38. * @return 结果
  39. */
  40. public static String toStr(Object value) {
  41. return toStr(value, null);
  42. }
  43. /**
  44. * 转换为字符<br>
  45. * 如果给定的值为null,或者转换失败,返回默认值<br>
  46. * 转换失败不会报错
  47. *
  48. * @param value 被转换的值
  49. * @param defaultValue 转换错误时的默认值
  50. * @return 结果
  51. */
  52. public static Character toChar(Object value, Character defaultValue) {
  53. if (null == value) {
  54. return defaultValue;
  55. }
  56. if (value instanceof Character) {
  57. return (Character) value;
  58. }
  59. final String valueStr = toStr(value, null);
  60. return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0);
  61. }
  62. /**
  63. * 转换为字符<br>
  64. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
  65. * 转换失败不会报错
  66. *
  67. * @param value 被转换的值
  68. * @return 结果
  69. */
  70. public static Character toChar(Object value) {
  71. return toChar(value, null);
  72. }
  73. /**
  74. * 转换为byte<br>
  75. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
  76. * 转换失败不会报错
  77. *
  78. * @param value 被转换的值
  79. * @param defaultValue 转换错误时的默认值
  80. * @return 结果
  81. */
  82. public static Byte toByte(Object value, Byte defaultValue) {
  83. if (value == null) {
  84. return defaultValue;
  85. }
  86. if (value instanceof Byte) {
  87. return (Byte) value;
  88. }
  89. if (value instanceof Number) {
  90. return ((Number) value).byteValue();
  91. }
  92. final String valueStr = toStr(value, null);
  93. if (StringUtils.isEmpty(valueStr)) {
  94. return defaultValue;
  95. }
  96. try {
  97. return Byte.parseByte(valueStr);
  98. } catch (Exception e) {
  99. return defaultValue;
  100. }
  101. }
  102. /**
  103. * 转换为byte<br>
  104. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
  105. * 转换失败不会报错
  106. *
  107. * @param value 被转换的值
  108. * @return 结果
  109. */
  110. public static Byte toByte(Object value) {
  111. return toByte(value, null);
  112. }
  113. /**
  114. * 转换为Short<br>
  115. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
  116. * 转换失败不会报错
  117. *
  118. * @param value 被转换的值
  119. * @param defaultValue 转换错误时的默认值
  120. * @return 结果
  121. */
  122. public static Short toShort(Object value, Short defaultValue) {
  123. if (value == null) {
  124. return defaultValue;
  125. }
  126. if (value instanceof Short) {
  127. return (Short) value;
  128. }
  129. if (value instanceof Number) {
  130. return ((Number) value).shortValue();
  131. }
  132. final String valueStr = toStr(value, null);
  133. if (StringUtils.isEmpty(valueStr)) {
  134. return defaultValue;
  135. }
  136. try {
  137. return Short.parseShort(valueStr.trim());
  138. } catch (Exception e) {
  139. return defaultValue;
  140. }
  141. }
  142. /**
  143. * 转换为Short<br>
  144. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
  145. * 转换失败不会报错
  146. *
  147. * @param value 被转换的值
  148. * @return 结果
  149. */
  150. public static Short toShort(Object value) {
  151. return toShort(value, null);
  152. }
  153. /**
  154. * 转换为Number<br>
  155. * 如果给定的值为空,或者转换失败,返回默认值<br>
  156. * 转换失败不会报错
  157. *
  158. * @param value 被转换的值
  159. * @param defaultValue 转换错误时的默认值
  160. * @return 结果
  161. */
  162. public static Number toNumber(Object value, Number defaultValue) {
  163. if (value == null) {
  164. return defaultValue;
  165. }
  166. if (value instanceof Number) {
  167. return (Number) value;
  168. }
  169. final String valueStr = toStr(value, null);
  170. if (StringUtils.isEmpty(valueStr)) {
  171. return defaultValue;
  172. }
  173. try {
  174. return NumberFormat.getInstance().parse(valueStr);
  175. } catch (Exception e) {
  176. return defaultValue;
  177. }
  178. }
  179. /**
  180. * 转换为Number<br>
  181. * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
  182. * 转换失败不会报错
  183. *
  184. * @param value 被转换的值
  185. * @return 结果
  186. */
  187. public static Number toNumber(Object value) {
  188. return toNumber(value, null);
  189. }
  190. /**
  191. * 转换为int<br>
  192. * 如果给定的值为空,或者转换失败,返回默认值<br>
  193. * 转换失败不会报错
  194. *
  195. * @param value 被转换的值
  196. * @param defaultValue 转换错误时的默认值
  197. * @return 结果
  198. */
  199. public static Integer toInt(Object value, Integer defaultValue) {
  200. if (value == null) {
  201. return defaultValue;
  202. }
  203. if (value instanceof Integer) {
  204. return (Integer) value;
  205. }
  206. if (value instanceof Number) {
  207. return ((Number) value).intValue();
  208. }
  209. final String valueStr = toStr(value, null);
  210. if (StringUtils.isEmpty(valueStr)) {
  211. return defaultValue;
  212. }
  213. try {
  214. return Integer.parseInt(valueStr.trim());
  215. } catch (Exception e) {
  216. return defaultValue;
  217. }
  218. }
  219. /**
  220. * 转换为int<br>
  221. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
  222. * 转换失败不会报错
  223. *
  224. * @param value 被转换的值
  225. * @return 结果
  226. */
  227. public static Integer toInt(Object value) {
  228. return toInt(value, null);
  229. }
  230. /**
  231. * 转换为Integer数组<br>
  232. *
  233. * @param str 被转换的值
  234. * @return 结果
  235. */
  236. public static Integer[] toIntArray(String str) {
  237. return toIntArray(",", str);
  238. }
  239. /**
  240. * 转换为Long数组<br>
  241. *
  242. * @param str 被转换的值
  243. * @return 结果
  244. */
  245. public static Long[] toLongArray(String str) {
  246. return toLongArray(",", str);
  247. }
  248. /**
  249. * 转换为Integer数组<br>
  250. *
  251. * @param split 分隔符
  252. * @param split 被转换的值
  253. * @return 结果
  254. */
  255. public static Integer[] toIntArray(String split, String str) {
  256. if (StringUtils.isEmpty(str)) {
  257. return new Integer[]{};
  258. }
  259. String[] arr = str.split(split);
  260. final Integer[] ints = new Integer[arr.length];
  261. for (int i = 0; i < arr.length; i++) {
  262. final Integer v = toInt(arr[i], 0);
  263. ints[i] = v;
  264. }
  265. return ints;
  266. }
  267. /**
  268. * 转换为Long数组<br>
  269. *
  270. * @param split 是否忽略转换错误,忽略则给值null
  271. * @param str 被转换的值
  272. * @return 结果
  273. */
  274. public static Long[] toLongArray(String split, String str) {
  275. if (StringUtils.isEmpty(str)) {
  276. return new Long[]{};
  277. }
  278. String[] arr = str.split(split);
  279. final Long[] longs = new Long[arr.length];
  280. for (int i = 0; i < arr.length; i++) {
  281. final Long v = toLong(arr[i], null);
  282. longs[i] = v;
  283. }
  284. return longs;
  285. }
  286. /**
  287. * 转换为String数组<br>
  288. *
  289. * @param str 被转换的值
  290. * @return 结果
  291. */
  292. public static String[] toStrArray(String str) {
  293. return toStrArray(",", str);
  294. }
  295. /**
  296. * 转换为String数组<br>
  297. *
  298. * @param split 分隔符
  299. * @param split 被转换的值
  300. * @return 结果
  301. */
  302. public static String[] toStrArray(String split, String str) {
  303. return str.split(split);
  304. }
  305. /**
  306. * 转换为long<br>
  307. * 如果给定的值为空,或者转换失败,返回默认值<br>
  308. * 转换失败不会报错
  309. *
  310. * @param value 被转换的值
  311. * @param defaultValue 转换错误时的默认值
  312. * @return 结果
  313. */
  314. public static Long toLong(Object value, Long defaultValue) {
  315. if (value == null) {
  316. return defaultValue;
  317. }
  318. if (value instanceof Long) {
  319. return (Long) value;
  320. }
  321. if (value instanceof Number) {
  322. return ((Number) value).longValue();
  323. }
  324. final String valueStr = toStr(value, null);
  325. if (StringUtils.isEmpty(valueStr)) {
  326. return defaultValue;
  327. }
  328. try {
  329. // 支持科学计数法
  330. return new BigDecimal(valueStr.trim()).longValue();
  331. } catch (Exception e) {
  332. return defaultValue;
  333. }
  334. }
  335. /**
  336. * 转换为long<br>
  337. * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
  338. * 转换失败不会报错
  339. *
  340. * @param value 被转换的值
  341. * @return 结果
  342. */
  343. public static Long toLong(Object value) {
  344. return toLong(value, null);
  345. }
  346. /**
  347. * 转换为double<br>
  348. * 如果给定的值为空,或者转换失败,返回默认值<br>
  349. * 转换失败不会报错
  350. *
  351. * @param value 被转换的值
  352. * @param defaultValue 转换错误时的默认值
  353. * @return 结果
  354. */
  355. public static Double toDouble(Object value, Double defaultValue) {
  356. if (value == null) {
  357. return defaultValue;
  358. }
  359. if (value instanceof Double) {
  360. return (Double) value;
  361. }
  362. if (value instanceof Number) {
  363. return ((Number) value).doubleValue();
  364. }
  365. final String valueStr = toStr(value, null);
  366. if (StringUtils.isEmpty(valueStr)) {
  367. return defaultValue;
  368. }
  369. try {
  370. // 支持科学计数法
  371. return new BigDecimal(valueStr.trim()).doubleValue();
  372. } catch (Exception e) {
  373. return defaultValue;
  374. }
  375. }
  376. /**
  377. * 转换为double<br>
  378. * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
  379. * 转换失败不会报错
  380. *
  381. * @param value 被转换的值
  382. * @return 结果
  383. */
  384. public static Double toDouble(Object value) {
  385. return toDouble(value, null);
  386. }
  387. /**
  388. * 转换为Float<br>
  389. * 如果给定的值为空,或者转换失败,返回默认值<br>
  390. * 转换失败不会报错
  391. *
  392. * @param value 被转换的值
  393. * @param defaultValue 转换错误时的默认值
  394. * @return 结果
  395. */
  396. public static Float toFloat(Object value, Float defaultValue) {
  397. if (value == null) {
  398. return defaultValue;
  399. }
  400. if (value instanceof Float) {
  401. return (Float) value;
  402. }
  403. if (value instanceof Number) {
  404. return ((Number) value).floatValue();
  405. }
  406. final String valueStr = toStr(value, null);
  407. if (StringUtils.isEmpty(valueStr)) {
  408. return defaultValue;
  409. }
  410. try {
  411. return Float.parseFloat(valueStr.trim());
  412. } catch (Exception e) {
  413. return defaultValue;
  414. }
  415. }
  416. /**
  417. * 转换为Float<br>
  418. * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
  419. * 转换失败不会报错
  420. *
  421. * @param value 被转换的值
  422. * @return 结果
  423. */
  424. public static Float toFloat(Object value) {
  425. return toFloat(value, null);
  426. }
  427. /**
  428. * 转换为boolean<br>
  429. * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br>
  430. * 转换失败不会报错
  431. *
  432. * @param value 被转换的值
  433. * @param defaultValue 转换错误时的默认值
  434. * @return 结果
  435. */
  436. public static Boolean toBool(Object value, Boolean defaultValue) {
  437. if (value == null) {
  438. return defaultValue;
  439. }
  440. if (value instanceof Boolean) {
  441. return (Boolean) value;
  442. }
  443. String valueStr = toStr(value, null);
  444. if (StringUtils.isEmpty(valueStr)) {
  445. return defaultValue;
  446. }
  447. valueStr = valueStr.trim().toLowerCase();
  448. switch (valueStr) {
  449. case "true":
  450. return true;
  451. case "false":
  452. return false;
  453. case "yes":
  454. return true;
  455. case "ok":
  456. return true;
  457. case "no":
  458. return false;
  459. case "1":
  460. return true;
  461. case "0":
  462. return false;
  463. default:
  464. return defaultValue;
  465. }
  466. }
  467. /**
  468. * 转换为boolean<br>
  469. * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
  470. * 转换失败不会报错
  471. *
  472. * @param value 被转换的值
  473. * @return 结果
  474. */
  475. public static Boolean toBool(Object value) {
  476. return toBool(value, null);
  477. }
  478. /**
  479. * 转换为Enum对象<br>
  480. * 如果给定的值为空,或者转换失败,返回默认值<br>
  481. *
  482. * @param clazz Enum的Class
  483. * @param value 值
  484. * @param defaultValue 默认值
  485. * @return Enum
  486. */
  487. public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue) {
  488. if (value == null) {
  489. return defaultValue;
  490. }
  491. if (clazz.isAssignableFrom(value.getClass())) {
  492. @SuppressWarnings("unchecked")
  493. E myE = (E) value;
  494. return myE;
  495. }
  496. final String valueStr = toStr(value, null);
  497. if (StringUtils.isEmpty(valueStr)) {
  498. return defaultValue;
  499. }
  500. try {
  501. return Enum.valueOf(clazz, valueStr);
  502. } catch (Exception e) {
  503. return defaultValue;
  504. }
  505. }
  506. /**
  507. * 转换为Enum对象<br>
  508. * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
  509. *
  510. * @param clazz Enum的Class
  511. * @param value 值
  512. * @return Enum
  513. */
  514. public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value) {
  515. return toEnum(clazz, value, null);
  516. }
  517. /**
  518. * 转换为BigInteger<br>
  519. * 如果给定的值为空,或者转换失败,返回默认值<br>
  520. * 转换失败不会报错
  521. *
  522. * @param value 被转换的值
  523. * @param defaultValue 转换错误时的默认值
  524. * @return 结果
  525. */
  526. public static BigInteger toBigInteger(Object value, BigInteger defaultValue) {
  527. if (value == null) {
  528. return defaultValue;
  529. }
  530. if (value instanceof BigInteger) {
  531. return (BigInteger) value;
  532. }
  533. if (value instanceof Long) {
  534. return BigInteger.valueOf((Long) value);
  535. }
  536. final String valueStr = toStr(value, null);
  537. if (StringUtils.isEmpty(valueStr)) {
  538. return defaultValue;
  539. }
  540. try {
  541. return new BigInteger(valueStr);
  542. } catch (Exception e) {
  543. return defaultValue;
  544. }
  545. }
  546. /**
  547. * 转换为BigInteger<br>
  548. * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
  549. * 转换失败不会报错
  550. *
  551. * @param value 被转换的值
  552. * @return 结果
  553. */
  554. public static BigInteger toBigInteger(Object value) {
  555. return toBigInteger(value, null);
  556. }
  557. /**
  558. * 转换为BigDecimal<br>
  559. * 如果给定的值为空,或者转换失败,返回默认值<br>
  560. * 转换失败不会报错
  561. *
  562. * @param value 被转换的值
  563. * @param defaultValue 转换错误时的默认值
  564. * @return 结果
  565. */
  566. public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {
  567. if (value == null) {
  568. return defaultValue;
  569. }
  570. if (value instanceof BigDecimal) {
  571. return (BigDecimal) value;
  572. }
  573. if (value instanceof Long) {
  574. return new BigDecimal((Long) value);
  575. }
  576. if (value instanceof Double) {
  577. return new BigDecimal((Double) value);
  578. }
  579. if (value instanceof Integer) {
  580. return new BigDecimal((Integer) value);
  581. }
  582. final String valueStr = toStr(value, null);
  583. if (StringUtils.isEmpty(valueStr)) {
  584. return defaultValue;
  585. }
  586. try {
  587. return new BigDecimal(valueStr);
  588. } catch (Exception e) {
  589. return defaultValue;
  590. }
  591. }
  592. /**
  593. * 转换为BigDecimal<br>
  594. * 如果给定的值为空,或者转换失败,返回默认值<br>
  595. * 转换失败不会报错
  596. *
  597. * @param value 被转换的值
  598. * @return 结果
  599. */
  600. public static BigDecimal toBigDecimal(Object value) {
  601. return toBigDecimal(value, null);
  602. }
  603. /**
  604. * 将对象转为字符串<br>
  605. * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
  606. *
  607. * @param obj 对象
  608. * @return 字符串
  609. */
  610. public static String utf8Str(Object obj) {
  611. return str(obj, Charset.forName("UTF-8"));
  612. }
  613. /**
  614. * 将对象转为字符串<br>
  615. * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
  616. *
  617. * @param obj 对象
  618. * @param charsetName 字符集
  619. * @return 字符串
  620. */
  621. public static String str(Object obj, String charsetName) {
  622. return str(obj, Charset.forName(charsetName));
  623. }
  624. /**
  625. * 将对象转为字符串<br>
  626. * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
  627. *
  628. * @param obj 对象
  629. * @param charset 字符集
  630. * @return 字符串
  631. */
  632. public static String str(Object obj, Charset charset) {
  633. if (null == obj) {
  634. return null;
  635. }
  636. if (obj instanceof String) {
  637. return (String) obj;
  638. } else if (obj instanceof byte[] || obj instanceof Byte[]) {
  639. return str((Byte[]) obj, charset);
  640. } else if (obj instanceof ByteBuffer) {
  641. return str((ByteBuffer) obj, charset);
  642. }
  643. return obj.toString();
  644. }
  645. /**
  646. * 将byte数组转为字符串
  647. *
  648. * @param bytes byte数组
  649. * @param charset 字符集
  650. * @return 字符串
  651. */
  652. public static String str(byte[] bytes, String charset) {
  653. return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));
  654. }
  655. /**
  656. * 解码字节码
  657. *
  658. * @param data 字符串
  659. * @param charset 字符集,如果此字段为空,则解码的结果取决于平台
  660. * @return 解码后的字符串
  661. */
  662. public static String str(byte[] data, Charset charset) {
  663. if (data == null) {
  664. return null;
  665. }
  666. if (null == charset) {
  667. return new String(data);
  668. }
  669. return new String(data, charset);
  670. }
  671. /**
  672. * 将编码的byteBuffer数据转换为字符串
  673. *
  674. * @param data 数据
  675. * @param charset 字符集,如果为空使用当前系统字符集
  676. * @return 字符串
  677. */
  678. public static String str(ByteBuffer data, String charset) {
  679. if (data == null) {
  680. return null;
  681. }
  682. return str(data, Charset.forName(charset));
  683. }
  684. /**
  685. * 将编码的byteBuffer数据转换为字符串
  686. *
  687. * @param data 数据
  688. * @param charset 字符集,如果为空使用当前系统字符集
  689. * @return 字符串
  690. */
  691. public static String str(ByteBuffer data, Charset charset) {
  692. if (null == charset) {
  693. charset = Charset.defaultCharset();
  694. }
  695. return charset.decode(data).toString();
  696. }
  697. // ----------------------------------------------------------------------- 全角半角转换
  698. /**
  699. * 半角转全角
  700. *
  701. * @param input String.
  702. * @return 全角字符串.
  703. */
  704. public static String toSBC(String input) {
  705. return toSBC(input, null);
  706. }
  707. /**
  708. * 半角转全角
  709. *
  710. * @param input String
  711. * @param notConvertSet 不替换的字符集合
  712. * @return 全角字符串.
  713. */
  714. public static String toSBC(String input, Set<Character> notConvertSet) {
  715. char c[] = input.toCharArray();
  716. for (int i = 0; i < c.length; i++) {
  717. if (null != notConvertSet && notConvertSet.contains(c[i])) {
  718. // 跳过不替换的字符
  719. continue;
  720. }
  721. if (c[i] == ' ') {
  722. c[i] = '\u3000';
  723. } else if (c[i] < '\177') {
  724. c[i] = (char) (c[i] + 65248);
  725. }
  726. }
  727. return new String(c);
  728. }
  729. /**
  730. * 全角转半角
  731. *
  732. * @param input String.
  733. * @return 半角字符串
  734. */
  735. public static String toDBC(String input) {
  736. return toDBC(input, null);
  737. }
  738. /**
  739. * 替换全角为半角
  740. *
  741. * @param text 文本
  742. * @param notConvertSet 不替换的字符集合
  743. * @return 替换后的字符
  744. */
  745. public static String toDBC(String text, Set<Character> notConvertSet) {
  746. char c[] = text.toCharArray();
  747. for (int i = 0; i < c.length; i++) {
  748. if (null != notConvertSet && notConvertSet.contains(c[i])) {
  749. // 跳过不替换的字符
  750. continue;
  751. }
  752. if (c[i] == '\u3000') {
  753. c[i] = ' ';
  754. } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
  755. c[i] = (char) (c[i] - 65248);
  756. }
  757. }
  758. String returnString = new String(c);
  759. return returnString;
  760. }
  761. /**
  762. * 数字金额大写转换 先写个完整的然后将如零拾替换成零
  763. *
  764. * @param n 数字
  765. * @return 中文大写数字
  766. */
  767. public static String digitUppercase(double n) {
  768. String[] fraction = {"角", "分"};
  769. String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
  770. String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}};
  771. String head = n < 0 ? "负" : "";
  772. n = Math.abs(n);
  773. String s = "";
  774. for (int i = 0; i < fraction.length; i++) {
  775. s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
  776. }
  777. if (s.length() < 1) {
  778. s = "整";
  779. }
  780. int integerPart = (int) Math.floor(n);
  781. for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
  782. String p = "";
  783. for (int j = 0; j < unit[1].length && n > 0; j++) {
  784. p = digit[integerPart % 10] + unit[1][j] + p;
  785. integerPart = integerPart / 10;
  786. }
  787. s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
  788. }
  789. return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
  790. }
  791. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/309871
推荐阅读
相关标签
  

闽ICP备14008679号