最近做一个小项目,需要在本地电脑上不断调试数据接口,但是由于用的是路由器上网,所以公网IP是不断变化的,这就很麻烦了,所以写一个小程序,每次返回访问者IP,没有技术难度,直接百度的哈哈,参考文章和源码链接见文末。
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.abc.com/的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 经过
request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。
用户认证接口:根据客户端IP和port,进行IP反查和端口范围确认,如符合则用户认证通过。 当前使用的是Nginx负载均衡,从客户端到Nginx端 ip和port都对,从Nginx到应有服务器上-port端口变成很奇怪的端口号。真是遇到的问题,登录页的ip和port在登录验证没有问题,但在登录完成后跳转的时候,端口号发生了变化。跟nginx服务器的监听端口相同了。(注:除了部署的Nginx服务器,应该还有一个前端的nginx,这是我没有接触到的部分。) 疑问:Nginx往应有服务器上 是如何 传递 客户端IP和port 参数的呢? 请看 Nginx proxy_set_header
自动刷新不仅可以实现一段时间之后自动跳转到另一个页面,还可以实现一段时间之后自动刷新本页面。Servlet中通过HttpServletResponse对象设置Header属性实现自动刷新例如:
在 Java Web 程序中,Servlet 主要负责接受用户请求 HttpServletRequest,在 doget (),doPost ()中做相应的处理,并将回应 HttpServletResponse反馈给用户。
58、线程的基本概念、线程的基本状态以及状态之间的关系 线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。Java中的线程有四种状态分别是:运行、就绪、挂起、结束。 59、JSP的常用指令<%@page language=”java” contenType=”text/html;charset=gb2312” session=”true” buffer=”64kb” autoFlush=”true” isThreadSafe=”true” info=”text” errorPage=”error.jsp” isErrorPage=”true” isELIgnored=”true” pageEncoding=”gb2312” import=”java.sql.”%>isErrorPage(是否能使用Exception对象),isELIgnored(是否忽略表达式) <%@include file=”filename”%><%@taglib prefix=”c”uri=”http://……”%> 60、什么情况下调用doGet()和doPost()? Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。 61、servlet的生命周期web容器加载servlet,生命周期开始。 通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do**()方法。结束服务,web容器调用servlet的destroy()方法。 62、如何现实servlet的单线程模式 继承SingleThreadModel接口(标志性接口)。 63、页面间对象传递的方法 request,session,application,cookie等 64、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。 65、四种会话跟踪技术 cookie,url重写,session,隐藏域hidden 65,jsp的四种范围 page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面; request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系); session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求; application是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域 66、Request对象的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值 getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度 getHeader(String name):获得HTTP协议定义的文件头信息 getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有name指定的参数值 getParameterNames():获得客户端传送给
最近的技术调整,需要获取Nginx端请求方式是http还是https。我们当前的架构属于典型的互联网架构,Nginx+Tomcat+Mysql,启用了反向代理。当前并没有启用全站https,因此客户端发出的请求基于模块的方式使用http或者https协议。关于捕获这个请求的协议,我们需要使用到Nginx ngx_http_proxy_module这个模块中的proxy_set_header指令来进行配置。本文描述通过这个命令来实现捕获请求协议。
在web项目中导入tomcat,点击 idea 右上角的 add configuration
servlet的生命周期是初始化(init)、服务(service)、销毁(destroy)
a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。
JSP 是 Java Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp。
1、Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息。 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的 字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象 即可。如下: String textContent=request.getParameter("boy") byte b[]=t
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
犹豫JSP使用Java作为脚本语言,所以JSP具有强大的对象处理能力,并且可以动态创建Web页面内容。但在使用一个对象前,Java语法需要先实例化这个对象,,这其实是一件比较麻烦的事情。为了简化开发,JSP提供了一些内置对象,用来实现JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可。
说明:如果指定的参数不存在,将返回null;如果指定了参数名,但未指定参数值,将返回空的字符串”。
1.request.getProtocol(); 获取客户向服务器提交信息所使用的通信协议,比如:http/1.1
1、1xx(临时响应) 2、2xx(成功) 3、3xx(重定向):表示要完成请求需要进一步操作 4、4xx(错误):表示请求可能出错,妨碍了服务器的处理 5、5xx(服务器错误):表示服务器在尝试处理请求时发生内部错误
jsp编译后放的目录:工作空间\.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\myWeb01\org\apache\jsp
JAVA程序员笔试题(一) 一、选择题: 1、类的成员变量要求仅仅能够被同一package下的类访问,应该使用哪个修辞词 A. Protected、B. Public、C. Private、D. 不需要任何修辞词 2、下面那个是Runable接口的方法? A. Run、B. Start、C. Yield、D. stop 3、下面列出的那个是java的保留字? A. If、B. Goto、C. While、D. Case、E. Then 4、下列哪些说法是正确的? A. 在collection类树上,最顶层的
软件使用方式上两种划分 C/S:Client/Server PC客户端、服务器架构 特点:
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。 异常处理
JSP全名是JAVA Server Pages,根本上是一个简化的Servlet设计。在传统的网页HTML文件中插入Java程序段Scriptlet和JSP标记(tag),从而形成JSP文件,后缀名为*.jsp。
输入标题 小海哥的封面越骚,内容越有味的更新,马上接近尾声了,还有一个数据库更新,外加jvm深度解析,hashMap源码必读,最后放几篇大厂的 面试题,感谢大家这么长时间支持,小海最近可以收到好多粉丝的留言,有说喜欢的,也有说小海不好听的话的,但是我感觉,只要有一个粉丝从中受益,那更新就有必要,我就需要坚持下去,内容节选javaCodeGeeker译文以及来自粉丝的贡献,可看原文阅读 骚红面试系列合集 面试高峰期,如何应对面试官的jvm刁难,特写一篇jvm面经(第一部) Java面试Lin
一、用自己的语言描述get、post、Accept、Referer、User-Agent、host、cookie、X_Forwarded_for、Location各请求头的含义 1. GET http请求方法,从浏览器获取一个资源 2. POST 提交数据、账号密码等,加密传输 3. Accept 支持的语言程序、接收的文件类型等等.... 4. Referer 起过渡作用,从一个页面转到另一个页面 5. User-Agent 显示浏览器的指纹信息 6. host 主机 7. cookie 记录并保存你去过
Apache HTTP Server Project、Nginx都是开源的HTTP服务器软件。
记录一下自己复习到的知识点,以后看起来也方便。 指令 JSP中三个指令,page,include,taglib page 用于定义页面相关的信息,比如下面的代码: <%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%> language定义了页面的使用语言; import引用页面中使用的工具类; contentType定义页面的编码格式; p
随着互联网的飞速发展,当今网络安全问题日趋严重。比如DDoS攻击造成服务器宕机、WAF渗透引发的数据泄露以及黑产中应用猖獗的爬虫。而想针对这些网络攻击进行防护,其投入资金成本,人员成本都是巨大的,同时新的的0day漏洞也在不断出现。
1.JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览
反向代理的核心是不想将我们内部的服务直接暴露给客户端。 Nginx可以作为我们反向代理服务器使用,具体怎么操作呢? 其实nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。
说来也惭愧,菜鸟小白已经干了三年安全产品的测试,但是对于渗透测试都不曾好好了解,一直停留在基础功能测试和自动化测试的摸索上。正好我们组内在组织渗透测试的全套课程学习,将会从最基础的内容开始学起,学习的内容菜鸟小白也会整理出来,一起分享。
JSP(Java Server Page)虽然作为一门服务端的语言,但它并没有创新新的语言标准。有些人一接触jsp之后发现易学易懂。实际上,jsp的内部原理仍然是基于Servlet,它是Servlet的补充,而并不是要取代Servlet。本文对JSP的一些概念及基础内容进行了不详尽的总结,希望感兴趣的博友凑合着看~
JSP页面中使用page指令只能为contentType指定一个值,不允许两次使用Page指令传递给contentType属性。
http://blog.csdn.net/shimiso/article/details/8816558
Apache 其实是 Apache HTTP Server Project,和 Nginx 一样都是开源的 HTTP 服务器 软件。
本文讲述了Java的九大内置对象,包括out、request、response、session、application、pageContext、config、exception以及page。这些对象在Java Web开发中经常用于处理用户请求、响应结果、保存数据、跳转页面等操作。
六、Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122、说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 【基础】 答:Web 容器加载Servlet
HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
HTTP 协议(Hypertext Transfer Protocol, 超文本传输协议),是一个客户端请求和响应的标准协 议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。用户输入地址和端口号之后就可 以从服务器上取得所需要的网页信息。
Jsp 中的注释(三点) 合理、详细的注释有利于代码后期的维护和阅读 在JSP文件的编写过程中,共有三种注释方法:
答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。与cgi 的区别在于servlet 处于服务器进程中,它通过多线程方式运行其service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
1、通过Springboot程序可以发现,Springboot中控制器的形式和Springmvc中是一样的,因此在程序中使用jsp的内置对象也可以按照与Springmvc同样的方式进行。
nginx 作为世界顶级轻量WEB服务器。越来越受到网站开发者的喜欢了。国内大的网站 也都纷纷采用nginx作为生产环境。
Nginx proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义: proxy_set_header Host $proxy_host; proxy_set_header Connection close; 如果启用缓存,来自之前请求的头字段“If-Modified-Since”, “If-Unmodified-Since”, “If-None-
访问:http://localhost:8080/01_jsp/cookie/responseaddCookie.jsp 跳转到 http://localhost:8080/01_jsp/cookie/result.jsp
我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。
领取专属 10元无门槛券
手把手带您无忧上云