jsp--jsp基本概念
⼀、背景介绍
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="SimpleDateFormat"%>
page指令⼀般在表头位置,⽤来设置本页⾯的语法,编码格式,导包等信息,page指令可以合并在⼀⾏,也可以分为多⾏,这个可以根据⾃⼰的需求编写。
(2)<%@ include ... %>    包含其他⽂件(静态包含);
有两个页⾯⼀个是index.jsp(左)页⾯,⼀个是include.jsp(右)页⾯,在同级⽬录,如下所⽰;
初始页⾯:
显⽰:
在index.jsp中加⼊include指令:
显⽰:
(3)taglib指令:引⼊标签库的定义。
<%@ taglib prefix="c" uri="java.sun/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;
jsp和html哪个更好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.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对象的创建和初始化都是由容器来完成的,在J
SP页⾯中可以直接使⽤ pageContext对象。
(7)config 对象
config 对象的主要作⽤是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() ⽅法可以获取⼀个config对象。当⼀个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在l ⽂件中为应⽤程序环境中的Servlet 程序和JSP页⾯提供初始化参数。
(8)page 对象
page 对象代表JSP本⾝,只有在JSP页⾯内才是合法的。 page隐含对象本质上包含当前 Servlet接⼝引⽤的变量,类似于Java编程中的 this 指针。
(9)exception 对象

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。