起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20273|回复: 16

[处理中3] 关于拦截器拿服务器名和ip

[复制链接]

10

主题

24

帖子

47

积分

新手上路

Rank: 1

积分
47
QQ
发表于 2018-12-18 16:12:03 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:

我想在我自己定义的一个拦截器类中获取当前访问的服务器名字和ip能怎么获取,求大佬



91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-12-18 17:35:20 | 显示全部楼层
这个就是标准的,可以到网上查找
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

10

主题

24

帖子

47

积分

新手上路

Rank: 1

积分
47
QQ
 楼主| 发表于 2018-12-19 09:25:19 | 显示全部楼层
jishuang 发表于 2018-12-18 17:35
这个就是标准的,可以到网上查找

网上找的不是我想要的,具体怎么拿呢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-12-19 11:27:48 | 显示全部楼层
具体需要要做什么?怎么获取tomcat服务器的地址就是标准的,平台不会控制
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

10

主题

24

帖子

47

积分

新手上路

Rank: 1

积分
47
QQ
 楼主| 发表于 2018-12-19 13:51:06 | 显示全部楼层
jishuang 发表于 2018-12-19 11:27
具体需要要做什么?怎么获取tomcat服务器的地址就是标准的,平台不会控制

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Iterator;

import javax.lang.model.type.IntersectionType;

import com.justep.model.Action;
import com.justep.system.action.Interceptor;
import com.justep.system.context.ActionContext;
import com.justep.system.context.ContextHelper;
import com.justep.system.data.KSQL;
import com.justep.system.data.Row;
import com.justep.system.data.SQL;
import com.justep.system.data.Table;
import com.justep.system.interceptor.LogAfter;
import com.justep.system.interceptor.LogBefore;
import com.justep.util.JustepConfig;
import com.justep.util.Utils;

public class LogAfter2 implements Interceptor {
    public void execute() {
           
        try {
                System.out.println("进入到日志修改器+LogAfter2");
            // 获取当作之前的action
            ActionContext context = ContextHelper.getActionContext();
            Action action = context.getAction();
           /* String serverIp= getServerIp();*/
            String serverName= java.net.InetAddress.getLocalHost().getHostName();
            String serverIp=java.net.InetAddress.getLocalHost().getHostAddress();

            System.out.println("服务器ip是"+serverIp+"     服务器名字:"+serverName);
            System.out.println(JustepConfig.getHome());
            
         /* //通过用户名查询用户id
                        String personSql="select P.* from SA_OPPerson P where scode='system2'";
                       
                        Table table=SQL.select(personSql, null, "/system/data", null);
                       
               
                        Iterator<Row> iterator = table.iterator();
                        Row row1 = null;
                        String sid=null;
                        while (iterator.hasNext()){
                                row1 = iterator.next();
                                sid=row1.getString("SID");
                                System.out.println("sid的值:"+sid);
                               
                        }
            */
            //判断是否具有启用日志的标识
            if(action.isLogEnabled()){
                    System.out.println("具有启用日志的标识");
                    String id=(String)context.get(LogBefore.ACTION_LOG_SID);
                    System.out.println("id的值:"+id);
                    if(Utils.isNotEmptyString(id)){
                            /* String sql = "update SA_Log log set log.sESField01 = '自己的日志数据' where log='" + id + "'";
                     KSQL.executeUpdate(sql, null, "/system/data", null);*/
                   
                    }
            }
            // 判断action是否有启用日志的标识
           /* if (action.isLogEnabled()) {
                // 获取平台的默认生成的日志记录的id
                String id = (String) context.get(LogBefore.ACTION_LOG_SID);
                if (Utils.isNotEmptyString(id)) {
                    // 通过平台的日志id修改这条记录中扩展自己的值,如果是自己的表,可以写自己对应的insert语句等
                    String sql = "update SA_Log log set log.sESField01 = '自己的日志数据' where log='" + id + "'";
                    KSQL.executeUpdate(sql, null, "/system/data", null);
     
                }
            }
        }*/
               
                } catch (Exception e) {
                        e.printStackTrace();
                }
      
      
      
        
      
}
   
    /**
     * 获取服务器IP地址
     * @return
     */
    @SuppressWarnings("unchecked")
    public static String  getServerIp(){
        String SERVER_IP = null;
        try {
            Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
            InetAddress ip = null;
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
                ip = (InetAddress) ni.getInetAddresses().nextElement();
                SERVER_IP = ip.getHostAddress();
                if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
                        && ip.getHostAddress().indexOf(":") == -1) {
                    SERVER_IP = ip.getHostAddress();
                    break;
                } else {
                    ip = null;
                }
            }
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
   
        return SERVER_IP;
    }
}

//这是我定义的一个拦截器,一般拿服务器ip和名字需要request对象的吧,reques对象怎么拿呢
我写的那两个应该获取的是本机ip和名字
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-12-19 16:15:44 | 显示全部楼层
具体做什么要那服务器的IP和名字?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

10

主题

24

帖子

47

积分

新手上路

Rank: 1

积分
47
QQ
 楼主| 发表于 2018-12-19 17:17:58 | 显示全部楼层
jishuang 发表于 2018-12-19 16:15
具体做什么要那服务器的IP和名字?

插入到数据库,需求是这样的啊,能不能先拿到request对象,通过request对象获取呢,但是我不知道怎么获取request对象
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-12-19 17:35:11 | 显示全部楼层
把完整的需求详细的描述一下啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

10

主题

24

帖子

47

积分

新手上路

Rank: 1

积分
47
QQ
 楼主| 发表于 2018-12-20 08:55:45 | 显示全部楼层
jishuang 发表于 2018-12-19 17:35
把完整的需求详细的描述一下啊

就是修改一下生成日志的功能,通过自定义拦截器在数据库表sa_log里面增加服务器ip,服务器名字
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-12-20 09:06:40 | 显示全部楼层
http://docs.wex5.com/bex5-server-question-list-10028/,那你获取的是客户端登录的IP不是服务器的IP啊
登录的action中就有获取IP的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-4-20 12:13 , Processed in 0.060524 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表