《JSP》
<大纲>
了解JSP用途
了解JSP执行原理
掌握JSP基本语法
1.Servlet开发痛点
- 静态HTML与动态Java代码混合在一起,难以维护,调试困难
- Servlet利用out.println()语句输出,效率低下
2.JSP介绍
-
全称:Java Server Page,Java服务器页面
-
是JavaEE的功能模块,由Web服务器执行
-
作用:降低动态网页开发难度
特点
-
使用简单,学习简单
-
HTML与Java代码分离,降低开发难度
-
JSP的本质是Servlet
3.JSP的运行要求
- Tomcat
- 扩展名: .jsp
- JSP页面放在Web应用目录下面
4.执行过程
-
第一次请求:
当服务器上的一个JSP页面被第一次请求执行时,
服务器上的JSP引擎首先将JSP页面文件转译成一个**.java**文件——servlet,
并编译这个java文件生成**.class**的字节码文件,
然后执行字节码文件变成html代码响应客户端的请求。
-
再次请求:
JSP引擎将直接执行字节码文件来响应客户。
-
我们可以查看由JSP转译成的servelt,由此来加深多JSP的理解。存放JSP转译成的servlt的目录如下:
apache-tomcat-8.5.50\work\Catalina\localhost\yourwebapp\org\apache\jsp
5.JSP基本语法
-
JSP代码块
-
用于嵌入Java代码
-
语法:<% java代码 %>
<% System.out.println("Hello World"); %>
-
-
JSP声明构造块
-
用于声明变量或方法
-
语法:<%! 声明语句 %>
< %! public int add(int a,int b){return a+b;} %>
-
-
JSP输出指令
-
用于在页面显示java代码执行结果
-
语法:<%= java代码 %>
<%= "<b>" + name +" </b> " %>
-
-
JSP处理指令
-
用于提供JSP执行过程中的辅助信息
-
语法: < %@ jsp指令%>
例如: <%@ page import= "java.util.*" %>
-
JSP常用处理指令
<%@ page %> <%-- 定义当前JSP页面全局设置 --%> <%@ include %> <%-- 将其他JSP页面与当前JSP页面合并 --%> <%@ taglib %> <%-- 引入JSP标签库 --%>
-
6.JSP中注释的区别
- <%-- 注释 --%> JSP注释,被注释语句不做任何处理
- //或者/…/用于注释<%%> 中的java代码,被注释代码不执行
- HTML注释,被注释的语句不会被浏览器解释
7.JSP页面重用
-
为了不重复编写某一相同代码,JSP提供了页面重用
-
使用<%@ include %>
-
下面是一个示例:
news.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%@include file="/news-top.jsp" %> <% out.println("<h1>新闻标题</h1>"); out.println("<p>新闻标题</p>"); %> <%@include file="/news-food.jsp" %> </body> </html>
news-top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 要闻|推荐|财经|娱乐 </body> </html>
news-food.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <div>Copyright 1999-2018</div> </body> </html>