java web笔记——JSP

<笔记-JSP>


JSP全称Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态WEB页面(资源)的技术。


在<% %>标签的代码中使用注释不能用<%-- --%> ,因为<% %>中的代码内容为直接翻译成servlet的java源代码片段


java脚本表达式(expression)用于将程序数据输出到客户端
语法:<%= 表达式或变量 %>
JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print()方法将数据输出给客户端


JSP脚本片段(scriptlet)用于在JSP页面编写多行java代码
语法:<% 多行代码 %>
JSP脚本片段中只能出现java代码,不能出现其他模版元素,JSP引擎在翻译JSP页面中,会将JSP脚本片段中的代码原封
不动地翻译在Servlet的_jspServlet()方法中。
在一个JSP页面可以有多个脚本片段,多个脚本片段可以相互访问,犹如将所有代码放在一对脚本片段标签中。单个脚本
片段中的语句可以是不完整的,但多个脚本片段组合成的语句必须是完整的。


JSP页面中编写的所有代码默认会翻译在servlet的service()方法中,而JSP声明中的代码会翻译在_jspService()方法的
外面,_jspService所属类里面。
JSP声明可以定义转换成的Servelt的静态代码块、成员变量、方法。
JSP隐式对象的作用范围仅限于Servlet的_jspService()方法中,所以在JSP声明中不适用。


JSP中<%-- --%>注释的类容不会发送给客户端浏览器,<!-- -->注释的类容会发送给客户端,在网页页面点击查看源代
码可以看见<!-- -->注释的内容。


JSP指令(directive)是为JSP引擎设计的,它们并不直接产生任何输出,而只是告诉引擎如何处理JSP页面中的其余部分。
在JSP2.0规范中定义了三个指令: page指令 include指令 taglib指令


page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面的什么位置,他的作用域都时整个JSP页面。
语法: <%@ 指令 属性名="值" %>
若一个指令有多个属性,这些属性可写在一个指令中,也可分开写。
JSP2.0规范完整的page指令:
<%@ 
language="java" (嵌入代码的语言)
extends="package.class"(翻译后的servlet继承的类,通常不会去更改默认值)
import="" (导入包的类,可以在一条page指令中导入多个包或类,之间用逗号分隔)  
——JSP引擎自动导入以下的包:java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
session="true||false"(是否自动获取session,置为false后,也可手动获取session)
buffer="none||8kb||sizekb"(输出需不需要缓冲,默认为8kb缓冲)
autoFlush="true||flase"(缓冲满了是否自动刷新)
isThreadSafe="true||flase"(线程是否安全,置为true线程安全,true时实现了SingleThreadModel接口)
errorPage="relative_url"(指定JSP的错误处理页面)
——errorPage属性的设置必须使用相对路径,如果以"/"开头表示相对于当前web应用根目录,否则
 表示相对于当前页面。可以在web.xml文件中配置<error-page>元素为整个web应用设置错误处理
 页面,其中的<exception-type>子元素指定异常类的完全限定名(如java.lang.ArithmeticException),
 <location>元素指定以"/"(代表web应用根目录)开头的错误处理页面路径。<error-code>子元素
 指定出错状态码。
isErrorPage="true||false"(是否为错误处理页面)
info="text"
contentType=""(JSP引擎根据指令生成相应的调用ServletResponse.setContentType()方法语句)
pageEncoding="UTF-8"(以什么码表保存的页面数据,告诉服务器以什么码表翻译,response也默认以这个
码表给浏览器发送数据)
isELIgnored="true||false"(是否忽略EL表达式)
%>

include指令用于引入其他JSP页面,JSP引擎把当前和引入的JSP翻译成一个Servlet,所以include指令为静态包含。
语法: <%@ include file="ralativeURL" %>
路径以"/"开头,表示当前web应用根目录
注意:1.被引入的文件可以为任意扩展名,如扩展名为html,JSP引擎也会按照处理JSP的方式处理它的内容,建议使用
.jsp作为静态引入文件的扩展名。
 2.由于include指令会将多个JSP页面翻译成一个servlet,所以这多个JSP页面的指令不能冲突(pageEncoding和导包除外)。
   
动态包含(将JSP翻译成多个servlet,运行时再包含;静态包含为编译时包含):
request.getRequestDispatcher("").include(request,response);
使用静态包含性能较好


JSP九大隐式对象:request,response,session,application,config,page,exception,out,pageContext


out对象为带缓存功能的PrintWriter,page指令的buffer属性可设置缓存大小。
out对象在以下情况才会把缓冲区的数据写入servlet的缓冲区:
——1.设置page指令关闭了缓存功能 2.out对象的缓冲区装满 3.整个JSP页面结束
在JSP页面有写入文本输出的内容如html标签,在<% %>标签中不能使用字节流输出,文本输出和字节流输出冲突。
测试发现:JSP中编写了字节流输出的代码,文本输出的内容虽然会被翻译成servlet代码但不能输出到客户端浏览器。


pageContext代表了JSP页面的运行环境,封装了其他8大隐式对象的引用,它自身还是个域对象,可以用来保存数据。
pageContext对象还封装了web开发中经常涉及的操作,例如引入和跳转其他资源、检索其他域对象中的属性、操作其
它三个域(request域、session域、servletContext域)等。
使用自定义标签时会通过pageContext对象获取其他8大隐式对象。


JSP标签: <jsp: include>标签,<jsp: forward>标签,<jsp: param>标签
JSP标签也称为JSP Action(JSP动作)元素,避免在JSP页面直接编写JAVA代码造成页面难以维护。
<jsp: include page="<%= url %>"/>(动态包含) url中开头的"/"表示web应用根目录
<jsp: forward page="<%= url %>"></jsp: forward>


JSP在web.xml文件中映射的配置:
<servlet>
<servlet-name>name<servlet-name>
<jsp-file>/1.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>name<sevlet-name>
<url-pattern>/jsp.jsp<url-pattern>
</servlet-mapping>


pageContext(page域)页面范围
request(request域)请求范围
session(session域)会话范围
servletContext(application域)web应用范围
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值