JSP(Java Server Page)
jsp本质就是一个servlet
将 Java 与 HTML 相结合
Jsp执行过程
- 客户端发出Request (请求);
- JSP Container 将JSP 转译成Servlet 的源代码;
- 将产生的Servlet 的源代码经过编译后,并加载到内存执行;
- 进入Servlet的执行过程;
jsp基本元素:
- 注释元素
- 模板元素
- 指令元素
- 脚本元素 (九大内建对象)
- 动作元素
jsp的注释:
Jsp文件中包含四种注释:
- 客户端显示的注释 :<!– 注释内容 -->
- <%-- comment --%> //JSP编译器会忽略
- <% /** 多行注释 **/ %> //查看.java文件可以看到
- <% //单行注释 %> //查看.java文件可以看到
三大指令
三种指令:
- page指令:设置jsp页面属性,导入包、设定字符集、设定错误页面、设定MIME类型和字符编码。
- include指令:包含其他页面使用,插入多个外部文件(JSP、HTML、Java程序、文本)
- taglib指令:引用jsp标签库使用,用来指明JSP页面内使用的JSP标签库,taglib指令有两个属性,uri为类库的地址,prefix为标签的前缀
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@include file="base.html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- 导入 jstl那句话 prefix 是前缀 uri 该标签库的地址 -->
page指令:
1.language属性:设置当前页面中编写JSP脚本使用的语言,默认值为java。
<%@page language=“java”%>
2.contentType属性:设置页面响应的MIME类型,通常被设置为text/html。
<%@page contentType=“text/html”%>
还可以设置JSP字符的编码:<%@page contentType=“text/html;charset=gb2312”%>
3.import属性:类似于Java中的import语句,用来向JSP文件中导入需要用到的包。
在page指令中可多次使用该属性来导入多个包。例如:
<%@page import="java.util.*" %>
<%@page import="java.text.*"%>
或者通过逗号间隔,来导入多个包。
<%@page import="java.util.*,java.text.*"%>
在JSP中已经默认导入了以下的包。
java.lang.*
java.servlet.*
java.servlet.jsp.*
java.servlet.http.*
4.extends属性:
5.session属性:该属性默认为ture,表示当前页面支持session。
6.buffer属性:(缓冲)
7.autoFlush属性:
8.isThreadSafe属性:
9.info属性:该属性可设置为任意字符串,如当前页面的作者或其他有关的页面信息。可通过Servlet.getServletInfo()方法来设置的字符串。例如:
<%@page info=“This is index.jsp!”%>
<%=this.getServletInfo()%>
访问页面后,显示如下结果: This is index.jsp!
10.errorPage属性和isErrorPage属性:
例如:若当前应用下包含index.jsp和error.jsp文件。
在index.jsp页面中进行数据类型的转换操作,其代码如下。
<%@page contentType="text/html;charset=utf-8" errorPage="error.jsp"%>
<%
String name="YXQ";
Integer.parseInt(name); //将字符串转化为int型
%>
上述代码将一个非数字格式的字符串转化为int型,因此将发生异常,最终进入errorPage属性指定的error.jsp页面显示错误信息。
在error.jsp页面中需要将isErrorPage属性设为true,然后才能调用exception对象输出错误信息。
error.jsp页面的代码如下。
<%page contentType="text/html;charset=gb2312" isErrorPage="true"%>
出现错误!错误如下:<br>
<%=exception.getMessage()%>
include指令:
<%@include file=“文件的绝对路径或相对路径”%>
使用include指令引用外部文件,可以减少代码的冗余。(如:页面公用)
<%@page contentType="text/html;charset=utf-8"%>
<table>
<tr><td colspan="2"><%include file="top.jsp"%></td></tr>
<tr>
<td><%@include file="side.jsp"%></td>
<td>内容显示</td>
</tr>
<tr><td colspan="2"><%@include file="top.jsp"%></tr>
</table>
taglib指令:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- 导入 jstl那句话 prefix 是前缀 uri 该标签库的地址 -->
后面使用标签用c开头,即:<c:
四大作用域:
JSP作用域
JSP页面中的对象,包括用户创建的和JSP内置对象都有一个范围属性。
- Application——具有应用程序作用域的对象,在应用程序存活期间均可用。
- Session——具有会话作用域的对象,在会话的存活期间可用。
- Request——具有请求作用域的对象,在所有处理同一个请求的页面内部内都可以访问。
- Page——具有页面作用域的对象,在当前页内可用
方法:setAttribute(String name,Object attribute)
getAttribute(String name)
作用域范围从大到小:
Application作用域:范围最大 ,他在所有的应用程序中都有效,也就是当服务器开始到服务器结束这段时间,application作用域中存储的数据都是有效的,同样可以通过setAttribute赋值和getAttribute取值。
可以被不同页面、不同用户共享
可以通过Allication内置对象或ServletContext
访问Allication作用域对象
Session作用域:范围仅次于Application作用域,他在当前会话中有效。当一个台电脑上的同一浏览器对服务器进行多次访问时,在这多次访问之间传递的信息就是session作用域的范围。它从浏览器发出第一个HTTP请求即可认为会话开始,但是会话结束的时间是不确定的,因为在浏览器关闭时并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以通过setMaxInactiveInterval(int)方法进行设置,或是通过invalidate()方法强制结束当前会话。
可以被同一客户端的请求访问
可以通过Session内置对象访问Session作用域对象
Request作用域:范围小于Session作用域,他在当前请求中有效,request可以通过setAttribute()方法实现页面中的信息传递,也可以通过forward()方法进行页面间的跳转,需要注意的是request是转发不是重定向,转发相对于浏览器来说是透明的,也就是无论页面如何跳转,地址栏上显示的依旧是最初的地址。
可以被forward()方法转向页面或者include()包含页面访问
可以通过request内置对象访问request作用域对象
page作用域:范围最小,他只在当前页面有效,也就是用户请求的页面有效,当当前页面关闭或转到其他页面时,page对象将在响应回馈给客户端后释放。
只能被创建对象的页面访问
只能通过pageContext内置对象访问page作用域对象
六大标签:
伪指令标签:<%@ %>
注释标签:<%-- --%>
声明标签:<%! %>
动作标签:<jsp:action Name/>
脚本标签:<% %>
表达式标签:<%= %>
九大内置对象: applicatin、config 、exception、out、page、pageContext、request、response、session
- request:请求对象, 类型:httpServletRequest
- response:响应对象 类型:httpServletResponse
- session:表示一次会话,在服务器端记录用户状信息的技术
- application:标识web应用上下文,类型:ServletContext,详情就看Servlet中的ServletContext的使用
- exception 表示发生异常对象,类型 Throwable,在上面我们介绍page指令中的一个errorPage属性时就有说到他
- page:page对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于this。
- config:标识Servlet配置,类型:ServletConfig,api跟Servlet中的ServletConfig对象是一样的,能获取该servlet的一些配置信息,能够获取ServletContext
- out:输出响应体 类型:JspWriter
- pageContext:表示 jsp页面上下文(jsp管理者) 类型:PageContext
注意:标记了颜色的对象就是JSP独有的,其他的都是Servlet中的老东西。
推荐链接:https://www.cnblogs.com/zhangyinhua/p/7637399.html#_label2
JavaBean:https://blog.csdn.net/chenchunlin526/article/details/69939337