共计 3125 个字符,预计需要花费 8 分钟才能阅读完成。
JSP 和 JSTL
一.JSP 概念
Servlet 是 j2ee 提供的动静资源开发技术,是以 java 的程序的模式进行开发,在 java 中书写 HTML 标签是一件非常头疼的事件,所以人们开发出了 JSP,看起来像是 HTML 一样,然而通过服务器的编译最终能够生成 Servlet。
输入以后工夫:
<%
Date date = new Date();
String dateStr = date.toLocaleString();
out.write(dateStr);
%>
二.JSP 的组成部分
1. 模版元素
间接书写在 JSP 中的 HTML 内容,看起来就像写 HTML 一样的不便,然而最终会在被翻译成 Servlet 的过程中 out.write()间接输入。
2. 脚本表达式
<%= 表达式 %> 承受的是一段 java 表达式,在 JSP 翻译到 Servlet 的过程中,将会计算表达式的值,利用 out.write()输入进来。
输入以后工夫:
<%= new Date().toLocaleString() %>
3. 脚本片段
<% %> 间接能够在脚本片段中书写 java 源代码,其中的源代码将会间接拷贝到翻译过去的 servlet 中的响应地位上。
4.JSP 申明
<%! %> 在其中能够写 java 代码,其中的源代码会被拷贝到 servlet 中的 service 办法之外,能够利用它来为 servlet 减少成员办法、成员变量、动态代码块。
5.JSP 正文
<%– –%> 被 jsp 正文包围起来的内容将不会被服务器翻译到 servlet 之中,要留神辨别 html 正文和 java 正文的区别。
1)jsp 正文不会被翻译到 servlet 中,会在翻译时遗弃。
2)java 正文(<%// %>)不会被编译到 class 文件中,会在编译时遗弃。
3)html 正文(<!– –>)将会当作模版元素,间接输入到浏览器中,浏览器将不会显示 html 正文中的内容。
<% int i = 0; %>
<!-- <% i=i+100; %> -->
<%=i %>
浏览器输入:100
因为是 HTML 正文,会被执行,过后不会显示,所以 i +100 会被执行,最初输入 100
三.JSP 指令
1)Page 指令
page 指令(https://segmentfault.com/a/11…
Tips:
1.errorPage 能够设置谬误提醒界面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="/error.jsp" %>
也能够在 web.xml 中配置
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
2.pageEncoding=”utf-8″ 能够解决 JSP 中所有的中文乱码问题
2)include 指令
<%@ incluede file=””%> 动态引入其余页面的内容
动态引入:在源文件级别进行合并,多个 jsp 生成一个 servlet,最终由这一个 servlet 生成响应,举荐应用。
3)taglib 指令
四. 九大隐式对象(config,reponse,request,application,session,out,page,pageContext,exception)
1)out 对象
能够将它了解成 response.getWriter()取得的 PrintWriter,在 JSP 页面中,只用它去输入数据,不要用 response.getWriter()
<%
Date date = new Date();
String dateStr = date.toLocaleString();
out.write(dateStr);
%>
2)PageContext 对象
(1)获取其它八大隐式对象,能够认为是一个入口对象。(在自定义标签中应用)
getException 办法返回 exception 隐式对象
getPage 办法返回 page 隐式对象
getRequest 办法返回 request 隐式对象
getResponse 办法返回 response 隐式对象
getServletConfig 办法返回 config 隐式对象
getServletContext 办法返回 application 隐式对象
getSession 办法返回 session 隐式对象
getOut 办法返回 out 隐式对象
(2)域对象, 四大作用域的入口, 能够操作四大作用域中的域属性
作用范畴: 以后 jsp 页面
生命周期: 当对 jsp 页面的拜访开始时, 创立代表以后 jsp 的
PageContext, 当对以后 jsp 页面拜访完结时销毁代表以后 jsp 的 pageContext
作用: 在以后 jsp 中共享数据
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void removeAttribute(java.lang.String name,int scope)
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
(3)findAttribute(name)办法 — 搜查四大作用域中的属性, 如果找到则返回该值, 如果四大作用域中都找不到则返回一个 null, 搜查的程序是从最小的域开始向最大的域开始寻找(application>session>request>pageContext)
(4)提供了申请申请蕴含和转发的快捷办法
pageContext.include("/index.jsp");
pageContext.forward("/index.jsp");
Tips:
1.JSP 映射
<servlet>
<servlet-name>index</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
通过 "http://localhost:8080/Day01/jsp/ 任意字符" 都能够拜访这个 jsp。
2. 域的总结(由大到小)
servletContext (application)
session (session)
request (request)
pageContext
如果一个数据只在以后 jsp 页面应用, 能够应用 pageContext 域存储。
如果一个数据, 除了在以后 Servlet 中应用, 还要在申请转发时带到其余 Servlet 解决或 jsp 中显示, 这个时候用 request 域。
如果一个数据, 除了当初我本人要用, 过一会我本人还要用, 存在 session 域。
如果一个数据, 除了当初我本人要用过一会其他人也要用, 存在 ServletContext 域中。