Jsp全称Java Server Pages,也就是在咱们JavaWeb中的动态页面。css
html
Jsp其本质就是一个Servlet。Servlet能作的事情JSP都能作。java
Jsp必须运行在服务器中,不能直接使用浏览器打开。web
数据库
apache
Jsp是动态页面,html是静态页面 浏览器
动态页面 | 静态页面 | |
---|---|---|
运行原理 | 经过服务器解析后,将数据在浏览器中显示 | 直接在浏览器中解析运行 |
维护成本 | 较低,能够修改后台数据,进而影响页面中的数据 | 较高,必须将修改后的页面覆盖原页面 |
数据库 | 能够链接数据库 | 不可链接数据库 |
访问速度 | 较慢 | 较快 |
书写代码 | 能够书写java代码 |
注意事项tomcat
一、jsp页面是一个相似于html的一个页面。 jsp直接存放到WebContent目录下,和html同样访问jsp的时候,也和访问html同样服务器
cookie
若是文件未改变,不会被翻译和编译
指令
<% int i = 0;%>
<%=i%>
html:<!-- -->
JSP注释 | Java注释 | HTML注释 | |
---|---|---|---|
JSP页面 | 可见 | 可见 | 可见 |
Java代码 | 不可见 | 可见 | 可见 |
浏览器 | 不可见 | 不可见 |
<%@ 指令名 属性=属性值 属性2=属性值2 ... %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
language:语言,值为java且仅java。
contentType:与response.setContentType()做用一致,设置浏览器编码。
pageEncoding:设置Jsp页面的编码字符集。
import:导包
isErrorPage:设置当前页面是否为错误页面,默认值"false"。
true:设置当前页面为错误页面,可使用exception内置对象,捕获异常 。
false:设置当前页面不是错误页面,不可使用exception内置对象,捕获异常 。
<%@include file="被包含文件的路径" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix用来指定前缀名,咱们经过该名来使用JSTL。
uri至关于库的惟一标识,由于JSTL由多个不一样的库组成,使用该属性指定要导入哪一个库。
JSP动做标签与HTML标签不一样,HTML标签由浏览器来解析,而JSP动做标签须要服务器(Tomcat)来运行。
做用:在页面中用于转发操做
<jsp:forward page="target.jsp"></jsp:forward>
转发子标签;在转发时设置请求参数,经过request.getParameter()在目标页面获取请求参数。
<jsp:forward page="target.jsp"> <jsp:param value="paramValue" name="paramName"/> </jsp:forward>
注意:若是转发动做标签不须要设置请求参数,该标签开始与结束标签内部,不容许书写任何内容,(包括空格)
做用:动态包含,将其余页面包含到当前页面中。
<jsp:include page="target.jsp"></jsp:include>
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "target.jsp", out, false);
@include指令 | jsp:include标签 | |
---|---|---|
特色 | 静态包含 | 动态包含 |
语法的基本形式 | <%@ include file=”…”%> | <jsp:include page=”…”/> |
包含动做发生的时机 | 翻译期间 | 请求期间 |
是否生成java文件 | 不生成 | 生成 |
合并方式 | 代码复制 | 合并运行结果 |
包含的内容 | 文件实际内容 | 页面输出结果 |
代码冲突 | 有可能 | 不可能 |
编译次数 | 1 | 包含的文件 + 1 |
适用范围 | 适用包含纯静态内容(CSS,HTML,JS),或没有很是耗时操做。或大量java代码的jsp |
JSP容器为每一个页面提供的Java对象,开发者能够直接使用它们而不用显式声明
定义:表明页面域对象,用来表明整个JSP页面。
做用:
页面域对象
九大隐式对象的“大哥”,能够直接调用其余八大隐式对象。
定义:表明浏览器向服务器发送的请求报文,该对象由服务器建立,最终以参数的形式发送到doGet()和doPost()方法中。
每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来表明这个请求。request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
做用(详见Servlet中request对象)
获取请求参数
获取url地址参数
请求转发
向请求域中保存数据(获取数据&移除数据)
获取请求头信息
定义:表明浏览器与服务器之间的会话。
做用
会话域对象,
session对象用来跟踪在各个客户端请求间的会话。
定义:Servlet上下文,表明当前web应用。
Web容器在启动时,它会为每一个Web应用程序都建立一个惟一对应的ServletContext对象,意思是Servlet上下文,表明当前Web应用。
做用
获取项目的上下文路径(带/的项目名):getContextPath()
获取虚拟路径所映射的本地真实路径:getRealPath(String path)
4. 获取Web应用初始化参数:application.getInitParameter("ParamName");
类型:Object
做用:this,当前类对象。
类型:HttpServletResponse
定义:表明服务器向浏览器发送的响应报文,该对象由服务器建立,最终以参数的形式发送到doGet()和doPost()方法中。
做用:
向页面(响应体)中响应数据,数据包括文本、Html等。
重定向
设置响应头信息
在Servlet中获取方式:doGet()或doPost()中直接使用
类型:ServletConfig
定义:表明当前Servlet的配置信息,每个Servlet都有一个惟一对应的ServletConfig对象。
做用:
获取Servlet名称:getServletName()
获取全局上下文ServletContext对象:getServletContext()
获取Servlet初始化参数:getInitParameter(String) / getInitParameterNames()。
在Servlet中获取方式:this.getServletConfig()
类型:JspWriter
定义:表明当前页面的输出流。
做用:与Servlet中的PrintWriter功能相似,将数据响应到页面,响应的数据能够是页面、页面片断、字符串等。
在Servlet中获取方式:无
类型:Throwable
定义:表明当前页面的异常对象。
做用:捕获处理页面中的异常信息。
九大内置对象,都是咱们能够在【代码脚本】中或【表达式脚本】中直接使用的对象。
程序中的域对象,主要负责在不一样web资源之间进行数据交换,(如:servlet和jsp之间的数据交换)。
每一个域对象内部都维护了一个Map<String , Object>,域对象的共同方法。
设置属性到域中:void setAttribute(String key , Object value);
从域中获取指定的属性:Object getAttribute(String key);
移除域中指定属性:void removeAttribute(String key);
每一个页面都有本身惟一的一个pageContext对象。
注意servlet中没有该对象。
request: 当前请求中共享数据有效。
当前请求:转发、直接访问一个页面为当前请求。
不在当前请求:重定向、 打开页面再点击页面中的超连接不在当前请求 。
session: 一次会话范围中共享数据有效。
当前会话:当前浏览器不关闭&不更换浏览器即为当前会话。
只关心浏览器是否关闭,不关心服务器关闭重启。
不一样浏览器不共享会话。
application: 在服务器运行的一次过程当中共享数据有效。
做用范围 | 起始时间 | 结束时间 | |
---|---|---|---|
pageContext | 当前JSP页面 | 页面加载 | 离开页面 |
request | 同一个请求 | 收到请求 | 响应 |
session | 同一个会话 | 开始会话 | 结束会话 |
application | 当前Web应用 | Web应用加载 |