前端进阶学习 -- 第三章 -- JavaWeb核心/JSP核心技术
博客说明
文章内容输出来源:拉勾教育Java就业急训营
JSP的概念
- JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为
xxx.jsp。 - 与Servlet不同
Servlet以Java标记为主,然后内嵌HTML代码段
JSP文件以HTML标记为主,然后内嵌Java代码段,用于处理动态内容。 - JSP用于弥补Servlet不能/不便于发送大量内容的不足
JSP的示例
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello Time</title>
</head>
<body>
现在的时间是:<%= new Date()%>
</body>
</html>
JSP与Servlet的关系
创建JSP
JSP语法结构(熟悉)
- 1.声明区
- 2.程序代码区
- 3.表达式
- 4.注释
- 5.指令和动作
- 6.内置对象
声明区
说明:可以定义全局变量、方法、类。
基本语法:<%! %>
<%!
int i;
public void setName(){… …}
%>
程序代码区
说明:可以定义局部变量以及放入任何的Java程序代码。
基本语法:<%程序代码区%>
<%
int j;
for (int k=0; k<10; k++) {
… …
}
%>
表达式
说明:可以输出一个变量或一个具体内容,但=后面必须是字符串变量或者可以被转换成字符串的
表达式。
注意:不需要以;结束,只有一行
基本语法:<%=… …%>
<%=“hello world”%>
<%=i+1%>
案例题目
使用for循环输出一个html语言的表格,具体表头如下:
id | name | age | salary |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 |
… | … | … | … |
5 | 5 | 5 | 5 |
<%--
Created by IntelliJ IDEA.
User: ganmaoyu
Date: 2021/3/31
Time: 16:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>实现表格的输出</title>
</head>
<body>
<table>
<tr>
<td>id</td>
<td>name</td>
<td>age</td>
<td>salary</td>
</tr>
<%-- 使用for循环打印数据 --%>
<%
for (int i=1;i<6;i++){ ←循环头
%>
<tr>
<td> <%=i%> </td> ←循环体
<td> <%=i%> </td>
<td> <%=i%> </td>
<td> <%=i%> </td>
</tr>
<%
} ←结尾括号
%>
</table>
</body>
</html>
使用上面三个语法简单使用一下
<%--
Created by IntelliJ IDEA.
User: ganmaoyu
Date: 2021/3/31
Time: 16:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试变量的声明与打印</title>
<%-- 声明区:全局变量 --%>
<%!
int ia; // 这是一个全局变量
public void show() {
System.out.println("这里是全局方法...");
}
public class MyClass {
{
System.out.println("这是全局类...");
}
}
%>
<%-- 程序代码区 --%>
<%
int ib = 20; //这个一个局部变量
for (int i = 0; i < ib; i++) {
System.out.println("程序代码区可以定义局部变量以及放入任何的Java程序代码");
}
%>
</head>
<body>
<%--表达式--%>
<%= ia + 1%>
<%= ib%>
<%= "这里也可以输出文本"%>
</body>
</html>
注释
格式:
<!-- …… --> HTML文件的注释,浏览器可以查看到
<%-- …… --%> JSP文件的注释,浏览器看不到
<%// …… %> Java语言中的单行注释,浏览器看不到
<%/* …… */%> Java语言中的多行注释,浏览器看不到
注释的内容不会被执行
指令和动作
- 指令格式:
<%@指令 属性=“属性值”%> - 指令的属性可以设定多个。
- JSP常用指令有:page、taglib、include。
page指令
page指令用于导包和设置一些页面属性,常用属性如下:
<%@ page import="java.util.List" %>
<%@ page import="java.util.LinkedList" %>
<%--
Created by IntelliJ IDEA.
User: ganmaoyu
Date: 2021/3/31
Time: 16:53
To change this template use File | Settings | File Templates.
--%>
<%-- 测试page指令中的contentType、language、pageEncoding --%>
<%--@ page contentType="text/html;charset=UTF-8" language="java" --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>page指令的使用</title>
</head>
<body>
<%
<%-- 测试page指令中的import属性:效果最上面的import --%>
List<String> list = new LinkedList<String>();
%>
</body>
</html>
taglib指令
taglib指令用来扩展JSP程序的标签元素,引入其他功能的标签库文件。
include指令
- include指令用于引入另一个JSP程序或HTML文件等,格式如下:
静态:↑ - JSP引擎会在JSP文件的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工
作。
jsp:include/jsp:param(动态)
- jsp:include动作用于引入另一个JSP程序或HTML文件等。
- 执行到include时,被include的文件才会被编译。
- 如果include的是jsp文件,那它不会被转换成Servlet文件。
<%-- 表示包含或引入head.jsp文件 include指令的方式 静态包含--%>
<%@ include file="head.jsp"%>
<%-- include动作的方式 动态包含 推荐 --%>
<jsp:include page="head.jsp"></jsp:include>
include指令和include动作的区别
- include指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入再编译执行(静态包
含)。 - include动作在转换时期是不会被编译的,只有在客户端请求时期被执行到才会被动态的编译载入
(动态包含,推荐)。
JSP文件转发:jsp:forward/jsp:param
forward动作用于在JSP中实现转发,将请求转发到另一个指定的JSP程序或者Servlet中处理。
<%--
Created by IntelliJ IDEA.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP页面的转发实现</title>
</head>
<body>
<%-- target.jsp:转发的目标文件 --%>
<jsp:forward page="target.jsp">
<jsp:param name="name" value="zhangfei"/>
</jsp:forward>
</body>
</html>
JSP内置对象(重点)
- 在JSP程序中有9个内置对象由容器为用户进行实例化,程序员可以不用定义就直接使用这些变量。
- 在JSP转换成Servlet后,会自动追加这些变量的定义,使用内置对象可以简化JSP的开发。