8.1、什么是jsp
java servlet Pages :java服务器页面,也和servlet一样,用于动态web技术
最大的特点:
- 写jsp就像在写html
- 区别:
- html只给用户提供静态的数据
- jsp页面中可以嵌入java代码,为用户提供动态数据
8.2、jsp原理
jsp到底怎么执行的?
- 代码层面没有问题,还是html代码。
- 服务器内部工作
- tomcat中有一个work目录;
- idea中使用tomcat的会在idea的tomcat中生产一个work目录
- 在idea的tomcat中变成了.class的java文件
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问servlet
jsp最终也会被转换成一个java类
jsp本质上就是一个servlet
在jsp页面中:
-
只要是java代码就会原封不动的输出
-
如果是html代码,就会被转换为
out.write("name:/r/n ")
这样的格式,输出到前端
8.3、jsp基础语法
任何语言都有自己的语法,java中有,jsp作为java技术的一种应用,它用有一些自己扩充的语法(了解,知道即可),java所有的语法都支持。
jsp表达式:
<%--jsp表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new Date()%>
jsp片段:
<%-- jsp脚本片段--%>
<%
int num = 0;
for (int i = 1; i <= 100; i++) {
num+=i;
}
out.write("<h1>num=" + num+"</h1>");
%>
脚本片段的再实现:
<%
int x = 10;
out.print(x);
%>
<p>这是一个jsp文件文档</p>
<%
int y = 2;
out.print(y);
%>
<%-- 在代码中嵌入html元素--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h1>hello world<%=i%></h1>
<%
}
%>
jsp声明:会被编译到jsp生成的java类中,其他的就会被生成到_jspServlet方法中!
在jsp中嵌入java代码即可!
<%%> 片段
<%=%> 表达式
<%!%> 全局(属性或者方法)
<%-- --%> 注释
jsp的注释,不会在客户端显示,html就会!
8.4、jsp指令
<%@page ...%>>
<%@include file="" %>>
<jsp:include page="/"> 这个页面前面要加上/,include则不用
@include 会将两个页面合二为一;
jsp:include :拼接页面,本质还是三个
8.5、九大内置对象
- pageContext存东西
- Requst 存东西
- Response
- Session 存东西
- Application [ServletContext] 存东西
- config [ServletConfig]
- out
- page不用连接
- exception
<%
pageContext.setAttribute("name1","彩虹1号");//保存的数据只在一个页面中存放
request.setAttribute("name2","彩虹2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","彩虹3号");//保存的数据只在一次会话中有效,从打开服务器到关闭服务器
application.setAttribute("name4","彩虹4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻;
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;
8.6、jsp标签、jstl标签、EL表达式
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
EL表达式: ${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
jsp标签:
<%--<jsp:include page=""> --%>
<%--
http://localhost:8080/javaweb_jsp_war_exploded/jsptag.jsp
--%>
<jsp:forward page="/jsptage2.jsp">
<jsp:param name="name" value="caihong"></jsp:param>
<jsp:param name="age" value="12"></jsp:param>
</jsp:forward>
jstl表达式:
jstl标签库的使用就是为了弥补html标签的不足,他自定义了许多标签可以供我们使用,标签的功能和java代码一样!
核心标签:
jstl标签使用步骤:
- 引入对应的taglib
- 使用其中的方法
- 在tomcat也需要导入jstl的包,否则会保存,jstl解析错误