8.1、什么是JSP
Java Server Pages :Java服务器端页面,也和Servlet一样,用于动态Web技术!
最大的特点:
- 写JSP就想在写HTML
- 区别:
- HTML只给用户提供静态的数据
- JSP页面中可以嵌入JAVA代码,为用户提供动态数据
8.2、JSP原理
思路:JSP到底怎么执行的
-
代码层面没有任何问题
-
服务器内部工作
tomcat中有一个work目录
IDEA中使用tomcat的会在IDEA的tomcat中生产一个work目录
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会被转换为一个JAVA类
JSP本质上就是一个Servlet(相当于一个继承了HttpServlet的实现类,里面把对象都实例化了一遍)
只不过是简化了一些东西,只需要写页面部分就可以了
在JSP页面中,只要是JAVA代码就会原封不动的输出;
如果是HTML 代码,就会被转换成**out.write()**这样的格式,输出到前端
8.3、JSP基础语法
任何语言都有自己的语法,JAVA中有自己的语法。JSP作为java技术的一种应用,他拥有一些自己扩充的语法(了解即可),java所有语法他都支持
JSP表达式
<%--
JSP表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new java.util.Date()%>
jsp脚本片段
<%-- JSP脚本片段--%>
<%
int sum = 0;
for (int i = 1; i <100; i++) {
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
脚本片段的再实现
<%
int x = 10;
out.println(x);
%>
<p>这是jsp文档</p>
<%
int y = 30;
out.println(y);
%>
<%-- 在代码嵌入HTML元素--%>
<%
for (int i = 0; i < 6; i++) {
%>
<h1>sssssss <%=i%></h1>
<%
}
%>
JSP声明
<%!
static {
System.out.println("Loading Servlet");
}
private int globalVar = 0;
public void kuang(){
System.out.println("进入了方法");
}
%>
JSP声明:会被编译到JSP生产Java的类中!其他的(表达式,脚本片段。)就会被生成到jspService方法中。
在JSP中,嵌入java代码即可。
<%%>
<%=%>
<%!%>
<%--注释--%>
JSP的注释,不会在客户端显示,HTML就会!
8.4、JSP指令
<%@ page ... %>
<%@ include file="" %>
<%--jsp标签
jsp:include:拼接页面
--%>
<jsp:include page="jsp2.jsp"/>
扩展:定制错误页面
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
8.5、九大内置对象
- PageContext 存东西
- Request 存东西
- Response
- Session 存东西
- Application [ServletContext] 存东西
- config [ServletConfig]
- out
- page
- exception
作用域(低到高):page–>request–>session–>apllication
pageContext.setAttribute("name1","jjjj");//保存的数据只在一个页面中有效
request.setAttribute("name2","jjjjss");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","jjjjfff");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","jjjjsds");//保存的数据在服务器有效,从打开服务器到关闭服务器
request: 客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的
session:客户端向服务器发送请求,产生的数据,用户看完一会还要用,比如:购物车
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天记录数据;
8.6、JSP标签、JSTL标签、EL表达式
<!-- JSTL表达式的依赖-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- standard标签库-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
EL表达式: ${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
JSP标签
<%--相当于
http://localhost:8080/jsptag.jsp?name=xu&age=1
--%>
<jsp:forward page="jsptag2.jsp">
<jsp:param name="name" value="xu"/>
<jsp:param name="age" value="1"/>
</jsp:forward>
取出数据:
<%=request.getParameter("name")%>
<%=request.getParameter("age")%>
JSTL表达式
JSTL标签库的使用就是为了弥补HTML标签的不足;他自定义许多标签,可以供我们使用,标签的功能和Java代码一样!
格式化标签
SQL标签
XML标签
核心标签(掌握部分)
JSTL标签库使用步骤
- 引入对应的taglib
- 使用其中的方法
- 在Tomcat也需要引入jstl的包,否则就会报错:JSTL解析错误
详细用法,用的时候去网上查