文章目录
JSP技术
一、概述
1、简介
- JSP是Java Server Pages(Java服务器端页面),也和Servlet一样,用于动态Web技术。
- 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet。
- JSP最终也会被转换成为一个Java类。
- JSP本质上就是一个Servlet。
2、最大特点
- 写JSP就像在写HTML
- 区别:
- HTML只给用户提供静态的数据
- JSP页面中可以嵌入Java代码,为用户提供动态数据
3、原理
-
代码层面没有任何问题
-
服务器内部工作
-
tomcat有一个work目录,会发现页面变成了Java程序
-
IDEA中使用tomcat的会在tomcat中生产一个word目录
-
4、创建与编写JSP文件
1、创建jsp文件
2、jsp文件命名
3、生成jsp文件
4、编写jsp文件
二、JSP基本语法
1、JSP脚本片段 <% %>
作用:编写Java代码,可以与HTML嵌套使用
<% %>
<%
int sum = 0;
for (int i = 0; i < 101; i++) {
sum += i;
}
out.println("<h1>sum="+sum+"</h1>");
%>
<%--在代码中嵌入HTML元素--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h1>Hello world <%=i%></h1>
<%
}
%>
2、JSP声明 <%! %>
作用:声明Java变量,方法。
<%! %>
<%!
static {
System.out.println("Loading Servlet!");
}
private int globalVar = 0;
public void sgz(){
System.out.println("进入了方法sgz");
}
%>
3、JSP表达式 <%= %>
作用:用来将程序的输出,输出到客户端
<%= %>
<%= a%>
<%= new java.util.Date()%>
4、JSP注释
4.1、隐藏注释
- JSP的注释不会在客户端显示
<%-- --%>
<%--这是JSP注释--%>
4.2、动态注释
- HTML会在客户端显示
<!-- -->
<!--这是HTML注释-->
5、JSP三大基本语法总结
<% %> JSP脚本片段
<%! %> JSP声明
<%= %> JSP表达式
三、JSP指令
1、pase指令
<%@ page 属性名1="" 属性名2="" ...... %> <%-- 页面功能 --%>
属性名 | 取值范围 | 作用 |
---|---|---|
language | java | 指定JSP页面所用的脚本语言,默认为Java |
import | 任何包名、类名 | 指定JSP页面使用的包,import是唯一可以声明多次的page指令;一个import属性可以引用多个类,中间用逗号隔开 |
pageEncoding | 当前页面 | 指定页面编码方式 |
contentType | 有效的文档类型 | 指定当前JSP页面的MIME类型和字符编码:text/html;text/plain;image/jpeg;image/gif;application/msword |
session | ture、false | 指定该JSP是否内置Session对象,默认为true |
isErrorPage | true、false | 指定该页面是否为错误处理页面,默认为false |
errorPage | 某个JSP页面的相对路径 | 指定一个错误页面,该JSP抛出异常会跳转到errorPage指定的页面,指定的页面需要isErrorPage属性为true |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.text.SimpleDateFormat,java.util.Date" %>
<%@ page session="false" %>
<%@ page errorPage="error/500.jsp" %>
<%@ page isErrorPage="true" %>
<%@ page contentType="image/jepg" %>
- web.xml配置错误页面,适配整个项目
<!--web.xml配置错误页面-->
<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>
2、include指令
- 将被包含文件内容原封不动地插入包含页中,被包含的文件最终会生成一个文件,变量和方法会冲突,可以互相调用,合并页面。
- 被引入的页面去掉 < body > < html > 标签
<%@ include file="被包含的文件地址"%> <%-- 会将两个页面合二为一,当前JSP页面中包含另一个JSP页面 --%>
- include1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>第一个页面</title>
</head>
<body>
<h1>第一个页面</h1>
<%
int a = 1;
int b = 2;
%>
</body>
</html>
- include2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>第二个页面</title>
</head>
<body>
<h1>第二个页面</h1>
<%= a + b%>
</body>
</html>
3、taglib指令
- 表示该页面中引用JSTL标签库,并指定标签的前缀,就可以通过前缀来引用标签库中的标签。
- prefix:指定标签的前缀,不能命名为:jsp、jspx、java、sun、servlet、sunw。
- uri:指定标签库文件的存放位置。
<%@ taglib %> <%-- 表示该页面中引用JSTL标签库 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
四、JSP标签(JSP动作元素)
1、include标签
- 当前页面引入其它的文件可以动态或静态,每个文件都是单独编译的,变量和方法不会冲突,不能互相调用,拼接页面。
<%--
<jsp:include: page="指定被引入文件的相对路径" flush="ture|false"/> 拼接页面,本质还是两个
--%>
- include1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>第一个页面</title>
</head>
<body>
<h1>第一个页面</h1>
<jsp:include page="include2.jsp" flush="true"/>
</body>
</html>
- include2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>第二个页面</title>
</head>
<body>
<h1>第二个页面</h1>
<%
out.print("这是被包含的页面");
%>
</body>
</html>
2、forward标签
- 将当前请求转发到其它Web资源(如HTML页面、JSP页面、Servlet等),执行请求转发之后,当前页面将不再执行,而是执行该元素指定的目标页面。
<jsp:forward page="请求转发资源的相对路径"/>
<jsp:forward page="include.jsp"/>
五、JSP9九内置对象(隐式对象)
名称 | 类型 | 作用 |
---|---|---|
pageContext | final javax.servlet.jsp.PageContext pageContext | 存东西,获取页面上下文 |
session | javax.servlet.http.HttpSession session | 存东西,用于保存用户的信息 |
application | final javax.servlet.ServletContext application | 存东西,所有用户的共享信息 |
request | javax.servlet.http.HttpServletRequest request | 存东西,请求 |
response | javax.servlet.http.HttpServletResponse response | 响应 |
config | final javax.servlet.ServletConfig config | 服务器配置,可以取得初始化参数 |
out | javax.servlet.jsp.JspWriter out | 页面输出 |
page | final java.lang.Object page | 不用了解,将当前页面转换后的servet类的实例 |
exception | java.lang.Throwable | JSP页面发生的异常,在错误页中才起作用(isErrorPage) |
<%
pageContext.setAttribute("name1","沈公子1号"); // 保存的数据只在一个页面中有效
request.setAttribute("name2","沈公子2号"); // 保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","沈公子3号"); // 保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器才失效
application.setAttribute("name4","沈公子4号"); // 保存的数据只在服务器中有效,从打开服务端到关闭服务器才失效
config.getInitParameter(); // 获取初始化参数
out.print(); // 页面输出
exception.getMessage() // JSP页面发生的异常,在错误页中才起作用(isErrorPage)
%>