JSP学习笔记 -- day01 注解、域对象、指令
来源:互联网 发布:c#索引超出了数组界限 编辑:程序博客网 时间:2024/06/16 20:42
一、JSP脚本
1、定义型语句的脚本标签:<%! %>
jsp编译成.java文件之后,该脚本下的代码作为类的成员区域
<%! //定义型语句: JAVA定义变量,方法,类 int i=23; public void print(){ System.out.println("I havea dream!"); } class MyClass{ public void print(){ System.out.println("I havea dream!"); } int ii=230; } //System.out.println("I havea dream!"); 错误 %>
2、普通java语句脚本标签:<% %>
此区域编译后放入service方法体内
<%//普通JAVA执行语句System.out.println("I havea dream!"); int i=23000; //public void test01(){}%>
3、计算出结果的表达式的脚本标签:<%= %>
此区域编译成 .java 文件之后是在print()中的
<!--以下区域可以放置的内容是: 可以计算出结果的表达式表达式:用运算符将常亮,变量,表达式连接起来符合JAVA语法规则的式子(JAVA表达式)3+3 a=3 --><%=i%><%=3+5%>
二、JSP注释
1、jsp注释中,优先使用<%-- --%>这种注释
<%-- jsp的注释信息 --%><!-- HTML的注释 --><%//java的注释1/*java的注释2*//** java的注释3 */%>
三、JSP指令
1、格式
<%@ 指令名称 属性名1=”属性值1” 属性名2=”属性值2” 属性名3=”属性值3” %> 多个属性之间空格隔开
2、指令分类:
(1)、page:告诉JSP引擎(tomcat)如何将当前JSP转换为SERVLET
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" buffer="8kb"%>
(2)、include:包含其它文件,底层的实现原理:将多个JSP文件合并为1个SERVLET文件
include指令只有一个file属性,该属性用来指定插入到JSP页面目标位置的文件资源。
<%@ include file="/include01/date.jsp"%>
(3)、taglibe:引入其它的标签库
四、JSP内置对象
为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用。
1、域对象
2、pageContext对象
在JSP页面中,使用pageContext对象可以获取JSP的其他8个隐式对象。pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。
pageContext对象不仅提供了获取隐式对象的方法,还提供了存储数据的功能。pageContext对象存储数据是通过操作属性来实现的
注意:当使用 findAttribute() 方法查找名称为name的属性时,会按照page、request、session和application的顺序依次进行查找,如果找到,则返回属性的名称,否则返回null。
<% out.println("DDDD"+application.hashCode()); response.getWriter().println("I am second....."); //System.out.println(1/0); //向ServletContext内部放入键值对的数据 pageContext.setAttribute("name01", "mary1", PageContext.APPLICATION_SCOPE); pageContext.setAttribute("name02", "mary2", PageContext.SESSION_SCOPE); pageContext.setAttribute("name03", "mary3", PageContext.REQUEST_SCOPE); pageContext.setAttribute("name04", "mary4", PageContext.PAGE_SCOPE); //pageContext.setAttribute("name04", "mary4");%><%=application.getAttribute("name01") %><%=session.getAttribute("name02") %><%=request.getAttribute("name03") %><%=pageContext.getAttribute("name04") %><hr/><%-- 从4个域对象范围依次寻找对应的数据 --%><%=pageContext.findAttribute("name01") %><%=pageContext.findAttribute("name02") %><%=pageContext.findAttribute("name03") %><%=pageContext.findAttribute("name04") %><%=pageContext.findAttribute("name05") %>
五、JSP动态包含与静态包含的区别
1、静态包含
<%@include file="被包含页面"%>
2、动态包含
<jsp:include page="被包含页面"flush="true">
3、区别与联系
注:下文将包含有其它文件的jsp文件称为主体文件,比如上文中的index.jsp文件.将被包含的文件称为包含文件,比如上文中的header.jsp文件。
(1)、<%@ include file=” ”%>是指令元素。<jsp:include page=” ”/>是行为元素
(2)、最终编译成java文件的数目不同。
静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件。
动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件。
(3)、执行时间不同
静态包含发生在:JSP---->java文件阶段。
动态包含发生在:执行class文件阶段。动态加入。
(4)、静态包含在两个文件中不能有相同的变量,动态包含允许。
由于静态包含相当于将包含文件内容直接复制到主体文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件出错。而动态包含相当于调用不同的jsp,变量所在的空间不同,自然不会出现覆盖等现象。
(5)、无论是动态包含还是静态包含,其request对象都是相同的。也就是同一个request对象。
静态包含最终编译成一个java文件,有一个request对象很好理解。而动态包含最终编译成多个jsp文件,为何会使用一个request对象呢?其实这些jsp组合的过程是一个请求转发的过程,自然也使用同一个request对象了。
4、静态包含和动态包含的使用
简单总结一下,就一句话:被包含的页面是静态页面就用静态包含,是动态页面就用动态包含.
- JSP学习笔记 -- day01 注解、域对象、指令
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
- JSP学习笔记---page指令
- JSP学习笔记---包含指令
- java 学习笔记 day01
- JQuery学习笔记---Day01
- JavaFx2学习笔记day01
- c++ 学习笔记 day01
- mysql 学习笔记 day01
- Hadoop学习笔记Day01
- Memcached学习笔记day01
- linux学习笔记day01
- Oracle学习笔记--day01
- 机器学习笔记day01
- Java学习笔记Day01
- Qt学习笔记day01
- struts2 day01学习笔记
- hibernate day01学习笔记
- 五个小案例带你学习火热的Vue.js
- EPC编码之设备唯一标识MN
- Maven入门指南④:仓库
- XOR 加密简介
- fix协议封装挑战-DbFail
- JSP学习笔记 -- day01 注解、域对象、指令
- Your Prediction Gets As Good As Your Data
- Dom4j对xml增删改查的实例详解
- android ART hook
- 字符串进制转换“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛
- 1. C#
- Maven入门指南⑤:使用Nexus搭建Maven私服
- OC和Swift混合开发需要做的准备
- Source Insight 常用设置和快捷键大全