1、JSP的概念
JSP全名是 Java Server Pages,称为Java的动态服务器端(Web应用服务器,例如Tomcat)网页技术。
●JSP它也需要依赖Web容器,才能运行
●动态的网页技术,JSP可以根据请求展现不同的数据
●JSP文件的扩展名为.jsp
JSP其实就是把Java程序嵌入到类HTML中,页面称为JSP页面。
JSP中可以包含:
●HTML
●CSS
●JavaScript
●Java代码
JSP和Servlet
●JSP更擅长页面展示
●Servlet更擅长对请求业务逻辑的处理
●在JSP中是网页嵌套Java代码,而在Servlet中,是Java代码嵌套HTML
2、JSP的基本语法
2.1、JSP页面中的注释
JSP页面中的注释:
●JSP中存在,浏览器中可以看到注释的内容
●<%-- JSP特有的注释 --%>,只在JSP源代码中出现,浏览器中看不到
2.2、JSP中的代码片段
语法格式:<% Java代码片段 %>
作用:
●当请求JSP页面时,会执行<%%>中的Java代码
●拼接java逻辑代码,实现嵌套html标签
代码演示:
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<html>
<head>
<title>JSP入门</title></head>
<body>
<!--html中的注释-->
<%--JSP中的注释--%>
<%--作用1:请求页面时,执行Java代码--%>
<%
for (inti = 0; i < 5; i++) {
System.out.println("HelloJSP");
}
%>
<%--作用2:拼接java代码,实现嵌套html标签--%>
<%for (inti = 0; i < 5; i++) {%>
<h3>HelloJSP</h3>
<%}%>
</body>
</html>
2.3、 JSP中的表达式
JSP中的表达式,就是往页面中输出内容的。
语法格式:<%=Java表达式内容%>
作用:当请求该JSP页面时,会把<%=%>中的java表达式内容输出到JSP页面
代码演示:
<h3>JSP表达式</h3><hr/>
<%="zhangsan"%>
<%=100*100%>
<%=false%>
<%="lisi"+"zhangsan"%>
2.4、JSP中的声明
语法格式:<%! Java代码 %>
作用:用于定义全局变量和方法
<h3>JSP声明</h3>
<hr/>
<%!
intnum=100;
publicStringgetInfo() {
return "2020年10月19号";
}
%>
<%=num%>
<%=getInfo()%>
3、JSP页面执行的原理
通过上述的学习体验,JSP中既可以写HTML标签,也可以编写Java代码,它是如何实现的?
JSP页面执行的时候被转成.java文件,编译为.class
通过查看JSP的java源代码文件,可以得出结论:
●JSP也是一个Servlet,并且把JSP页面中相关的内容会添加到JSP的_jspService方法中,然后通过输出流把数据输出到页面中
●JSP中的_jspService方法中,还准备了很多其它对象,这些对象在JSP页面中都可以直接使用,这就是接下来要学习的隐式对象
4、JSP指令
指令就相当于是编译期间的命令
语法:<%@指令名 属性=“属性值” %>
JSP中常见的指令:
●page
●include
●taglib
4.1、 指令之page
基本格式:
<%@pagelanguage=“scriptlanguage”|
extends=“className”|
import=“importList”|
buffer=“none|kbsize”| --none:不缓冲,默认8k
session=“true|false”| --是否可以使用session,默认true
autoFlush=“true|false” --缓冲区是否自动清除,默认true
isThreadSafe=“true|false”| --默认false(永远不要设成true)
info=“infoText”|--任何字符
errorPage=“errorPageUrl”|
isErrorPage=“true|false”|
contentType=“contentTyepInfo”| pageEncoding=“字符集”%>
4.2、指令之include(静态包含)
include指令就是可以把指定的HTML或JSP页面中的内容,包含到当前页面。
<%@includefile=“目标url”%>
在JSP容器收到用户请求时,就会先把include指令所要包含的内容,拷贝到当前页面中,web容器再对当前JSP页面进行,转译和编译的工作,所以无论使用include指令包含jsp页面还是html页面,永远都只会生成一个java文件。
include指令不能给目标url传递数据
4.3、 指令之taglib(暂时了解)
taglib指令可以让JSP页面使用自定义标签
taglib指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀
利用标签的前缀去使用标签库表述文件中的标签
语法:
<%@tagliburi=“标签库表述符文件”prefix=“前缀名”%>
5、Action动作
JSP中的动作指的是在程序运行期间的一个行为(命令)
常见的动作包括:
●jsp:include
●jps:forward
5.1、 JSP动作之jsp:include
在JSP页面中,当执行到jsp:include动作时,目标页面才会被web容器进行转移编译,然后只把目标页面的结果输出到当前页面,会生成两个不同的java文件,而且使用include动作还可以给目标页面进行参数传递。
格式:
<jsp:includepage=“URLSpec”flush=“true”/>
<jsp:includepage=“URLSpec”flush=“true”>
<jsp:paramname=“ParamName”value=“paramValue”/>
</jsp:include>
include指令和动作的区别:
●include指令是在JSP页面的转译时期就将file属性所指定的文件内容嵌入,然后再编译执行;
●include动作只有在客户端请求时期如果被执行到才会被动态的载入。
●include指令不能带参数,include动作可以
5.2、 JSP动作之jsp:forward
用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL)
格式:
<jsp:forwardpage=“urlSpec”/>
<jsp:forwardpage=“urlSpec”>
<jsp:paramname=“paramName”value=“paramValue”/>
</jsp:forward>
< jsp:param>用于指定参数和其对应的值
< jsp:forward>的实质就是请求分派
6、 JSP九大隐式对象
JSP中预先定义了9个这样的对象,分别为:request、response、pageContext、session、application、out、config、page、exception
对象名 | 功能 | 类型 | 作用域 |
---|---|---|---|
request | 向客户端请求数据 | javax.servlet.ServletRequest | request |
response | 响应客户端的请求 | javax.servlet.ServletResponse | page |
pageContext | 页面作用域 | javax.servlet.jsp.PageContext | page |
session | 用来保存每个用户的信息,以跟踪用户的操作 | javax.servlet.http.HttpSession | Session |
application | 应用程序对象 | javax.servlet.ServletContext | application |
out | 向客户端输出数据 | javax.servlet.jsp.JspWriter | page |
config | 表示servlet配置对象 | javax.servlet.ServletConfig | page |
page | JSP实现类的实例,就是JSP本身的对象 | javax.lang.Object | page |
exception | 运行时异常 | java.lang.Throwable | page |
输出:out、response
作用域:pageContext、request、session、application
其它:page、config、exception