简介
JSP全名为Java Server Pages,中文名叫java服务器页面。其根本是一个简化的Servlet
它是在传统的网页HTML文件,插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为 (*.jsp)
JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
引入JSP的原因:.servlet展示信息的不方便
JSP中如何嵌套Java代码
首先要加在开头加一个page指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
小脚本 <% java代码%>
声明标签 <%!变量或者方法声明%>
表达式标签 <%= 表达式%> 在页面上显示的效果
程序代码标签 <%java代码%> 页面上动态展示内容
jsp中的注释
<!-- html注释内容,查看源码时能看到 -->
<%-- jsp注释,查看页面源码时看不到 --%>
JSP原理
访问jsp页面时,服务器发现后缀为.jsp,它会根据路径找到index.jsp文件,会将index.jsp翻译成index_jsp.java文件,对这个java文件进行编译,产生一个index_jsp.class文件,将class 文件加载运行。
将JSP翻译成java文件,它是将JSP中的所有的HTML代码通过流进行输出,也就是说最终翻译成 class,被虚拟机加载,它本质是servlet,它就会往回响应,响应回去就是把JSP中的HTML代码以流的方式写回浏览器。所以在JSP中展示出了HTML代码
JSP的内置对象
JSP中一共预先定义了9个这样的对象
分别为:request、response、session、application、out、pagecontext、confifig、page、exception
1、request对象
request 对象是 javax.servlet.httpServletRequest类型的对象。
该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。
request对象的 作用域为一次请求。
2、response对象
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。
response对象也具有作用域,它只在JSP页面内有效。所属类型:HttpServletResponse
3、session对象
session 对象是由服务器自动创建的与用户请求相关的对象。
服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。
session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。
session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
4、application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。
与session对象相比,application对象生命周期更长,类似于系统的“全局变量” ServletContext
区别:
request:单次请求
session:浏览器访问期间(会话期间)
application:服务器启动期间,所存的数据可以跨浏览器
5、out 对象
out 对象用于在Web浏览器内输出信息
out.print("<script type='text/javascript'>alert(' 用户名不存 在');location.href='index.jsp'</script>");
6、pageContext 对象
pageContext对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、 session、application 等对象。
pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
7、confifig 对象
confifig对象的主要作用是取得服务器的配置信息。
通过 pageConext对象的 getServletConfifig() 方法可以获取 一个confifig对象。当一个Servlet 初始化时,容器把某些信息通过confifig对象传递给这个 Servlet。
示例:
将image路径转换成服务器端的路径
String url= config.getServletContext().getRealPath("/image");
8、page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变 量,类似于Java编程中的 this 指针。
9、exception 对象
exception 对象的作用是显示异常信息,只有在page指令中包含 isErrorPage="true" 的页面中才可以被使用。
exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况;
如果在JSP 页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误 页面中,然后在错误页面中处理相应的 exception 对象。
jsp的作用域:
pageContext(当前页面) -> request(单次请求有效) -> session(当前会话期) -> application(服务器运行期间有效)
JSP指令
语法格式:
<%@ 指令名称 属性名="属性值" %>
(1)page指令(了解)
(2)include指令
语法格式:<% @ include file = " 文件相对 url 地址 " %>
语法格式:<% @ taglib uri = "uri" prefix = "" %>uri 属性确定标签库的位置, prefifix 属性指定标签库的前缀 ( 可自定义 ) 。
JSP 出现的状态码
EL表达式
语法格式:${ 需要展示信息的名字 }
遇见同名的key值时,我们可以通过隐含 对象获得指定作用域的值
pageScope 对象,用于获取当前页面的属性值requestScope 对象,用于获取请求范围的属性值sessionScope 对象,用于获取会话范围的属性值applicationScope 对象,用于获取程序范围的属性值比如:${requestScope.key}
JSTL标签库
作用:简化JSP页面编写代码
格式:
功能范围 uri 前缀core http://java.sun.com/jsp/jstl/core ci18n http://java.sun.com/jsp/jstl/fmt fmtsql http://java.sun.com/jsp/jstl/sql sqlxml http://java.sun.com/jsp/jstl/xml xfunctions http://java.sun.com/jsp/jstl/function fn
核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
fmt标签库
value: 将要被格式化的数据pattern :格式化的模式,与 SimpleDateFormat 的参数设置一样var: 格式化后的字符串所要存放的变量,若不指定 var ,则会将格式化的结果直接显示在页面scope :变量存放的域属性空间,默认 pagetype :其取值为 date 、 time 、 both ,表示给出的 value 是日期、时间、还是两者都包含,默认是 date
parseDate:将指定字符串转化为日期
Value服务器获取的时间
Pattern: 转换的格式 Var: 页面显示的变量Var:页面显示的变量