服务器端

使用session防止重复提交

亡梦爱人 提交于 2019-12-18 13:28:38
一、表单重复提交的常见应用场景 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>Form表单</title> </head> <body> <form action="${pageContext.request.contextPath}/servlet/DoFormServlet" method="post"> 用户名:<input type="text" name="username"> <input type="submit" value="提交" id="submit"> </form> </body> </html> form表单提交到DoFormServlet进行处理 package xdp.gacl.session; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

Cookie与Session

人走茶凉 提交于 2019-12-18 12:37:25
cookie机制采用的是在客户端保持状态的方案,session机制采用的是在服务器端保持状态的方案。 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制 来达到保存标识的目的,但实际上它还有其他选择。 cookie机制 实现原理: 服务器端发送的响应报文内有一个叫做Set-Cookie的首部字段信息===》通知客户端保存Cookie====》下次客户端再往该服务器发送请求时=====》客户端会自动在请求报文中加入Cookie值后发送出去====》服务器端发现客户端发送过来的Cookie===》服务器端会检查是从哪一个客户端发来连接请求=====》服务器端对比服务器上的记录=====》最后得到之前的状态信息 P3P协议 Cookie 是一个比较容易泄露用户隐私和危险的东西。 有没有办法保护个人用户隐私呢? 那就是 P3P协议 正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示 ( “Set-Cookie”域 ) 浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。 而cookie的使用 是由浏览器按照一定的原则在后台自动发送给服务器的:浏览器检查所有存储的cookie

TCP,IP,HTTP,SOCKET区别和联系

 ̄綄美尐妖づ 提交于 2019-12-18 04:31:48
网络由下往上分为 : 对应 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- TCP协议 会话层-- 表示层和 应用层-- HTTP协议 socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍: “ 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 ” 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象

Oracle配置管理

ⅰ亾dé卋堺 提交于 2019-12-17 20:31:47
博文结构 配置和连接数据库 控住文件的管理 日志文件的管理 归档日志的管理 数据字典 一.配置数据库 在实际生产环境中, Oracle 一般都是通过远程方式进行管理及维护, Oracle 远程操作除了对客户端工具的使用外,它的通信原理也是需要掌握的。 Oracle客户端与服务器端 无论是使用SQL*Plus工具还是使用第三方工具连接远程数据库,都必须建立客户端与服务器端 之间的连接。Oracle 提供了Oracle Net Services 组件,用于方便地配置和管理网络连接。这些组件不 需要单独安装,在安装Oracle服务器或客户端软件时会自动安装。 开启监听 [oracle@Oracle ~] $ lsnrctl start 1.Oracle Net协议 如图所示,Oracle 通过Oracle Net协议实现客户端与服务器端的连接及数据传递。Oracle Net 是同时驻留在Oracle服务器端和客户端上的一一个软件层,它封装了TCP/IP 协议,负责建立和维护客 户端应用程序到数据库服务器的连接。 2.客户端与服务器端的连接过程 在分析客户端与服务器端的连接机制之前,先要了解两个概念:一个是Oracle Net监听器,另一个是Oracle网络服务名。 案例:客户机远程连接oracle [root@oracle ~]# systemctl stop firewalld

轮询、长轮询、长连接、flash socket 的区别

一世执手 提交于 2019-12-17 19:59:11
轮询 : 客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 优点:后端程序编写比较容易。 缺点:请求中有大半是无用,浪费带宽和服务器资源。 实例:适于小型应用。 长轮询: 客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求,耗费资源小。 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。 实例:WebQQ、Hi网页版、Facebook IM。 长连接: 在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 优点:消息即时到达,不发无用请求;管理起来也相对方便。 缺点:服务器维护一个长连接会增加开销。 实例:Gmail聊天 Flash Socket: 在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。 优点:实现真正的即时通信,而不是伪即时。 缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙。 实例

bind函数的作用

孤者浪人 提交于 2019-12-17 11:47:37
面向连接的网络应用程序分为客户端和服务器端。服务器端的执行流程一般为4步,客户端程序相对简单,一般需要两个步骤。 服务器端执行流程4步如下: (1)调用socket函数,建立一个套接字,该套接字用于接下来的网络通信。 (2)调用bind函数,将该套接字绑定到一个地址,并制定一个端口号, (3)调用listen函数,使用该套接字监听连接请求 (4)当请求来到时,调用accept函数复制该套接字处理请求 客户端执行流程2步如下: (1)调用socket函数,创建一个套接字 (2)调用connect函数使用该套接字与服务器进行连接 服务器端和客户端程序的显著区别在于客户端程序不需要调用bind函数,bind函数的作用是将套接字绑定一个IP地址和端口号,因为这两个元素可以在网络环境中唯一地址表示一个进程。如果套接字没有使用bind函数绑定地址和端口,那么调用listen函数和connect函数的时候内核会自动为套接字绑定。由此可知,如果没有使用bind函数,调用listen函数和connect函数的时候内核会自动为套接字绑定。看起来好像bind函数是多余的,但事实并不是这样。 我们先来看看listen函数和connect是怎么绑定套接字的,connect函数绑定套接字的时候使用的是一个设置好的地址结构(sockaddr_in)作为参数,结构中指定了服务器的地址和需要通信的端口号

爬虫3-爬虫防范

安稳与你 提交于 2019-12-17 05:33:38
目录 1. 服务器端的检测 2. 客户端的检测 ——参考博客 https://www.zhuyingda.com/blog/article.html?id=17 机器人协议 爬虫领域有一个“白道手段”——robots协议,这是一个君子协议,即用allow和disallow声明各个页面的爬取授权,但除了商业搜索引擎的爬虫程序,野生爬虫根本不会管你这个(明白了scrapy框架中的ROBOTSTXT_OBEY 默认为True) 1. 服务器端的检测 服务器端针对user-agent、referer、cookie等字段进行检查,但这种检查方式存在明显的缺点,这些字段都是可以轻易伪造的,甚至还能不断变换这些字段和ip代理,伪装成多个用户在访问,所以这种检查方式还是不太靠谱。 另一种检查方式是,服务器端可以检查浏览器http头指纹,根据声明的浏览器厂商和版本,来鉴别http header中的各字段是否符合该浏览器的特征。典型的就是PhantomJS 1.X版本采用的Qt框架,在http头里面有明显的Qt框架网络请求特征,可以被服务器直接识别拦截 还有一种变态的检测机制,服务器对所有的页面请求,在http response中种下一个cookie token,然后在这个页面内异步执行一些的ajax接口里面去校验来访请求是否含有cookie token,并将token传回表明这是一个合法的浏览器

Socket连接与HTTP连接

北战南征 提交于 2019-12-17 02:04:07
Socket连接与HTTP连接 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 1)Socket是一个针对TCP和UDP编程的接口,你可以借助它建立TCP连接等等。而TCP和UDP协议属于传输层 。 而http是个应用层的协议,它实际上也建立在TCP协议之上。 (HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。) 2)Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口。 下面是一些的重要的概念,特在此做摘抄和总结。 一。什么是 TCP 连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j

服务器模型——从单线程阻塞到多线程非阻塞(上)

你离开我真会死。 提交于 2019-12-17 01:08:42
https://blog.csdn.net/s3FRH3JyN6yymHmT11/article/details/78871563 前言的前言 服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: 单线程/多线程阻塞I/O模型 单线程非阻塞I/O模型 多线程非阻塞I/O模型,Reactor及其改进 前言 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。 对于I/O,可以分成阻塞I/O与非阻塞I/O两大类型。阻塞I/O在做I/O读写操作时会使当前线程进入阻塞状态,而非阻塞I/O则不进入阻塞状态。 对于线程,单线程情况下由一条线程负责所有客户端连接的I/O操作,而多线程情况下则由若干线程共同处理所有客户端连接的I/O操作。 单线程阻塞I/O模型 单线程阻塞I/O模型是最简单的一种服务器模型,几乎所有程序员在刚开始接触网络编程时都从这个简单的模型开始。这种模型只能同时处理一个客户端访问,并且在I/O操作上是阻塞的,线程会一直在等待,而不会做其他事情。对于多个客户端访问,必须要等到前一个客户端访问结束才能进行下一个访问的处理,请求一个一个排队,只提供一问一答服务。 首先,服务器必须初始化一个套接字服务器,并绑定某个端口号并使之监听客户端的访问

温习Remoting基础

自闭症网瘾萝莉.ら 提交于 2019-12-16 23:59:18
一,Remoting的定义   简单的说是一种分布式的处理方式。.Net Remoting提供了一个对象通过应用程序与另外一个对象进行通讯,交互的框架。 二,Remoting的过程概述 客户端通过Remoting访问通道(channel),获取服务端对象(只是对象的引用,不是实际的对象),再通过代理解析为客户端对象,序列化在客户端运行。 1,Remoting的两种通道:TCP(一般用于局域网,TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。),HTTP(能在Internet上穿越防火墙传输序列化消息流。默认情况下,HttpChannel类型使用Soap格式序列化消息对象,因此它具有更好的互操作性。) 2,Remoting的激活模式: (1)服务端激活:服务器应用程序在激活对象实例之前会在一个众所周知的统一资源标识符(URI)上来发布这个类型。然后该服务器进程会为此类型配置一个WellKnown对象,并根据指定的端口或地址来发布对象。 服务器端激活模式有: a,SINGLETON模式,实例将在方法调用中一直维持其状态。举例来说,如果一个远程对象有一个累加方法(i=0;++i),被多个客户端(例如两个)调用。如果设置为SingleTon方式,则第一个客户获得值为1,第二个客户获得值为2,因为他们获得的对象实例是相同的。如果熟悉Asp.Net的状态管理