使用servlet获得客户端与服务器的信息

版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/f2764052703/article/details/90027869

使用从客户端传过来的HttpServletRequest request获得客户端与服务器的相关信息。

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.Principal;
import java.util.Locale;

public class haunJingServlet extends HttpServlet {

//    返回客户端浏览器接受的文件类型
    private String getAccept(String accept){
        StringBuffer buffer = new StringBuffer();
        if(accept.contains("image/gif")){
            buffer.append("Gif文件,");
        }

        if(accept.contains("image/x-xbitmap")){
            buffer.append("BMP文件,");
        }

        if(accept.contains("iamge/jpeg")){
            buffer.append("JPG文件,");
        }

        if(accept.contains("application/vnd.ms-excle")){
            buffer.append("Excle文件,");
        }

        if(accept.contains("application/vnd.ms-powerpoint")){
            buffer.append("PPT文件,");
        }

        if(accept.contains("application/msword")){
            buffer.append("Word文件,");
        }

        return buffer.toString().replaceAll(",$","");
    }


//    返回客户端语言环境
    private String getLocale(Locale locale){
        if(Locale.SIMPLIFIED_CHINESE.equals(locale)){
            return "简体中文";
        }

        if(Locale.TRADITIONAL_CHINESE.equals(locale)){
            return "繁体中文";
        }

        if(Locale.ENGLISH.equals(locale)){
            return "英文";
        }

        if(Locale.JAPANESE.equals(locale)){
            return "日文";
        }

        return "位置语言环境";
    }



//    获得客户端浏览器信息
    private String getNavigator(String userAgent){
        if(userAgent.indexOf("TencentTraveler")>0){
            return "腾讯浏览器";
        }
        if(userAgent.indexOf("Maxthon")>0){
            return "Mathon浏览器";
        }
        if(userAgent.indexOf("MyIE2")>0){
            return "MyIE2浏览器";
        }
        if(userAgent.indexOf("Firefox")>0){
            return "Firefox浏览器";
        }
        if(userAgent.indexOf("MSIE")>0){
            return "IE浏览器";
        }
        return "未知浏览器信息";
    }



//    获得客户端操作系统信息
    private String getOS(String userAgent){
        if(userAgent.indexOf("Windows NT 5.1") > 0 ){
            return "Windows xp";
        }

        if(userAgent.indexOf("Windows 98") > 0){
            return "Windows 98";
        }

        if(userAgent.indexOf("Windows 5.0") > 0){
            return "Windows 2000";
        }

        if(userAgent.indexOf("Linux") > 0){
            return "Linux";
        }

        if(userAgent.indexOf("Unix") > 0 ){
            return "Unix";
        }

        return "未知操作系统";
    }


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //        设置请求和响应的编码方式
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html");


        String authType = request.getAuthType();

//        获取本地IP
        String localAddr = request.getLocalAddr();

//        获取本地名称,即服务器名称
        String localName = request.getLocalName();

//        获取本地端口号
        int localPort = request.getLocalPort();

//        获取用户的语言环境
        Locale locale = request.getLocale();

//        获取context路径
        String contextPath = request.getContextPath();

//        获取请求方法,即为GET或者POST
        String method = request.getMethod();

        String pathInfo = request.getPathInfo();

        String pathTranslated = request.getPathTranslated();

//        协议,这里是HTTP协议
        String protocol = request.getProtocol();

//        查询字符串,即?后面的字符串
        String queryString = request.getQueryString();

//        远程IP,即客户端IP
        String remoteAddr = request.getRemoteAddr();

//        远程端口,即客户端端口
        int port = request.getRemotePort();

//        远程用户
        String remoteUser = request.getRemoteUser();

//        客户端Session的ID
        String requestedSessionId = request.getRequestedSessionId();

//        用户请求的URL
        String requestURL = request.getRequestURI();

//        协议头,这里为HTTP
        String scheme = request.getScheme();

//        服务器名称
        String serverName = request.getServerName();

//        服务器端口
        int serverPort = request.getServerPort();

//        servlet路径
        String servletPath = request.getServletPath();

//        浏览器支持的格式
        Principal userPrincipal = request.getUserPrincipal();

//        从哪个页面单击链接到了本页
        String accept = request.getHeader("accept");

//        userAgent信息,包括操作系统类型及版本号、浏览器类型及版本号
        String referer = request.getHeader("regerer");

        String userAgent = request.getHeader("user-agent");

        String serverInfo = this.getServletContext().getServerInfo();

        PrintWriter out = response.getWriter();
        out.println("您的IP为:"+remoteAddr+";您使用"+getOS(userAgent)+
                    "操作系统"+getNavigator(userAgent)+"。您使用:"+getLocale(locale)+"</br>");

        out.println("服务器IP为:"+localAddr+";服务器使用"+serverPort+"端口,您的浏览器使用了"+port+"端口访问本网页"+
                    "服务器软件为:"+serverInfo+"。服务器名称为:"+localName+"</br>");

        out.println("您的浏览器接受:"+getAccept(accept)+"。</br>");

        out.println("您从"+referer+"访问到该页面");

        out.println("您使用的协议是:"+protocol+"URL协议头:"+scheme+"服务器名称"+serverName+"您访问的URL为:"+requestURL);

        out.println("该servlet的路径为:"+servletPath+"该servlet类名为:"+this.getClass().getName()+"</br>");

        out.println("本应用程序在硬盘中的路径为:"+this.getServletContext()+"网络相对路径为:"+ contextPath+"</br>");

        out.flush();
        out.close();
    }
}

猜你喜欢

转载自blog.csdn.net/f2764052703/article/details/90027869
今日推荐