一、Java低级开拓之jsp概述
1.关于jsp
JavaServer Pages简称jsp,从“server”这个词可以看出,这实在也是一门java做事端技能,实在可以大略的把jsp认为是servlet,一点错也没有。Jsp的本色,便是客户端须要的资源是通过jsp技能动态天生的。
2.jsp的技能事理
1)当客户端在访问一个jsp资源时,做事器上有相应的servlet来卖力jsp资源,那么该servlet将会把jsp页面翻译成一个servlet,然后实行该servlet的service方法。
2)做事器将jsp翻译成java程序(便是一个Servlet),然后实行该Servlet的service方法,在方法内部动态地向客户端写html代码。
因此jsp便是一个servlet,也便是jsp页面将被翻译成servlet
3.jsp与servlet的选择
jsp便是servlet,那么如果碰到须要写繁多的html代码,建议利用jsp,如果须要写繁多的java代码,建议利用servlet。
二、JSP技能详解
1.JSP脚本
便是若何在jsp页面中利用java代码,利用了脚本的地方,就不会作为输出流的内容,而是作为java代码来实行。利用办法有三种:
1) <% java代码 %>
jav代码会被作为程序的一部分来实行,而不会被翻译成out.write(),这是常用的。
2) <% java代码 %>
会被翻译成 out.print(java代码)
3) <% java代码 %>
声明成员变量。
4)jsp的注释办法
· html的注释:
用户看得到,程序员也看得到
· java的注释:// 单行注释 /多行注释/
用户看不到,但是会被翻译
· jsp的注释:
用户看不到,不会被翻译,只有程序员在写jsp页面时才看得到。
2.三大指令
1)page指令
page指令是用于见告做事器该如何翻译此jsp页面。通过page指令的属性来指明翻译的效果。
· language: 指的是jsp页面支持哪种措辞,只支持java,以是该属性可以省略
· pageEncoding和contentType写一个就行,建议利用pageEncoding,更加大略
· session:默认值是true,默认情形下做事器会为该页面开辟一个session空间
· import:用于导入该页面中的java类须要用到的包
· errorPage:当发生缺点时跳转到的资源,把稳,该地址是一个做事器地址。
· isErrorPage:默认值是false。当在web.xml中配置缺点页面时,须要将该jsp页面的isErrorPage设为true.
404
/error.jsp
总结:一样平常情形下,page指令就这么写即可:
2)include指令:静态包含,file属性利用的是做事器地址。
include指令是用于在一个jsp页面中包含另一个jsp页面,两个页面组合成一个页面发送给客户端。
所谓的静态包含,在翻译时是把被包含的jsp页面写给客户端。那么此时客户端拿到的是两套html标签。
3)taglib指令:标签库
taglib指令用于引入第三方标签库,通过taglib指令中的prefix指明前缀,通过前缀来利用第三方标签库中的标签
3.四大域工具 (jsp有四个,servlet有三个(request,session,servletContext))
1) pageContext
(1)pageContext作为域工具
· 描述当前page的高下文。那么pageContext工具是一个域工具,所谓域工具,便是供应了一个区域,用来存储数据。因此当前的page就能向pageContext工具中存储数据.
pageContext域工具的浸染范围:当前page(页面)
setAttribute(String key,Object value);
getAttribute(String key);
removeAttribute(String key);
· 向其他域工具中操作数据.
pageContext.setAttribute(String key,Object value, int scope);向其他域工具中存值
pageContext.getAttribute(String key, int scope);向其他域工具中取值
pageContext.removeAttribute(String key, int scope);向其他域工具中移除值
int scope来自于PageContext类的常量
REQUEST_SCOPE: 表示request域
SESSION_SCOPE: 表示session域
APPLICATION_SCOPE: 表示application域
· findAttribute(String key):Object :这是通过键,向所有域中搜索数据。
搜索的顺序:
pageContext->request->session->application
(2)可以通过pageContext工具来获取其他八个内置工具
通过pageContext的get()来得到。
2)request
浸染范围:一次要求
3)session
浸染范围:一次会话
4)application
浸染范围:当前web运用
4.九大内置工具
所谓的内置工具,即在jsp页面的脚本中能直策应用的java工具。
· out: 输出流
当通过out的write()写内容时,实际是往out的缓冲区(默认大小是8kb)中去写,有两种情形导致缓冲区的内容会冲刷进底层的输出流中
1)out工具被销毁
2)out的缓冲区不足用了。实在我们可以设置out缓冲区的大小。如果缓冲区是0kb,那么out就把内容直接写到response缓冲区中。
· page:this,表示当前的Servlet工具
· pageContext:重点,表示当前page的高下文工具,也是一个域工具
· session:当jsp页面的page指令的session属性为true时,才会有session工具
· request:
· response
· exception 当jsp页面的page指令的isErrorPage属性为true时,才会有exception工具
· application: 实际便是ServletContext工具
· config:实际便是ServletConfig工具
5.Jsp标签
1) jsp:include
动态包含:在一个页面中包含另一个页面的内容
和静态的差异:
静态包含会在翻译的过程中直接翻译被包含的页面,被包含的页面不会产生java文件。
而动态包含会在翻译的过程中只翻译自己页面的内容,被包含的页面的翻译交给相应的类来完成,被包含的页面会产生java文件,实际开拓中更加常用动态包含。
2)jsp:forward
要求转发,与servlet中的要求转发的效果同等。