Java获取IP和端口(Linux)

本文详细介绍了如何通过HttpServletRequest对象获取HTTP请求的各种信息,包括客户端的URL、URI、查询字符串、主机名、IP地址、端口号,以及WEB服务器的相关信息。同时,也阐述了如何获取请求头和请求参数,如单一头值、所有头值、参数名及参数列表。这些内容对于理解和处理HTTP请求在Web开发中至关重要。
摘要由CSDN通过智能技术生成

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();

获得客户机信息:
getRequestURL() 返回客户端发出请求时的完整URL。
getRequestURI() 返回请求行中的参数部分。
getQueryString () 方法返回请求行中的参数部分(参数名+值)
getRemoteHost() 返回发出请求的客户机的完整主机名。
getRemoteAddr() 返回发出请求的客户机的IP地址。
getPathInfo() 返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以"/"开头。
getRemotePort() 返回客户机所使用的网络端口号。
getLocalAddr() 返回WEB服务器的IP地址。
getLocalName() 返回WEB服务器的主机名。
getServerPort() 返回WEB服务器的端口号。

获得客户机请求头
getHeader(string name) 以 String 的形式返回指定请求头的值。如果该请求不包含指定名称的头,则此方法返回 null。如果有多个具有相同名称的头,则此方法返回请求中的第一个头。头名称是不区分大小写的。可以将此方法与任何请求头一起使用
getHeaders(String name) 以 String 对象的 Enumeration 的形式返回指定请求头的所有值
getHeaderNames() 返回此请求包含的所有头名称的枚举。如果该请求没有头,则此方法返回一个空枚举

获得客户机请求参数
getParameter(String name) 根据name获取请求参数(常用)
getParameterValues(String name) 根据name获取请求参数列表(常用)
getParameterMap() 返回的是一个Map类型的值,该返回值记录着前端(如jsp页面)所提交请求中的请求参数和请求参数值的映射关系。(编写框架时常用)

Java中唤起FinalShell并登录Linux服务器,可以通过编写Java代码实现自动化操作。这通常涉及到使用SSH客户端库,比如JCraft的JSch库,来远程连接和操作Linux服务器。以下是一个基本的示例流程: 1. 引入JSch库:首先需要在项目中引入JSch库,这可以通过Maven或者直接下载jar包添加到项目中。 2. 创建SSH连接:使用JSch提供的API创建一个Session对象,该对象代表与服务器之间的连接。 3. 配置Session:通过Session对象配置主机名、端口号、用户名和密码。 4. 打开连接并进行登录:打开Session连接,并且调用connect方法尝试连接到服务器。如果连接成功,则可以通过Session对象执行命令或者打开一个Channel进行进一步的操作。 下面是一个简单的代码示例,展示如何使用JSch连接到Linux服务器并尝试登录: ```java import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class SSHLogin { public static void main(String[] args) { try { // 创建JSch对象 JSch jsch = new JSch(); // 设置Session Session session = jsch.getSession("username", "hostname", 22); // username为用户名, hostname为服务器IP, 22为SSH端口 session.setPassword("password"); // 设置密码 // 设置StrictHostKeyChecking策略为no,表示不检查主机密钥,出于安全考虑,实际应用中不推荐这么做。 session.setConfig("StrictHostKeyChecking", "no"); // 打开Session连接 session.connect(); // 通过session打开Channel com.jcraft.jsch.Channel channel = session.openChannel("shell"); channel.connect(); // 使用Channel执行命令,例如执行ls命令 String cmd = "ls"; com.jcraft.jsch.ChannelExec channelExec = (com.jcraft.jsch.ChannelExec) channel; channelExec.setCommand(cmd); channelExec.connect(); // 获取命令执行结果的输入流,并读取内容 java.io.InputStream inputStream = channelExec.getInputStream(); java.util.Scanner scanner = new java.util.Scanner(inputStream); while (scanner.hasNextLine()) { String line = scanner.nextLine(); System.out.println(line); } // 关闭连接 channel.disconnect(); session.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:在实际使用中,应该根据实际情况设置合适的Session配置,比如密钥认证、端口号、会话超时等。同时,出于安全考虑,不建议在代码中硬编码用户名和密码,可以通过配置文件或环境变量等方式管理敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值