一.jsp脚本知识
<% java代码 %> 内部的java代码会被翻译到service方法内部
<%=java变量或表达式%> 会被翻译成service方法内部的out.write()
<%!java代码%>会被翻译成service的成员,而不是位于方法内部
其实说白了,jsp本质上就是一个servlet容器
在jsp文件第一次执行后,jsp文件被翻译成servlet容器,然后编译为_jsp.java文件,该文件位于tomcat的work目录中。
二.jsp注释
一共有三种注释方式<!--注释内容-->
:html注释,可见范围最广,源码可见,翻译后的servlet可见,网页可见。//单行注释 /*多行注释*/
:Java注释,源码可见,翻译后的servlet可见,网页不可见。<%--注释内容--%>
:jsp注释,源码可见,其余不可见,因此最安全。
(1)page指令:<% @ page 属性=""%>
常见属性:
language:jsp脚本中可以嵌入的语言种类
pageEncoding:当前jsp文件的本身编码―内部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻译时自动创建session
import:导入java的包
errorPage:当当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面
(2) include指令:页面包含指令
静态包含:<%@ include="要包含的页面"%>
静态包含是将所要包含的页面添加到该文件中,进行合并,重新编译运行,结果是最终只有一个文件。
动态包含:<jsp:include page="被包含的页面">
动态包含则是在第一个文件的java代码中添加include()并且重新进行编译,在被包含的页面运行后在添加到第一个页面中,结果是最终得到两个文件。
四.jsp的九大隐式对象,jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp脚本中可以直接使用这9个对象.
out-------javax.servlet.jsp.JspWriter------用于页面输出 out对象可以设置缓冲去大小,在page中有buffer属性,默认为8kb,如果设置成0,则会写道response缓冲区
request------javax.servlet.http.HttpServletRequest-------得到用户请求信息,
response-------javax.servlet.http.HttpServletResponse-------服务器向客户端的回应信息
config-------javax.servlet.ServletConfig-------服务器配置,可以取得初始化参数
session-------javax.servlet.http.HttpSession-------用来保存用户的信息
application-------javax.servlet.ServletContext-------所有用户的共享信息
page-------java.lang.Object-------指当前页面转换后的Servlet类的实例
pageContext-------javax.servlet.jsp.PageContext -------JSP的页面容器
exception-------java.lang.Throwable-------表示JSP页面所发生的异常,在错误页中才起作用
四大作用域
pageContext:作用于当前jsp页面
request:作用于一次请求当中
session:作用于一次会话当中
application:作用于整个web应用中(本质上就是ServletContext)
可以通过pageContext获得其他八大隐式对象pageContext.getRequest()
四.请求转发
<jsp:forward page="要转发的资源">