文章目录
- 一、JSP
- 1.什么是JSP?
- 2.JSP运行原理
- 二、JSP基础语法和指令
- 1.JSP脚本元素
- 2.JSP注释
- 3.JSP指令
- 三、JSP对象及内置作用域
- 四、EL表达式、JSP标签、JSTL标签
- 1.EL表达式
- 2.JSP标签
一、JSP
1.什么是JSP?
JSP(Java Server Pages,Java 服务器页面)是建立在Servlet规范上的动态网页开发技术。
查看源码,可以看到JSP的本质就是Servlet。在内部定义了inIt()方法、service()方法、destroy()方法,浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
2.JSP运行原理
在项目启动,在浏览器访问xxx.jsp后可以在idea的控制台查看Using CATALINA_BASE:
生成xxx_jsp.java文件的位置,可以查看运行结束后的Servlet实例的内容。
在JSP页面中: 只要是Java代码就会原封不动的输出;如果是html代码,就会被转换为out.write("<!DOCTYPE html>\r\n");
格式输出到浏览器。
二、JSP基础语法和指令
1.JSP脚本元素
JSP脚本元素:是指嵌套在<%和%>之中的一条或多条Java程序代码。
JSP脚本元素主要包含如下三种类型:
① JSP Scriptlets
② JSP声明语句
③ JSP表达式
1.JSP Scriptlets
JSP Scriptles是一段代码段,用于使用Java实现一些复杂操作或控制。
<% 代码(变量、方法、方法、表达式等) %>
JSP Scriptles中声明的变量是JSP页面的局部变量,调用JSP Scriptles时,会为局部变量分配内存空间,调用结束后,释放局部变量占有的内存空间。
2.JSP声明语句
JSP声明语句用于声明变量和方法。
<%! 定义的变量或方法等 %>
会被编译到SP生成Java的类中!其他的,就会被生成到_jspService方法中!
JSP声明语句声明的都是成员方法、成员变量、静态方法、静态变量、静态代码块等,声明的方法整个JSP页面有效,在方法内声明的变量只在方法内部有效。
3.JSP表达式
JSP表达式用于将程序数据输出到客户端。
<%= JSP表达式 %>
2.JSP注释
JSP注释:
<%-- 注释信息 -->
html注释:
<!-- 注释信息 -->
JSP的注释信息在客户端浏览器无法查看,但是html注释信息在客户端浏览器可以查看。
3.JSP指令
1.page指令
对JSP页面的某些特征描述,如页面的编码方式、JSP页面采用的语言等。
<%@ page 属性名1="属性值1" 属性名2="属性值2" ...%>
常用属性:langusge、session、isErrorpage、errPage、contentType、pageEncoding。
2.include指令
在JSP页面静态包含一个文件,例如html文件、文本文件等。
<%@ include file="被包含的文件地址" %>
三、JSP对象及内置作用域
名称 | 描述 |
out | 用于页面输出 |
request | 得到用户请求信息 |
response | 服务器向客户端的回应信息 |
config | 服务器配置,可以获得初始化参数 |
session | 用来保存用户的信息 |
appliaction | 所有用户共享的信息 |
page | 提供当前页面转换后的Servlet类的实例 |
pageContext | JSP的页面容器 |
exception | 表示JSP页面所发生的异常,在错误页中才能起作用 |
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的;
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--内置对象--%>
<%
pageContext.setAttribute("name1","小王1号");//保存的数据只在当前页面中有效
request.setAttribute("name2","小王2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","小王3号");//保存的数据只在一次会话有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","小王4号");//保存的数据只在服务器中有效,从打服务器到关闭服务器
%>
<%
String name1 = (String) pageContext.findAttribute("name1");
String name2 = (String) pageContext.findAttribute("name2");
String name3 = (String) pageContext.findAttribute("name3");
String name4 = (String) pageContext.findAttribute("name4");
String name5 = (String) pageContext.findAttribute("name5");
%>
<%--使用EL表达式输出--%>
<%--作用域从低到高:page--->request--->session--->application --%>
<h1>取出的值是:</h1>
<hr>
<h2>${name1}</h2>
<h2>${name2}</h2>
<h2>${name3}</h2>
<h2>${name4}</h2>
<h2>${name5}</h2>
<h2><%=name5%></h2>
</body>
</html>
四、EL表达式、JSP标签、JSTL标签
1.EL表达式
EL表达式是Expression Language的缩写,是一种简单的数据访问语言。
${表达式}
作用:获取数据、执行运算、获取web开发的常用对象
2.JSP标签
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。