JSP基本常识总结
第1章JSP简介
常识点1:什么是JSP?
JSP是java server pages的缩写,是由Sun公司倡导,许多公司参与,于1999年推出的一种动态网页技术标准,JSP是基于JAVA servlet以及JAVA体系的Web开发技术,利用这一技术可以建立安全,跨平台的先进动态网站。
常识点2:真正掌握JSP技术,需要什么知识?
需要强调的一点是:要想真正的掌握JSP技术,必须有较好的JAVA基础,以及HTML语言方面的知识。
常识点3:JSP页面是怎么构成的?
1.在传统的HTML页面文件中加入java程序片和JSP标签就构成了一个JSP页面文件。
2.简单的说,一个JSP页面除了普通的HTML标记符外,再使用”<%”,”%>”加入JAVA程序片。
3.一个JSP页面的文件的扩展是.jsp
4.JSP技术基于 JAVA语言,名字区分大小写。
常识点4:JSP的运行原理是什么?
1. 当服务器上的JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面转译成一个JAVA文件,再将这个JAVA文件编译成字节码文件,然后通过执行这个字节码文件响应客户的请求,而当这个JSP页面被再次请求执行时,JSP引擎将直接执行这个字节码文件来响应请求。
2. 这个字节码的主要工作是:
>>>>把JSP页面中普通的HTML标记符号(页面的静态部分)交给客户的浏览器负责显示。
>>>>执行”<%”和”%>”之间的JAVA程序片(JSP页面的动态部分),并把执行结果交给客户的浏览器显示。
>>>>当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程而不是一个进程,这些线程由JSP引擎服务器来管理,与传统的CGI为每个客户启动一个进程相比较,效率要高的多。
常识点5:java与java servlet的关系是什么?
>>>>Java Servlet 是JAVA语言的一部分,提供了用于服务器编程的API,java Servlet编写的JAVA程序称为一个servlet。Servlet通过HTML与客户交互信息。
>>>>Servlet最大的缺点是不能有效的管理页面逻辑部分和页面的输出部分,导致servlet代码非常混乱,用servlet来管理网站变成了一件非常困难的事情。为克服servlet的缺点,sun公司用javaServlet作为基础,推出了java server page
>>>>JSP提供了servlet的几乎所有的好处,当一个客户请求一个JSP页面时,JSP引擎根据JSP页面生成一个JAVA文件,即servlet。
>>>>用JSP技术JAVABEANS这一特点,可以有效地管理页面的逻辑部分和页面的输出部分,另外,JSP也可以和servlet有效地结合,分离页面的逻辑部分和页面的输出部分
第2章JSP语法
常识点6:JSP页面的基本结构是什么?
在传统的HTML页面文件中加入JAVA程序片和JSP标签就构成了一个JSP页面文件,一个JSP页面可以由五种元素组合而成:
(1)普通的HTML标记符。
(2)JSP标签,如指令标签,动作标签。
(3)变量和方法的声明。
(4)JAVA程序片。
(5)JAVA表达式。
常识点7:JSP中如何声明变量?
>>>>在”<%!”和”%>”之间声明变量,即在”<%!”和”%>”之间放置JAVA的变量声明语句,变量的类型可以是JAVA语言允许的任何数据类型,我们将这些变量称为JSP页面的成员变量。
>>>>例子:
<%! Inta ,b = 10,c;
Stringtom = null,jerry = “love JSP”
Datedate;
%>
>>>>变量的范围:
“<%!”和”%>”之间声明的变量在JSP页面内都有效。原因在于:因为JSP引擎将JSP页面转译成JAVA文件时,将这些变量作为类的成员变量,这些变量的内存空间直到服务器关闭才释放,因此任何一个JSP页面成员变量操作的结果,都会影响其它用户。
常识点8:JSP中如何声明方法?
>>>>方法声明的格式及范围?
在<%!---%>之间声明方法,此方法在整个JSP页面有效,但是此方法内定义的变量只在此方法内有效。
>>>>为什么声明的方法内的变量寿命比较短??
这些方法在将在JAVA程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放所占的内存。
>>>>多客户调用方法时需要注意什么呢?
当多个客户同时请求一个JSP页面时,他们可能调用方法操作成员变量,对这种情况需要注意。
常识点9:JSP页面中如何声明类?
可以在”<%!”和”%>”之间声明一个类,此类在JSP页面内有效,即在JSP页面的JAVA程序片部分使用此类创建对象。
常识点10:JSP页面中JAVA程序片指的是什么?
>>>>Java程序片的格式?
可以在”<%”和”%>”之间插入java程序片。一个JSP页面可以有许多程序片。
>>>>在一个JSP页面中可以有多个JAVA程序片,那么程序片的执行顺序有没有规定呢?
JSP引擎将按顺序执行这些程序片。
>>>>程序片中声明的变量是什么样的呢?
在一个程序片中声明的变量称做为JSP页面的局部变量,它们在JSP页面内的所有程序片部分以及表达式部分都有效,这是因为JSP引擎页面转译成JAVA文件时,将各个程序片的这些变量作为类中的方法的变量,即局部变量。
>>>>多个用户的局部变量会相互影响吗?
当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,一个客户的局部变量和另一个客户的局部变量被分配到不同的内存空间。因此,一个客户对JSP页面局部变量操作的结果,不会影响到其它客户的这个局部变量。
常识点11:JSP中的表达式是什么?
可以在”<%=”和”%>”之间插入一个表达式(注意:不可插入语句,“<%=”是一个完整的符号,“<%”和”=”之间不要有空格。)这个表达式必须能求值。表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。
常识点12:JSP中的注释是如何表达的?
>>>>为什么JSP页面需要用注释?
注释可以增强JSP文件的可读性,并易于JSP文件的维护。
>>>>JSP页面注释有几种类型?
JSP中的注释可分为两种。
(1) HTML注释:<!—HTML注释-->
(2) JSP注释: <%--JSP注释--%>
>>>>HTML和JSP两种注释的区别??
JSP引擎将HTML注释交给客户,因此客户通过浏览器查看JSP的源文件时,能够看到HTML注释。
JSP引擎忽略JSP注释,即在编译JSP页面时忽略JSP注释。
常识点13:JSP标签有哪些?
>>>>JSP标签有哪两大类?
JSP标签包括指令标签和动作标签
>>>>JSP指令标签有哪些?
JSP指令标签有page指令,include指令
>>>>JSP动作标签有哪些?
JSP动作标签包括include动作标签,param动作标签,forward动作标签,plugin动作标签,useBean动作标签
常识点14:page指令标签是如何使用的?
>>>>JSP标签是用来做什么的?
Page指令用来定义JSP页面的一些属性和这些属性的值。
>>>>JSP中的page指令标签的格式是什么?
<%@page属性1 = “属性1的值” 属性2 = “属性2的值” 属性3= “属性3的值”............%>
<%@page contentType = “text/html;charset = gb2312” import = “java.util.*”%>
如果为一个属性指定几个值的话,这些值用逗号分割,page指令只能给import属性指定多个值:其中属性只能指定一个值.
<%@pageimport = “java.util.*”,”java.io.*”,”java.awt.*”%>
>>>>JSP中指定多个属性值时,JSP引擎是如何转译的?
<%@pageimport = “java.util.*”,”java.io.*”,”java.awt.*”%>
JSP引擎将JSP页面译成一个JSP文件中会有如下的import语句:
Import java.util.*;
Import java.io.*;
Import java.awt.*;
>>>>PAGE标签指令的作用范围是什么?
Page指令的作用对整个页面有效,与其书写的位置无关,但习惯把page指令写在JSP页面的最前面。
常识点15:page指令标签的属性language的使用?
Pagelanguage属性:定义JSP页面使用的脚本语言,此属性的值目前只能取”java”.
使用格式:<%@page language = “java”%>
在JSP页面中,language属性的值默认为”java”,如果不写,即表示为java,目前JSP的脚本也只能使用JAVA.
常识点16:page指令标签的属性import属性的使用?
此属性的作用是为JSP页面引入JAVA核心包中的类,这样可以在JSP程序片部分,变量及函数声明部分,表达式部分使用包中的类。可以为此属性指定多个值。
>>>>JSP页面默认的import属性已经有如下的值:
Java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.*
常识点16:page指令标签的属性session的使用?
Session的属性值可以是true或者false,session属性默认的属性值是true.
常识点17:page指令标签的属性buffer的使用?
内置输出流对象out负责将服务器的些信息或者运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或者不使用缓冲区。
常识点18:page指令标签的属性autoFlush的使用?
指定out的缓冲区被填满时,缓冲区是否自动刷新。默认值是true.
常识点19:page指令标签的属性isThreadSafe的使用?
用来设置JSP页面是否可多线程访问。
常识点20:page指令标签的属性info的使用?
此属性值为JSP页面准备一个字符串,属性值是某个字符串
<%@pageinfo = “we are students”%>
getServletInfo();
常识点21:include指令标签
如果需要在JSP页面内整体插入一个文件,就可以考虑使用这个指令标签,此指令的语法如下:
<%@includefile = “文件的名字”%>
常识点22:JSP动作标签include标签
Include动作标签:
<jsp:include page = “文件的名字”/>或者
<jsp:include page = “文件的名字”></jsp:include>
此动作标签的作用:
此动作标签告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。
常识点23:JSP动作标签include标签和静态插入的include指令标签的区别?
Include动作标签与静态插入文件的include指令标签有很大的不同:
动作标签是在执行时才对包含的文件进行处理,因此JSP页面和它所包含的文件在逻辑和语法上是独立的;如果你对包含文件进行了修改,那么运行时看到所包含文件修改后的结果。
而静态include指令包含文件如果发生了变化,我们必须要重新将JSP页面转译成JAVA文件,否则只能看到所包含的修改前的文件内容。
常识点24:param动作标签的使用方法?
>>>>Param标签以名字----值对的形式为其它标签提供附加信息,这个标签与jsp:include /jsp:forward/jsp:plugin一起使用。
>>>>Param动作标签格式是什么样的?
<jsp:paramname = “名字” value = “指定的param的值”>
>>>>Param与jsp:include连用时的效果是什么样的?
当此标签与jsp:include标签一起连用时,可以将param标签中的值传递到include指令要加载的文件中去,因此include动作标签如果结合param标签,可以在加载文件的过程中向此文件提供信息。
常识点25:jsp的动作标签forward标签
>>>>JSP的forward标签的作用是什么?
从此指令处停止当前页面的继续执行,而转向其它的一个JSP页面。
>>>>JSP的forward标签的格式是什么?
<jsp:forward page = “所要跳转的页面”/>
或者:<jsp:forward page = “所要跳转的页面”></jsp:include>
常识点26:jsp的动作标签plugin标签
>>>> 动作标签plugin的作用是什么?
此动作标签指示JSP页面加载java plugin,此插件由客户负责下载,并使用此插件来运行java applet.
>>>> 动作标签plugin的格式是什么?
<jsp:plugintype = “applet” code = “小应用程序的字节码文件”/>
或者<jsp:plugin type = “applet” code = “小应用程序的字节码文件。”></jsp:plugin>
常识点27:jsp的动作标签useBean标签
此标签是用来创建并使用一个java beans,是非常重要的一个动作标签,用HTML完成JSP页面的表态部分,用JAVVABEANS完成动态部分,实现真正意义上的静态和动态分割。
第3章JSP内置对象
常识点28:什么是JSP内置对象?
有些对象不用声明就可以在JSP页面的脚本部分使用,这就是JSP的内置对象。
常识点29:JSP内置对象有哪些?
>>>>JSP内置对象有:request,response,session,application,out
>>>>Response,request,这两类是JSP内置对象中比较重要的对象,因为它们提供了对服务器和浏览器通信方法的控制。
常识点30:HTTP通信协议是什么协议?
HTTP通信协议是客户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。
常识点31:request对象的作用?、
内置对象request封装了用户提交的信息,那么此对象调用相应的方法可以获取封装的信息,即使用此对象可以获取用户提交的信息。
常识点32:客户通过什么方式向特定的JSP页面提交信息的?
客户通常使用HTML表单向服务器的某个JSP页面提交信息。
常识点33:HTML表单的格式是什么?
>>>>格式?
<Formmethod = “post/get” action = “提交信息的目的地” name = “form1”>
提交手段(提交手段包括:通过文本框,列表,文本区)
</form>
>>>>FORM表单的提交方式,post,get这两种方式的区别?
使用GET方法提交的信息会在提交的过程中显示在浏览器的地址栏里,而post方法提交的信息则不会显示在地址栏中。
常识点34:request对象是如何获取对象信息的?
>>>>
Request对象获取客户提交信息的最常用的方法是getParameter(Strings)
常识点35:request对象在获取用户提交的汉字类信息时是如何处理的?
>>>>
当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理方式。
>>>>处理步骤如下?
首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串即可。
>>>>通用格式是什么?
Stringstr = request.getParameter(“girl”);
Byte b[]= str.getBytes(“ISO-8859-1”);
str= newString(b);
常识点36:request内置对象的常用方法有哪些?
>>>>我们可以通过JSP引擎的内置对象request对象来获取客户提交的信息。
1. getProtocol()获取客户向服务器提交信息所使用的协议如http/1.1
2. getServletPath():获取客户请求的JSP页面文件的目录。
3. getContentLength()获取客户提交信息的长度。
4. getMethod()获取客户提交信息的方式,如get或者post.
5. getHeader(Strings)获取HTTP头文件中由参数S指定的头名字的值。
6. getHeaderName():获取头名字的一个枚举。
7. getHeaders(Strings):获取头文件中指定头名字的值的一个枚举。
8. getRomoteAddr():获取客户端的IP地址。
9. getRemoteName():获取客户机的名字,如果没有名字,刚返回IP地址。
10. getServerName():获取服务器的名称。
11. getServerPort():获取服务器的端口号。
12. getParameterNames():获取客户提交信息体部分的参数名称的枚举。
常识点37:JSP的内置对象:response对象
>>>>response内置对象的作用是什么?
Request对象获取客户请求提交的信息,与request相对应的是response对象.我们可以用response对象对客户的请求作出相应的动态响应,向客户端发送数据.
常识点38:response对象的setContentType方法是做什么的?
由于page指令只能为contentType指定一个值,并决定响应的MIME类型,如果想动态的改变这个属性的值来响应客户,就需要用RESPONSE对象的setContentType方法来修改contentType的属性值。
常识点39:response的HTTP文件头相关的方法有哪些?
Response对象可以使用方法
addHeader(Stringhead,String value);
或者方法
setHeader(Stringhead String value);
常识点41:response对象的重定向:sendRedirect方法的使用方法?
>>>>什么是response重定向?
在一些情况下,当响应客户里,需要将客户引入到另一个页面时,可以使用response的sendsRedirect(URL url)方法实现客户的重定向。
>>>>response的重定向的例子?
如果客户输入表单的信息不完整时,就需要再被引导到输入信息表单的页面去。
常识点42: JSP页面中内置对象response的状态行是什么?
>>>>状态行的定义是什么?
当服务器对客户作出响应时,它的首行就叫做状态行。
状态行包括3位数字的状态代码和对应状态码的描述。
>>>>5类状态码有哪些,是什么?
1yy.(1开头的话位数):主要是实验性质的。
2yy:用来表明请求成功的,例如状态码200可以表明已经成功取得了请求的页面。
3yy:用来表示在请求满足前应采取的进一步行动。
4yy:当浏览器作出无法满足请求时,返回此状态码。如404表示请求的页面不存在。
5yy:用来表示服务器出现问题。如500说明服务器内部发生错误。
常识点43:JSP页面的内置对象response的状态行是否可以被修改呢?
>>>>
我们一般是不需要修改状态行的,在出现问题时,服务器会自动响应,发送相应的状态码。但是我们也可以使用response对象的setStatus(int n)方法来增加状态行的内容。
常识点44:JSP中会话是什么?
从一个客户打开浏览器连接到服务器到关闭浏览器离开这个服务器称为一个会话。
常识点45:JSP为什么会引入会话这个概念?
HTTP协议是一种无状态协议,一个客户向服务器发出一个请求,服务器给出响应后,连接就关闭了,在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已经没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一客户,因此必须使用会话记录有关连接的信息。
常识点46:JSP中会话的作用是什么?
当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面或者不断的向一个页面提交信息等,服务器应当通过一些办法知道这是一同一个客户,这就是需要session会话对象。
常识点47:session对象的URL重写是什么情况呢?
>>>>sesson对象的URL重写格式是什么?
Stringstr = response.encodeRedirectURL(“jerry.jsp”);
<%=str%>
>>>>session的URL重写是用来解决什么问题的??
如果客户的浏览器不支持cookie,我们可以通过URL重写来实现session对象的唯一性
>>>>sessionURL重写的定义是什么?
所谓URL重写,就是当客户从一个页面重新连接到一个页面时,通过向这个新的URL添加参数,把SESSION对象的ID传带过去,这样就可以保障客户在引网站各个页面中的session对象是完全相同的啦,/
常识点48:JSP内置对象session常用方法:
>>>>(1)public void setAttribute(String key,Objectobj)
Session对象类似于散列表,session对象可以调用此方法将参数object指定的对象obj加到session对象中去,并为加的对象指定一个索引关键字,如果回报两个对象的关键字相同,则先前加的对象被清除。
>>>>(2)public ObjectgetAttribute(String key)
获取session对象里含有关键字为KEY的对象。
>>>>(3)publicEnumeration getAttrbuteName()
Session对象调用此方法产生一个枚举对象,此枚举对象采用nextElements()遍历session对象所包有的所有对象。
>>>>(4)public longgetCreatedTime()
Session对象调用此方法可以获取此对象创建的时间。单位是毫秒。
>>>>(5)public long getLastedAccessedTime()
Session对象调用此方法可以获取最后一次访问此对象时的时间,时间单位是毫秒。
>>>>(6)public longgetMaxInactveIterval()
获取 sesison对象的生存时间。
>>>>(7)public voidsetMaxInactiveIterval(int n)
设置session对象的生存时间。
>>>>(8)public voidremoveAttribute(String key)
在session对象中移除关键字为key的对象。
>>>>(9)public StringgetId()
获取session对象的编号。
>>>>(10)Invalidate
使SESSION无效。
常识点49:JSP内置对象application对象与JSP内置对象session对象的区别是什么?
>>>>session的运行机理?
当一个客户第一次访问服务器上的一个JSP页面时,JSP引擎创建一个与此客户相对应的session对象,当客户在所访问的网站各个页面之间浏览时,这个session对象都是同一个,直到客户关闭浏览器,这个session对象才被取消。
>>>>不同客户的session对象是互不相同的,与session对象不同的是application对象。
服务器启动后,就产生了这个application对象。当一个客户访问服务器上的一个JSP页面时,JSP引擎为此客户分配了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭,这个application才被取消。
>>>>与session对象不同的是,所有客户都使用同一个application对象是相同的一个,即所有的客户共享这一个内置的application对象,
>>>>session与application自己的话分析?
Session是为了解决在一定的时间内,同一个用户访问不同的页面时,不需要多次输入自己的帐户密码而设置的。
Application是,多个用户共享同一个应用时,,,大家的操作是相互影响的,彼此有关联的。
常识点50:JSP内置对象application的常用方法有哪些
>>>>public voidsetAttribute(String key,Object obj)
Application对象可以采用setAttribute方法将参数Object指定的对象obj添加到的两个对象的关键字相同,则先前添加对象被清除。
>>>>public ObjectgetAttribute(String key)
获取application对象有的关键字KEY的对象,由于对象都可以加到application对象中,因此用此方法取回对象时,应强制转化为原为的类型。
>>>>public EnumerationgetAttributeNames()
Application调用此方法getAttributeNames()时可以获取一个枚举对象,这个枚举对象使用nextElements()遍历application对象所有的全部对象。
>>>>public voidremoveAttibute(String key)
从当前的application对象中删除关键字为KEY的对象。
>>>>public StringgetServletInfo()
获取Servlet编译器的当前版本的信息。
常识点51:JSP的内置对象out对象是什么?
Out对象是一个输出流,用来向客户输出数据。
常识点52:JSP的内置对象out对象可以输出数据的类型有哪些?
>>>>out.print(Boolean)/out.println(Boolean)
用于输出一个布尔值。
>>>>out.print(char)/out.println(char)
用于输出一个字符。
>>>>out.print(float/double/long)
用于输出一个浮点型/双精度型/长整型。
>>>>out.println(String)
用于输出一个字符串对象的内容。
>>>>out.newLine()
输出一个换行符
>>>>out.flush()
输出一个缓冲区里的内容。
>>>>out.close()
关闭流。