一、背景介绍
JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签。JSP是一种动态网页技术标准,也是JavaEE的标准。JSP和Servlet一样,是在服务器端执行的。JSP是在Servlet技术发展之后为了让开发者写html标签更方便而发展起来的技术,JSP实际上就是Servlet。
人们通常把Servlet作为Web应用中的控制组件来使用,只负责响应请求产生数据,并把数据通过转发技术带给jsp,而把jsp技术作为数据显示模板来使用。这样使程序结构更清晰,可读性和可维护性更高。
二、知识剖析(JSP页面元素构成)
1.JSP页面的三大指令
(1)<%@ page ... %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等;
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"
import="java.util.Date" import="java.text.SimpleDateFormat"%>
page指令一般在表头位置,用来设置本页面的语法,编码格式,导包等信息,page指令可以合并在一行,也可以分为多行,这个可以根据自己的需求编写。
(2)<%@ include ... %> 包含其他文件(静态包含);
有两个页面一个是index.jsp(左)页面,一个是include.jsp(右)页面,在同级目录,如下所示;
初始页面:
显示:
在index.jsp中加入include指令:
显示:
(3)taglib指令:引入标签库的定义。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix:指定标签前缀,这个东西可以随意起名
uri:指定第三方标签库的uri(唯一标识)
2.表达式
在JSP页面中执行的表达式 <%=表达式%>,注意表达式不以分号结束。例如,当前时间:<%= new java.util.Date() %>;
在页面输出指定格式的当前时间:
<%=new SimpleDateFormat("yy年MM月dd日 HH:mm:ss").format(new Date())%>
3.脚本片段
在JSP页面中插入多行java代码 <% Java代码 %>,JSP引擎在翻译JSP页面时,会将JSP脚本片段中的Java代码原封不动的放到Servlet的_jspServlet方法中,所以,<% %>中的Java代码必须严格遵循java语法。
脚本即 Scriptlet , 也就是 JSP 中的代码部分 , 是一段 Java 代码 , 几乎可以使用任何 Java 语法 , 它是在请求时期执行的 , 可以使用 JSP 页面所定义的变量、方法、表达式或 JavaBean . 脚本定义的变量和方法在当前整个页面内有效 , 但不会被其他线程共享 , 用户对该变量的作用不会影响其他用户 , 当变量所在页面关闭时 , 该变量会被销毁
语法格式如下 :
<%scriptlet%>
<%! String str ="为中华之崛起而读书";%>
<%
if(true){
%>
<%=str%>
<%
}
%>
4.注释(3种方式)
(1) HTML注释:<!--html注释,且客户端可见-->;
(2)JSP注释:<%--JSP注释,客户端不可见--%>;
(3)JSP脚本注释:即java注释 //单行 , /*多行 */。
5.声明:
在JSP页面中,可以声明一个或者多个合法的变量和方法 , 声明后的变量和方法可以在本 JSP 页面的任何位置使用 , 并将在 JSP 页面初始化时被初始化。
语法格式如下 :
<!%declaration; [declaration;] ...%>
在声明时需要注意 :
声明以 "<%!" 开头 , 以 "%>" 结尾 , "%!" 必须紧挨
变量和方法的命名规则应与 Java 的命名规则相同
可以直接使用在 "<@page %>" 中被包含进来的已经声明的变量和方法 , 不需要对其进行重新声明
一个声明仅在一个页面有效 , 如果想每个页面都用到一些声明 , 可以将它们写成一个单独的文件 , 用 "<%@ include%>" 指令 或 "<jsp:include>" 动作包含进来
三、html和jsp的区别:
HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性语言,为什么说是解释性语言呢?因为,只要你有一个浏览器那么它就可以正常显示出来,而不需要指定的编译工具,只需在TXT文档中写上HTML标记就OK。
JSP(Java Server Page)是Java服务端的页面,所以它是动态的,它是需要经过JDK编译后把内容发给客户端去显示,我们都知道,Java文件编译后会产生一个class文件,最终执行的就是这个class文件,JSP也一样,它也要编译成class文件!JSP不止要编译,它还得要转译,首先把JSP转译成一个Servlet文件,然后在编译成class文件。当用户访问JSP时就执行了class文件
1.HTML能直接打开,jsp只能发布到Tomact等服务器上才能打开;
2.定义上HTML页面是静态页面可以直接运行,JSP页面是动态页它运行时需要转换成servlet;
3.他们的表头不同,这个是JSP的头“ <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>”在表头中有编码格式和导入包等;
4.在jsp中用<%%>就可以写Java代码了,而html没有
四、jsp页面如何设置没有缓存?
(1)清空tomcat缓存。
server->tomcat->clean tomcat work directory.
(2)设置页面Nocache方式,即每次访问此页面,均需要从服务器重新读取,而不是使用缓存中存在的此页面。
在jsp页面的<head></head>中间添加如下代码。
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
五、jsp怎么去关掉session?
session.removeAttribute("username"); //注销session中的username对象
session.removeAttribute("id"); //注销session中的id对象
session.invalidate(); //关闭session
六、jsp的内置对象有哪几个?
JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception
(1)request对象
request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
(2)response对象
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
(3)session对象
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
(4)application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
(5)out 对象
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
(6)pageContext 对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等 对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
(7)config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
(8)page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
(9)exception 对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
---------------------
作者:qq_41802128
来源:CSDN
原文:https://blog.csdn.net/qq_41802128/article/details/81839696