jsp
-
为什么学习jsp
-
-
jsp是什么
-
jsp原理:
-
当第一次访问jsp页面时,会向一个servlet容器(tomcat等)发出请求,servlet容器先要把 jsp页面转化为servlet代码(.java),再编译成.class 文件 再进行调用。当再次访问jsp页面时 跳过翻译和编译的过程 直接调用
-
-
-
HttpJspBase继承HttpServlet,最终还是继承了Servlet接口
-
HttpJspBate在apache-tomcat-9.0.13\work\Catalina\localhost\项目名\org\apache\jsp中
-
init()
-
Servlet()
-
destroy()
-
-
jsp中脚本代码
-
<%Java代码%>
-
局部变量(定义在类里面),就是简单的Java代码
-
-
<%= Java变量或表达式 %>
-
在网页端输出结果
-
-
<%! %>
-
成员变量(定义在类里面),
-
-
-
jsp注释:
-
用户(浏览器)可以看见的
-
<!-- --> 在jsp编译后的源码中
-
-
用户(浏览器)看不见的
-
<%-- --%> jsp开发的注释最安全,在jsp编译后的源码中也找不到
-
// /**/ Java注释,在jsp编译后的源码中原样输出
-
-
-
Tomcat 下的 conf -> web.xml文件 根据 jsp 找到 JspServlet类
-
当用户在浏览器访问jsp文件时,请求会经过Tomcat进行响应,
-
Tomcat根据jsp文件找到JspServlet进行翻译
-
将翻译之后的文件存在work目录中
-
然后生成同名的带有下划线的文件(xx.jsp.class 和xx.jsp.java)
-
-
jsp指令
-
page指令( 属性最多的指令) <%@ page指令( language="java"只能使用Java语言, ContentType=""等价于response.setContentType(""), pageEncoding(用来控制整个jsp文件的编码格式,在jsp文件右键的属性中也可以修改 ) %>
-
告诉jsp,在页面中需要做什么事情
-
属性:
-
language="java"只能使用Java语言
-
ContentType=""等价于response.setContentType("")
-
pageEncoding 用来控制整个jsp文件的编码格式,在jsp文件右键的属性中也可以修改
-
session (值为true 或 false)
-
extends
-
errorPage:当发生错误之后 跳转到这个页面,使用是的是转发,一般用于网站的找不到或者出错提示
-
isErrorPage:这是设置出错 处理页面,当为true时表示该页面是处理出错的页面
-
-
-
include指令
-
静态包含 <%@ include file =" header.jsp "%>
-
动态包含: < jsp :include page= "header.jsp" ></ jsp :include >
-
动态包含和静态包含区别:
-
动态包含:
-
在源码中使用include方法分别引入两个页面
-
-
静态包含:
-
在源码中直接将两个页面翻译,然后拼接在一起
-
-
-
-
-
taglib指令
-
-
jsp内置(隐式对象)
-
不需要自己创建就可以使用;通过开关可以使用的某些属性
-
jsp的9个内置对象
-
request
-
-
response
-
-
pageContext Context(上下文 上下文环境)
-
pageContext作用域范围
-
在当前页面有效
-
在pageContext中,通过scope参数(参数值可以为:pageContext.REQUEST_SCOPE\pageContext.SESSION_SCOPE\pageContext. APPLICATION_SCOPE ......)设置pageContext作用域范围大小
-
作用域范围:
-
pageContext(当前页面范围) < request(一次请求)< session(一次会话) < application(也就是servletContext作用域,范围是整个web应用内,数据可以共享)
-
-
-
pageContext对象动态获取项目名称:
-
使用了API:${ pageContext.request.contextPath }
-
-
获取作用域的值
-
pageContext.getAttribute( "name" );
-
如果在获取域的值时,后面不添加任何作用域范围的话,默认情况下找到就是 默认的pageContext域
-
pageContext.getAttribute( "name" ,pageContext. REQUEST_SCOPE ); 获取指定作用域的值
-
-
pageContext.findAttribute( "name" ); 使用这个方法,不需要指定作用域,会先从最小的作用域中找值,如果没有,那就向较大的域找,直到找到,如果最后都没有找到就返回null
-
-
-
session
-
用来保存用户信息
-
-
application
-
所有用户的共享信息
-
-
exception(该对象必须在jsp中设置isErrorPage=“true”)
-
-
config
-
服务器配置,获得初始化参数
-
-
out
-
用于页面输出(往客户端输出内容)
-
response.getWriter.write()是存在buffer缓冲器中,而使用简单的输出(类似于System.println.out())是存在out缓冲区中。
-
默认情况下out缓冲区大小为8kb,jsp只访问buffer缓冲区中的内容,系统会将out缓冲区中的内容移到buffer缓冲区中(由于buffer缓冲区中已经有内容,所以out缓冲区中的内容会排在buffer缓冲区后面)。
-
可以使用jsp属性:buffer="0kb"来关闭buffer缓冲区
-
-
page
-
指当前页面转换后的servlet类的实例
-
-
-