1.1 基本语法
JSP模版:
JSP页面中的HTML代码就是JSP的模版
JSP表达式:
语法:
<%=变量或者表达式%>
作用:
向浏览器输出变量的值或者表达式计算的结果
注意:
1. 表达式的原理就是翻译成out.print("变量");通过这个方法,向浏览器输出数据
2. 表达式后面不需要加上分号
JSP脚本:
语法:
<%Java代码%>
作用:
执行Java代码
注意:
1. 在JSP脚本中写的Java代码会原封不动的拷贝到_jspService方法中
执行
2. 在JSP脚本中不能写Java函数的定义 【重点!!!】
3. 这里定义的变量是函数内部的普通的局部变量
JSP的声明:
语法:
<%! 变量或者方法定义 %>
作用:
在JSP代码中定义变量和Java的函数
注意:
在JSP声明中定义变量和方法都会变成成员变量和成员方法
JSP的注释
语法:
<%-- --%>
注意:
要求全部使用JSP的注释,没有其他的可以使用
1.2 JSP的三大指令
include指令:
语法:
<%@include file="path"%>
作用:
在当前页面中包含其他的页面
注意:
1. 原理是将要包含的JSP文件,里面的内容翻译到包含的页面当
中翻译生产Java,编译成class文件,在运行,这种包含叫做
【静态包含】(源代码包含)
2. 如果使用了静态包含,那么在包含页面中不需要出现html
head body标签
page
作用:
<%@ page
language="java" -- 告诉服务器用什么语言来解析JSP文件
import="java.util.*" --告诉服务器Java文件使用什么包
如果出现了多个包,用逗号隔开
pageEncoding="utf-8" --告诉服务器用什么编码解析JSP文件
在以后开发中,只要这是了pageEncoding为UTF-8 就可以解决中文乱码问题
errorPage="error.jsp"
isErrorPage="false/true"
buffer="8kb" -- 缓冲区
session="true/false"
isELIgnored="true/false"
%>
taglib 【稍等片刻】
1.3 JSP的内置对象(重点重点重点~~~!!!!!!!)
什么是JSP的内置对象;
在JSP开发中会频繁的使用一些对象,例如request和response,如果
每一个对象都需要JSP来创建,很麻烦!!!Sun公司在设计JSP的时候
,在所有的JSP文件里内置了8个对象,而且这些对象是在JSP编译的时
候自动加载。程序猿只要会用就行
这些对象就是内置对象
常用的内置对象;
内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config HtttpServletConfig
application HttpServletContext
session HttpSession
exception Throwable
page this
out JspWriter
pageContext pageContext //大型的工具
域对象
Out对象:
out对象类型是 JspWriter类型,带有缓冲去的PrintWriter
PrintWriter:
write("内容") 直接写入到浏览器
JspWriter:
out.write("内容") 写入到缓冲区
当满足一下条件之一,缓冲区内容才会写入到浏览器:
1. 缓冲区满了
2. 刷新缓冲区
3. 关闭缓冲区 【特殊】
4. 执行JSP文件结束
//查看缓冲区的大小
System.out.println("当前缓冲区的大小:" + out.getBufferSize());
//查看缓冲区的剩余空间
System.out.println("当前缓冲区的剩余大小:" + out.getRemaining());
注意: 在JSP中,所有的HTML代码都是通过out对象,借助于
缓冲区输出的
PageContext [重点]
pageContext对象是相对于JSP的上下文,也就是可以理解为
JSP的运行环境
1. 可以获取其他的八个内置对象
public class _01_hello_jsp {
public void _jspService(requeset, response) {
内置的八个对象可以看做是_jspService的局部变量
HttpSession session...
....... config
...... out
...... appliction
....
JSP帮我们做了一件事情,把这8个常用的内置对象,
封装到pageContext里面
}
public void method1(PageContext pageContext) {
JspWriter out = pageContext.getOut();
HttpServletRequeset requeset = pageContext.getRequest()
}
}
[注]
当时用自定义标签的时候,PageContext对象会频繁使用!!!!
域对象
PageContext pageContext -- JSP page域
ServletContext application -- WebAPP 域
HttpSession session -- Session 域
HttpRequest requeset -- 请求域
作用:
保存数据和获取数据,并且实现数据的【共享】
保存数据方法:
1. 默认保存到page域
pageContext.setAttribute("name", "value");
2. 保存到指定的域对象中
pageContext.setAttribute("name", "value", 域范围常量)
获取数据:
1. 默认从page域拿
pageContext.getAttribute("name");
2. 从其他域中取出数据
pageContext.getAttribute("name");
域范围常量标记:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext.SESSION_SCOPE
PageContext.APPLICATION_SCOPE
总结:
page域: 只能是在当前的页面中有效
request域: 只能是同一个请求的情况下有效
session域: 只能是同一个会话中使用的session才有效
context域: 同一个webApp有效 (全局的)
二. EL表达式
JSP的核心语法是 JSP表达式<%= 内容 %> JSP脚本 <% 内容 (Java) %>
JSP原则:尽量在JSP代码中少写甚至于不写Java代码
EL表达式来替换 JSP表达式
EL表达式的功能:
向浏览器输出【域对象】中的变量值或者表达式计算的结果
语法:
${变量或者表达式}
输出对象
Student
输出集合:
List 和 map
EL表达式计算
6. JSP标签:
JSP标签的作用:
替换JSP脚本 (Java程序而且定义的变量和函数都是成员内容)
1) 流程判断
2) 跳转页面
3) JSP脚本完成的都可以用JSP标签来完成
JSP标签的分类:
1. 内置标签(动作标签):
2. JSTL标签:
3. 自定义标签:
动作标签:
转发: <jsp:forward />
参数: <jsp:param />
包含: <jsp:include />//动态包含
[注意]
包含:
包含与被包含的界面都会通过Tomcat翻译成Java文件,合并到一起
在编译成class文件,【动态包含】
1. 语法不同
静态 <%@include file="要包含的页面"%>
动态 <jsp:include page="要包含的页面">
2. 参数传递
静态包含不能向包含的页面中传递参数
动态包含可以向包含的页面中传递参数
3. 原理不同
静态包含:先合并在翻译
动态包含:先翻译在合并
JSTL
JSP完成去前后台的数据交互的 通讯录管理系统
1. 项目的架构
2. 前端JSP页面使用
3. Servlet和JSP页面的分工
4. 数据的传递
JSP模版:
JSP页面中的HTML代码就是JSP的模版
JSP表达式:
语法:
<%=变量或者表达式%>
作用:
向浏览器输出变量的值或者表达式计算的结果
注意:
1. 表达式的原理就是翻译成out.print("变量");通过这个方法,向浏览器输出数据
2. 表达式后面不需要加上分号
JSP脚本:
语法:
<%Java代码%>
作用:
执行Java代码
注意:
1. 在JSP脚本中写的Java代码会原封不动的拷贝到_jspService方法中
执行
2. 在JSP脚本中不能写Java函数的定义 【重点!!!】
3. 这里定义的变量是函数内部的普通的局部变量
JSP的声明:
语法:
<%! 变量或者方法定义 %>
作用:
在JSP代码中定义变量和Java的函数
注意:
在JSP声明中定义变量和方法都会变成成员变量和成员方法
JSP的注释
语法:
<%-- --%>
注意:
要求全部使用JSP的注释,没有其他的可以使用
1.2 JSP的三大指令
include指令:
语法:
<%@include file="path"%>
作用:
在当前页面中包含其他的页面
注意:
1. 原理是将要包含的JSP文件,里面的内容翻译到包含的页面当
中翻译生产Java,编译成class文件,在运行,这种包含叫做
【静态包含】(源代码包含)
2. 如果使用了静态包含,那么在包含页面中不需要出现html
head body标签
page
作用:
<%@ page
language="java" -- 告诉服务器用什么语言来解析JSP文件
import="java.util.*" --告诉服务器Java文件使用什么包
如果出现了多个包,用逗号隔开
pageEncoding="utf-8" --告诉服务器用什么编码解析JSP文件
在以后开发中,只要这是了pageEncoding为UTF-8 就可以解决中文乱码问题
errorPage="error.jsp"
isErrorPage="false/true"
buffer="8kb" -- 缓冲区
session="true/false"
isELIgnored="true/false"
%>
taglib 【稍等片刻】
1.3 JSP的内置对象(重点重点重点~~~!!!!!!!)
什么是JSP的内置对象;
在JSP开发中会频繁的使用一些对象,例如request和response,如果
每一个对象都需要JSP来创建,很麻烦!!!Sun公司在设计JSP的时候
,在所有的JSP文件里内置了8个对象,而且这些对象是在JSP编译的时
候自动加载。程序猿只要会用就行
这些对象就是内置对象
常用的内置对象;
内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config HtttpServletConfig
application HttpServletContext
session HttpSession
exception Throwable
page this
out JspWriter
pageContext pageContext //大型的工具
域对象
Out对象:
out对象类型是 JspWriter类型,带有缓冲去的PrintWriter
PrintWriter:
write("内容") 直接写入到浏览器
JspWriter:
out.write("内容") 写入到缓冲区
当满足一下条件之一,缓冲区内容才会写入到浏览器:
1. 缓冲区满了
2. 刷新缓冲区
3. 关闭缓冲区 【特殊】
4. 执行JSP文件结束
//查看缓冲区的大小
System.out.println("当前缓冲区的大小:" + out.getBufferSize());
//查看缓冲区的剩余空间
System.out.println("当前缓冲区的剩余大小:" + out.getRemaining());
注意: 在JSP中,所有的HTML代码都是通过out对象,借助于
缓冲区输出的
PageContext [重点]
pageContext对象是相对于JSP的上下文,也就是可以理解为
JSP的运行环境
1. 可以获取其他的八个内置对象
public class _01_hello_jsp {
public void _jspService(requeset, response) {
内置的八个对象可以看做是_jspService的局部变量
HttpSession session...
....... config
...... out
...... appliction
....
JSP帮我们做了一件事情,把这8个常用的内置对象,
封装到pageContext里面
}
public void method1(PageContext pageContext) {
JspWriter out = pageContext.getOut();
HttpServletRequeset requeset = pageContext.getRequest()
}
}
[注]
当时用自定义标签的时候,PageContext对象会频繁使用!!!!
域对象
PageContext pageContext -- JSP page域
ServletContext application -- WebAPP 域
HttpSession session -- Session 域
HttpRequest requeset -- 请求域
作用:
保存数据和获取数据,并且实现数据的【共享】
保存数据方法:
1. 默认保存到page域
pageContext.setAttribute("name", "value");
2. 保存到指定的域对象中
pageContext.setAttribute("name", "value", 域范围常量)
获取数据:
1. 默认从page域拿
pageContext.getAttribute("name");
2. 从其他域中取出数据
pageContext.getAttribute("name");
域范围常量标记:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext.SESSION_SCOPE
PageContext.APPLICATION_SCOPE
总结:
page域: 只能是在当前的页面中有效
request域: 只能是同一个请求的情况下有效
session域: 只能是同一个会话中使用的session才有效
context域: 同一个webApp有效 (全局的)
二. EL表达式
JSP的核心语法是 JSP表达式<%= 内容 %> JSP脚本 <% 内容 (Java) %>
JSP原则:尽量在JSP代码中少写甚至于不写Java代码
EL表达式来替换 JSP表达式
EL表达式的功能:
向浏览器输出【域对象】中的变量值或者表达式计算的结果
语法:
${变量或者表达式}
输出对象
Student
输出集合:
List 和 map
EL表达式计算
6. JSP标签:
JSP标签的作用:
替换JSP脚本 (Java程序而且定义的变量和函数都是成员内容)
1) 流程判断
2) 跳转页面
3) JSP脚本完成的都可以用JSP标签来完成
JSP标签的分类:
1. 内置标签(动作标签):
2. JSTL标签:
3. 自定义标签:
动作标签:
转发: <jsp:forward />
参数: <jsp:param />
包含: <jsp:include />//动态包含
[注意]
包含:
包含与被包含的界面都会通过Tomcat翻译成Java文件,合并到一起
在编译成class文件,【动态包含】
1. 语法不同
静态 <%@include file="要包含的页面"%>
动态 <jsp:include page="要包含的页面">
2. 参数传递
静态包含不能向包含的页面中传递参数
动态包含可以向包含的页面中传递参数
3. 原理不同
静态包含:先合并在翻译
动态包含:先翻译在合并
JSTL
JSP完成去前后台的数据交互的 通讯录管理系统
1. 项目的架构
2. 前端JSP页面使用
3. Servlet和JSP页面的分工
4. 数据的传递