JSP学习
JSP简介
-JSP用于简化Servlet编写。JSP是一种实现普通静态HTML和动态内容混合编码的技术。
-JSP只需对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。
-JSP设计的目的在于简化表示层的表示。
-JSP页面的访问路径与普通HTML页面的访问路径形式完全一样。
JSP的运行原理
-WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。
- 每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
JSP模版元素
-JSP页面中的静态HTML内容称之为JSP模版元素,在静态的HTML内容之中可以嵌套JSP的其他各种元素来产生动态内容。
-JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。
JSP脚本片断
-JSP脚本片断(scriptlet)是指嵌套在<% 和 %>之中的一条或多条Java程序代码。
-JSP脚本片断中的Java代码将被原封不动地搬移进由JSP页面所翻译成的Servlet的_jspService方法中,所以,JSP脚本片断之中只能是符合Java语法要求的程序代码。而只要符合java语法的都不会报错,包括以下:
-在一个JSP页面中可以有多个脚本片断(每个脚本片断代码嵌套在各自独立的一对<% 和 %>之间),在两 个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
-多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。
-单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句, 例如,涉及条件和循环处理时,多个脚本片断及其他元素组合的结果必须能形成完整的条件和循环控制语 句。
- 在脚本片断中可以使用条件、循环、选择等流程控制语句来创建其周围的其他元素的执行逻辑,因此,在 编写JSP页面时应考虑各个元素之间的先后顺序和相互关系,特别是将循环、条件判断等语句分布在若干 个脚本片断中编写时对其邻近的其他JSP元素产生的影响。
JSP注释
-JSP注释的格式: <%-- 注释信息 --%> JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。即不会显示在html源码中;
-HTML注释 注释标签 <!-- 与 --> 用于在 HTML 插入注释。
JSP声明
-JSP声明将Java代码封装在<%!和 %>之中,它里面的代码将被插入进Servlet的_jspService方法的外面,所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。
-多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
-JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
JSP隐含对象
-JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象。 -JSP供提供九种内置对象:
-request
-reponse
-out
-session
-application
-config
-pagecontext
-page
-exception
域对象及使用范围
-作用域从大到小:application、session、request、pageContext
-在application、session、request、pageContext对象中都可以调用setAttribute方法和getAttribute方法来设 置和检索各自域范围内的属性。
-存储在application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问。本项目所有地 方都能拿到属性。
-存储在session对象中的属性可以被属于同一个会话的所有Servlet和JSP页面访问。同一个浏览器不同页面 都可以拿到属性,别的浏览器就拿不到了。
-存储在request对象中的属性可以被属于同一个请求的所有Servlet和JSP页面访问。别的servlet就拿不到 了。
-存储在pageContext对象中的属性仅可以被当前JSP页面的当前响应过程中调用的各个组件访问,例如,正 在响应当前请求的JSP页面和它调用的各个自定义标签类。别的页面就拿不到了。
-PageContext类中还提供了对各个域范围的属性进行统一管理的方法,以简化对各个域范围内的属性的访 问。
-访问各个域范围中的属性
-setAttribute方法
-getAttribute方法
-removeAttribute方法

浙公网安备 33010602011771号