JSP 基础
什么是 JSP?
Java Server Pages : Java 服务器端页面,也和 Servlet 一样,用于动态 Web 技术。
- 最大的特点:
- 写 JSP 就像在写 HTML;
- 区别:
- HTML 只给用户提供静态的数据;
- JSP 页面中可以嵌入 JAVA 代码,为用户提供动态数据;
JSP 基础语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>JavaWeb-02-Servlet</artifactId>
<groupId>com.github</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Jsp</artifactId>
<dependencies>
<!-- Servlet 依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!-- JSP 依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- 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>
</dependencies>
</project>
|
JSP 表达式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new java.util.Date()%>
</body>
</html>
|
jsp 脚本片段
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%--jsp脚本片段--%>
<%
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
</body>
</html>
|
示例 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
int x = 10;
out.println(x);
%>
<p>这是一个JSP文档</p>
<%
int num = 2;
out.println(num);
%>
<hr>
<%--在代码嵌入HTML元素--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h1>Hello,World <%=i%> </h1>
<%
}
%>
</body>
</html>
|
JSP 声明
- JSP 声明:会被编译到 JSP 生成 Java 的类中;其他的,就会被生成到
_jspService
方法中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%!
static {
System.out.println("Loading Servlet!");
}
private int globalVar = 0;
public void guo(){
System.out.println("进入了方法guo!");
}
%>
</body>
</html>
|
1
2
3
4
5
6
| <%%>
<%=%>
<%!%>
<%--注释--%>
|
JSP 指令
404 与 500 页面实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>jsp3</title>
</head>
<body>
<%-- @include会将两个页面合二为一 --%>
<%@include file="common/header.jsp"%>
<h1>网页主体</h1>
<%@include file="common/footer.jsp"%>
<hr>
<%--
jsp标签
jsp:include:拼接页面,本质还是三个
--%>
<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>
</body>
</html>
|
9 大内置对象
- PageContext 存东西
- Request 存东西
- Response
- Session 存东西
- Application 【SerlvetContext】 存东西
- config 【SerlvetConfig】
- out
- page ,不用了解
- exception
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--内置对象--%>
<%
pageContext.setAttribute("name1","天启1号"); // 保存的数据只在一个页面中有效
request.setAttribute("name2","天启2号"); // 保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","天启3号"); // 保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","天启4号"); // 保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
<%--
脚本片段中的代码,会被原封不动生成到.jsp.java
要求:这里面的代码,必须保证Java语法的正确性
--%>
<%
// 从pageContent取出,我们通过寻找的方式来
// 从底层到高层(作用域):
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表达式输出 ${} --%>
<h1>取出的值:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3> <%=name5%> </h3>
</body>
</html>
|
如果 EL 表达式不生效,请在 JSP 页面最上面加上:<%@page isELIgnored=“false” %>
JSP 标签.JSTL 标签.EL 表达式
EL 表达式
1
2
3
4
5
6
7
8
9
10
11
12
13
| <!-- 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>
|
JSP 标签
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>jspTag</title>
</head>
<body>
<h1>Tag1</h1>
<%--jsp:include--%>
<%--
http://localhost:8080/Jsp/jspTag.jsp?name=subeily&age=18
--%>
<jsp:forward page="/jspTag2.jsp">
<jsp:param name="name" value="subeiLY"/>
<jsp:param name="age" value="18"/>
</jsp:forward>
</body>
</html>
|
JSTL 表达式
- JSTL 标签库的使用就是为了弥补 HTML 标签的不足;它自定义许多标签,可以供我们使用,标签的功能和 Java 代码一样!