Cookie教程.docx
- 文档编号:14543923
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:47
- 大小:1.61MB
Cookie教程.docx
《Cookie教程.docx》由会员分享,可在线阅读,更多相关《Cookie教程.docx(47页珍藏版)》请在冰点文库上搜索。
Cookie教程
1.JSP入门
1.1.JSP概述
JSP的全称为JavaServerPages,译为Java服务器端页面。
是由SUN公司设计建立的一种动态技术标准,其根本是一个简化的Servlet,实现了HTML语法中的Java扩展内容。
JSP与Servlet一样是运行在服务器端的,通常返回给客户端一个HTML页面内容。
说白了一个JSP就是由HTML代码、Java代码及JSP动作标签组成。
1.2.XX百科
Java服务器页面是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
1.3.维基百科
JSP(全称JavaServer Pages)是由SunMicrosystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。
JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。
JSP使Java代码和特定的预定义动作可以嵌入到静态页面中。
JSP句法增加了被称为JSP动作的XML标签,它们用来调用内建功能。
另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。
标签库提供了一种和平台无关的扩展服务器性能的方法。
JSP被JSP编译器编译成JavaServlets。
一个JSP编译器可以把JSP编译成JAVA代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。
1.4.如何创建JSP
我们可以利用MyEclipse提供的JSP模版来创建JSP页面,但首先我们需要做的是修改MyEclipse有关JSP的一些配置:
Ø打开“window”菜单的“Preferences”选项。
Ø选择“General”->“Editors”->“FileAssociations”选项。
找到“*.jsp”选项,选择默认打开编辑器为“MyEclipseJSPEditor”选项。
Ø选择“General”->“MyEclipse”->“FilesandEditors”->“JSP”选项。
将“Encoding”选项改为“ISO10646/Unicode(UTF-8)”选项(编码集修改为UTF-8)。
完成以上配置之后,我们可以像创建HTML页面一样,来创建JSP页面。
具体步骤如下:
Ø在Web工程的WebRoot目录下,鼠标右键“New”->“JSP”选项。
Ø弹出创建JSP页面的窗口,进行相关配置后,点击“Finish”按钮。
Ø创建成功后的JSP页面代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
ThisismyJSPpage.
Ø将Web工程发布到Tomcat服务器,并启动Tomcat服务器。
Ø打开浏览器,在地址栏中输入http:
//localhost:
8080/10_cookies/a.jsp。
Ø至此,第一个JSP页面就创建成功并访问了。
1.5.第一个JSP页面
虽然我们成功地创建了一个JSP页面,但对于JSP页面中的代码还不清楚代表什么意思,下面我们逐一学习。
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
ThisismyJSPpage.
ØJSP指令(在今后的内容中会学到)
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
ØJSP脚本
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
<%=basePath%>
ØHTML代码
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
ThisismyJSPpage.
Ø由MyEclipse提供的模版创建的JSP页面,并没有提供JSP动作标签内容。
1.6.JSP运行原理
JSP与Servlet一样,都是由Tomcat服务器运行的。
Tomcat服务器是如何运行JSP页面的呢?
具体流程如下:
ØJSP运行的文件存储在Tomcat服务器安装目录的work目录中。
Ø由上图我们可以知道,JSP被Tomcat服务器生成Java文件,并编译成Class文件后运行。
Tomcat服务器将JSP页面生成Java文件的命名规则为:
例如:
“a.jsp”生成为“a_jsp.java”。
Ø下面我们查看一下“a_jsp.java”文件的源代码(源代码片段)。
packageorg.apache.jsp;
publicfinalclassa_jspextendsorg.apache.jasper.runtime.HttpJspBase
implementsorg.apache.jasper.runtime.JspSourceDependent{
publicvoid_jspInit(){
}
publicvoid_jspDestroy(){
}
publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse)
throwsjava.io.IOException,javax.servlet.ServletException{
}
}
Ø通过上面的源代码片段,我们知道生成的Java文件继承于HttpJspBase类(该类是Tomcat服务器提供的),查找HttpJspBase类的源代码。
packageorg.apache.jasper.runtime;
publicabstractclassHttpJspBaseextendsHttpServlet
implementsHttpJspPage
{
protectedHttpJspBase(){
}
publicfinalvoidinit(ServletConfigconfig)
throwsServletException
{
_jspInit();
}
publicfinalvoiddestroy(){
_jspDestroy();
}
publicfinalvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException
{
_jspService(request,response);
}
publicvoid_jspInit(){}
protectedvoid_jspDestroy(){}
publicabstractvoid_jspService(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException;
}
Ø通过HttpJspBase类的源代码,我们知道该类继承于HttpServlet类。
所以,JSP其实就是Servlet,与Servlet一样具有生命周期方法_jspInit()、_jspSerivce()和_jspDestroy()。
ØJSP页面中的代码内容,生成在对应Servlet文件中的Service()方法中。
publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse)
throwsjava.io.IOException,javax.servlet.ServletException{
out.write("
DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">\r\n");
out.write("\r\n");
out.write("
\r\n");out.write(" out.print(basePath); out.write("\">\r\n"); out.write("\r\n"); out.write("
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("
\r\n");out.write("ThisismyJSPpage.
\r\n");
out.write("\r\n");
out.write("\r\n");
}
通过上述步骤,我们可以总结出JSP的运行原理如下:
1.7.JSP与Servlet的区别
JSP本质上就是简化了的Servlet,但是还是有一些区别的:
ØJSP与Servlet的创建方式不同。
ØJSP更适合生成动态HTML页面,Servlet更适合来控制逻辑处理。
ØServlet需要配置web.xml文件,JSP不需要配置任何内容。
ØJSP中内置了九大对象,Servlet中没有内置对象。
ØServlet必须编译之后运行,而JSP不需要编译。
Ø由于JSP需要编译成Servlet文件后再运行,所以JSP的运行速度要比Servlet慢。
1.8.JSP脚本
JSP中的一种重要组成部分就是JSP脚本,其中包含声明脚本、表达式脚本与程序代码脚本。
ØJSP声明脚本:
✧语法:
是以“<%!
”开始,是以“%>”结束。
✧作用:
生成Servlet的成员变量、方法及内部类。
✧案例:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
生成Java文件后的代码:
packageorg.apache.jsp;
publicfinalclassb_jsp{
inta=10;
publicvoiddemo(){}
classDemo{}
}
ØJSP表达式脚本:
✧语法:
是以“<%=”开始,是以“%>”结束。
✧作用:
输出表达式的值到HTML源代码中。
✧注意:
表达式脚本后,不需要添加“;”。
✧案例:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%!
inta=10;%>
<%=a%>
生成Java文件后的代码:
packageorg.apache.jsp;
publicfinalclassc_jsp{
inta=10;
publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse){
finaljavax.servlet.jsp.PageContextpageContext;
javax.servlet.jsp.JspWriterout=null;
out=pageContext.getOut();
out.print(a);
}
}
ØJSP程序代码脚本:
✧语法:
是以“<%”开始,是以“%>”结束。
✧作用:
在JSP页面中嵌入任意Java代码。
✧注意:
一个JSP页面可以包含多个程序代码脚本,这些代码脚本会按照先后顺序执行。
✧案例:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%
for(inti=0;i<10;i++){
out.println(i);
}
%>
生成Java文件后的代码:
packageorg.apache.jsp;
publicfinalclassd_jsp{
publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse){
javax.servlet.jsp.JspWriterout=null;
for(inti=0;i<10;i++){
out.println(i);
}
}
}
1.9.JSP注释
JSP中同样支持注释,不会被Tomcat服务器编译成Java文件内容,是以“<%--”开始以“--%>”结束的,具体写法如下:
<%----%>
2.Cookie
2.1.Cookie概述
Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件。
Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件。
Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源。
客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内容。
Cookie的用途:
Ø管理浏览网站的人数(其中包含有多少人访问过,多少人是新用户等)
Ø电子商城中购物车功能(每买一样商品,保存一个Cookie)
Ø用户自动登录功能(第一次登录时,将用户名和密码存储在Cookie)
Cookie的缺点:
Ø多人共用一台计算机(例如导致用户名和密码不安全等问题)。
ØCookie被删除时,利用Cookie统计用户数量出现偏差。
Ø一人使用多台计算机(网站会将看成多个用户等问题)
ØCookie会被附加在每次Http请求协议中,增加流量。
ØCookie使用明文(未加密)传递的,安全性低。
ØCookie的大小限制在4KB左右,无法存储复杂需求。
2.2.XX百科
Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份而储存在用户本地终端(ClientSide)上的数据(通常经过加密)。
定义于RFC2109。
为网景公司的前雇员LouMontulli在1993年3月所发明。
Cookie一词用在程序设计中是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。
从本质上讲,它可以看作是你的身份证。
保存的信息片断以"名/值"对(name-valuepairs)的形式储存,一个"名/值"对仅仅是一条命名的数据。
一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookie文件中取得信息,也无法得到你的电脑上的其它任何东西。
Cookie中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。
2.3.维基百科
Cookie(复数形态Cookies),中文名称为小型文本文件或小甜饼,指某些网站为了辨别用户身份而储存在用户本地终端(ClientSide)上的数据(通常经过加密)。
定义于RFC2109。
为网景公司的前雇员LouMontulli在1993年3月所发明。
Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。
内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。
硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。
所以,按存在时间,可分为非持久Cookie和持久Cookie。
2.4.Cookie规范
Http协议提供了有关Cookie的规范,现今市场上出现大量浏览器,一些浏览器对该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Cookie 教程