• java中获取服务器的IP和端口


    struts2 获取request

    HttpServletRequest requet=ServletActionContext.getRequest();

    requet.getScheme()+"://"+requet.getServerName()+":"+requet.getServerPort()

    (例如)结果为:http://localhost:8080/

    request.getHeader("User-Agent");    //就是取得客户端的系统版本     
    request.getRemoteAddr();    //取得客户端的IP     
    request.getRemoteHost()     //取得客户端的主机名     
    request.getRemotePort();    //取得客户端的端口     
    request.getRemoteUser();    //取得客户端的用户     
    request.getLocalAddr();    //取得服务器IP     
    request.getLocalPort();    //取得服务器端口

    1、JSP中获得当前应用的相对路径和绝对路径
      根目录所对应的绝对路径:request.getRequestURI()
      文件的绝对路径  :application.getRealPath(request.getRequestURI());
      当前web应用的绝对路径 :application.getRealPath("/");
      取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()

    2 Servlet中获得当前应用的相对路径和绝对路径
      根目录所对应的绝对路径:request.getServletPath();
      文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())   
      当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
      (ServletContext对象获得几种方式:
      javax.servlet.http.HttpSession.getServletContext()
      javax.servlet.jsp.PageContext.getServletContext()
      javax.servlet.ServletConfig.getServletContext()
      )

    3.Java类中获得绝对路径
      根据java.io.File的Doc文挡,可知: 默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。
     
    扩展:
    上面的获取IP方法,只能获取到127.0.0.1,无语
    在window下使用
    InetAddress.getLocalHost().getHostAddress()

    这种方法在linux却只能取到127.0.0.1这个让人无奈的地址。。。这简直是让人不能忍受的啊。。。这种地址不用获取,我们谁不知道。。。 
    在网上搜索了很多,发现说这个问题的并不多,所以,我把找到的一段代码分享给大家。。。当然这段代码需要jdk1.5以上版本 
    Java代码 
    Enumeration<NetworkInterface> netInterfaces = null;   
    try {   
        netInterfaces = NetworkInterface.getNetworkInterfaces();   
        while (netInterfaces.hasMoreElements()) {   
            NetworkInterface ni = netInterfaces.nextElement();   
            System.out.println("DisplayName:" + ni.getDisplayName());   
            System.out.println("Name:" + ni.getName());   
            Enumeration<InetAddress> ips = ni.getInetAddresses();   
            while (ips.hasMoreElements()) {   
                System.out.println("IP:"  
                + ips.nextElement().getHostAddress());   
            }   
        }   
    } catch (Exception e) {   
        e.printStackTrace();   
    }  

    Enumeration<NetworkInterface> netInterfaces = null;
    try {
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                    NetworkInterface ni = netInterfaces.nextElement();
                    System.out.println("DisplayName:" + ni.getDisplayName());
                    System.out.println("Name:" + ni.getName());
                    Enumeration<InetAddress> ips = ni.getInetAddresses();
                    while (ips.hasMoreElements()) {
                            System.out.println("IP:"
                            + ips.nextElement().getHostAddress());
                    }
            }
    } catch (Exception e) {
            e.printStackTrace();
    }
  • 相关阅读:
    Java多线程详解
    自动化构建工具Maven
    解决 安装cocoapods失败,提示 requires Ruby version >=2.2.2
    安装Cocoapods时候ERROR: While executing gem ... (Errno::EPERM)
    iOS可执行文件瘦身方法
    ios webview自适应实际内容高度4种方法
    iOS8 tableview separatorInset cell分割线左对齐,ios7的方法失效了
    Reveal1.5破解,iOS_UI调试利器Reveal最新版本破解方法
    Xcode安装插件,错误选择了Skip Bundles,重新出现Load Bundles方法
    10分钟搞定支付宝支付 的 各种填坑
  • 原文地址:https://www.cnblogs.com/learnapi/p/8567870.html
Copyright © 2020-2023  润新知