码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • WebUtils


    1. import javax.servlet.http.HttpServletRequest;
    2. import javax.servlet.http.HttpServletResponse;
    3. import java.io.IOException;
    4. public class WebUtils {
    5. /**
    6. * 将字符串渲染到客户端
    7. *
    8. * @param response 渲染对象
    9. * @param string 待渲染的字符串
    10. */
    11. public static void renderString(HttpServletResponse response, String string) {
    12. try {
    13. response.setStatus(200);
    14. response.setContentType("application/json");
    15. response.setCharacterEncoding("utf-8");
    16. response.getWriter().print(string);
    17. } catch (IOException e) {
    18. e.printStackTrace();
    19. }
    20. }
    21. /**
    22. * 获取IP地址
    23. *
    24. * @param request
    25. * @return
    26. */
    27. public static String getIpAddr(HttpServletRequest request) {
    28. String ip = request.getHeader("x-forwarded-for");
    29. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    30. ip = request.getHeader("X-Real-IP");
    31. }
    32. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    33. ip = request.getHeader("Proxy-Client-IP");
    34. }
    35. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    36. ip = request.getHeader("WL-Proxy-Client-IP");
    37. }
    38. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    39. ip = request.getRemoteAddr();
    40. }
    41. if ("0:0:0:0:0:0:0:1".equals(ip)) {
    42. ip = "127.0.0.1";
    43. }
    44. if (ip.split(",").length > 1) {
    45. ip = ip.split(",")[0];
    46. }
    47. return ip;
    48. }
    49. }

  • 相关阅读:
    西山科技将于12月6日上会:年收入2亿元,耗材收入成为新增长点
    python读取execel表格(xls等格式)转换为csv,并且加载到hive表中
    使用VSCode SSH实现公网远程连接本地服务器开发的详细教程
    【MySQL】MySQL索引的定义、分类、Explain、索引失效和优化
    Python环境搭建之OpenCV
    C- 一个程序引发的问题
    vue通过span-method合并列之后,合并列显示在中间位置,根据鼠标滑动跟随展示
    JavaSE进阶21天---第十八天---JavaSE(线程池、默认线程池、指定上限的线程池、自定义线程池、四种任务策略​)
    深入理解Java虚拟机读书笔记--5 JVM工具
    【Vue3】 第十六部分 transition
  • 原文地址:https://blog.csdn.net/asddasddeedd/article/details/128057147
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号