范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

学习Java第三天

  1 jsp工作原理
  JSP的工作模式是请求/响应模式,客户端首先发出HTTP请求,JSP程序收到请求后进行处理并返回处理结果。在一个JSP文件第1次被请求时,JSP引擎(容器)把该JSP文件转换成为一个Servlet,而这个引擎本身也是一个Servlet。
  了解了JSP的运行原理后,完全可以利用其中的一些步骤来做一些工作,如:可以在jspInit()中进行一些初始化工作(建立数据库的连接、建立网络连接、从配置文件中获取一些参数等),可以在jspDestroy()中释放相应的资源等
  2 JSP脚本元素
  JSP脚本元素是指嵌套在<%和%>之中的一条或多条Java程序代码。通过JSP脚本元素可以将Java代码嵌入HTML页面中,所有可执行的Java代码,都可以通过JSP脚本来执行
  1.JSP ScriptletsJSP Scriptlets 是一段代码段。当需要使用Java实现一些复杂操作或控制时,可以使用它。JSP Scriptlets的语法格式如下所示。
  <% java 代码(变量、方法、表达式等)%>
  在JSP Scriptlets中声明的变量是JSP页面的局部变量,调用JSP Scriptlets时,会为局部变量分配内存空间,调用结束后,释放局部变量占有的内存空间。
  2.JSP声明语句
  JSP 的声明语句用于声明变量和方法,它以"<%!"开始,以"%>"结束,其语法格式如下所示。
  <%!定义的变量或方法等%>
  需要注意的是,<%!和%>里面定义的属性是成员属性,相当于类的属性,方法相当于全局的方法,也相当于类里面的方法,但是它是不可以进行输出的,因为它只是进行方法的定义和属性的定义。<%和%>可以进行属性的定义,也可以输出内容,但是它不可以进行方法的定义。因为这对标签里面的内容是在此JSP被编译为Servlet的时候,放在_jspService()方法里面的,这个方法就是服务器向客户端输出内容的地方,它本身就是一个方法。所以,如果在它里面定义方法的话,那么就相当于是在类的方法里面嵌套定义了方法,这在Java里面是不允许的。但是,可以在里面定义自己的私有变量,因为方法里面也可以定义变量,也可以调用方法,唯独不可以再定义方法了。
  总之,<%!和%>是用来定义成员变量属性和方法的,<%和%>主要是用来输出内容的,因此,如果涉及到了成员变量的操作,那么就应该使用<%!和%>,而如果涉及到了输出内容,就使用<%和%>。
  3 .JSP表达式
  JSP表达式(expression)用于将程序数据输出到客户端,它将要输出的变量或者表达式直接封装在以"<%="开头和以"%>"结尾的标记中,其基本的语法格式如下所示。<%= expression %>在上述语法格式中,JSP表达式中的变量或表达式的计算结果将被转换成一个字符串,然后插入到JSP页面输出结果的相应位置处。例如,对example01.jsp文件进行修改,将内的脚本元素修改为表达式,具体如下。
  <%=a+b %>
  <%=print() %>
  4 JSP注释
  同其他各种编程语言一样,JSP也有自己的注释方式,其基本语法格式如下。
  <%-- 注释信息 --%>
  5 page指令
  在 JSP 页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式、JSP 页面采用的语言等,这时,可以通过page指令来实现。page指令的具体语法格式如下所示。<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>
  <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  <%@ page import="java.awt.*" %>
  <%@ page import="java.util.*","java.awt.*" %>
  除了import属性外,其他的属性都只能出现一次,否则会编译失败。需要注意的是,page指令的属性名称都是区分大小写的。
  6 include指令
  在实际开发时,有时需要在JSP页面静态包含一个文件,例如HTML文件、文本文件等,这时,可以通过include指令来实现。include指令的具体语法格式如下所示。
  <%@ include file="被包含的文件地址"%>
  include指令只有一个file属性,该属性用来指定插入到JSP页面目标位置的文件资源。需要注意的是,插入文件的路径一般不以"/"开头,而是使用相对路径。
  关于include指令的具体应用,有很多问题需要注意,接下来,将这些问题进行列举,具体如下。
  (1)被引入的文件必须遵循 JSP 语法,其中的内容可以包含静态 HTML、JSP 脚本元素和JSP指令等普通JSP页面所具有的一切内容。
  (2)除了指令元素之外,被引入的文件中的其他元素都被转换成相应的Java源代码,然后插入当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致。
  (3)file属性的设置值必须使用相对路径,如果以"/"开头,表示相对于当前Web应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。需要注意的是,这里的 file属性指定的相对路径是相对于文件(file),而不是相对于页面(page)
  7 JSP隐式对象
  在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在 JSP 页面中使用。
  out对象
  在JSP页面中,经常需要向客户端发送文本内容,这时,可以使用out对象来实现。out对象是javax.servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是,out对象的类型为JspWriter,它相当于一种带缓存功能的PrintWriter。
  <%out.println("first line
  ");
  response.getWriter().println("second line
  "); %>
  尽管out.println();语句位于response.getWriter().println();语句之前,但它的输出内容却在后面。由此可以说明,out 对象通过 print 语句写入数据后,直到整个JSP页面结束,out对象中输入缓冲区的数据(即first line)才真正写入到Serlvet引擎提供的缓冲区中。而response.getWriter().println();语句则是直接把内容(即second line)写入Servlet引擎提供的缓冲区中,Servlet引擎按照缓冲区中的数据存放顺序输出内容。
  有时候,开发人员会希望out对象可以直接将数据写入Servlet引擎提供的缓冲区中,这时,可以通过page指令中操作缓冲区的buffer属性来实现。
  <%@ page language="java" contentType="text/html; charset=UTF-8"                         buffer="0kb"%>
  8 pageContext对象
  在JSP页面中,使用pageContext对象可以获取JSP的其他8个隐式对象。pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。
  JspWriter getOut() 用于获取out隐式对象
  Object getPage() 用于获取page隐式对象
  ServletRequest getRequest() 用于获取request隐式对象
  ServletResponse getResponse() 用于获取response隐式对象
  HttpSession getSession() 用于获取session隐式对象
  Exception getException() 用于获取exception隐式对象
  ServletConfig getServletConfig() 用于获取config隐式对象
  ServletContext getServletContext() 用于获取application隐式对象
  9 pageContext对象
  不仅提供了获取隐式对象的方法,还提供了存储数据的功能。
  pageContext对象存储数据是通过操作属性来实现的,
  表6-4列举了pageContext操作属性的一系列方法,
  具体如下。表6-4
  pageContext操作属性的相关方法
  void setAttribute(String name,Object value,int scope)
  Object getAttribute(String name,int scope)
  void removeAttribute(String name,int scope)
  void removeAttribute(String name)
  Object findAttribute(String name)用于设置pageContext对象的属性用于获取pageContext对象的属性删除指定范围内名称为name的属性删除所有范围内名称为name的属性
  其中,参数name指定的是属性名称,参数scope指定的是属性的作用范围。pageContext对象的作用范围有4个值,
  具体如下。
  • pageContext.PAGE_SCOPE:表示页面范围
  • pageContext.REQUEST_SCOPE:表示请求范围
  • pageContext.SESSION_SCOPE:表示会话范围
  • pageContext.APPLICATION_SCOPE:表示Web应用程序范围
  需要注意的是,当使用 findAttribute()方法查找名称为 name 的属性时,会按照page、request、session和application的顺序依次进行查找,如果找到,则返回属性的名称,否则返回null。接下来,通过一个案例来演示pageContext对象的使用。
  <%
  //pageContext.setAttribute("str", "Java",PageContext.PAGE_SCOPE);
  //pageContext.setAttribute("str", "Java Web",PageContext.REQUEST_SCOPE);
  HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
  req.setAttribute("str", "Java Web");
  pageContext.setAttribute("str", "Java",pageContext.PAGE_SCOPE);
  String str2 = (String)pageContext.getAttribute("str",pageContext.PAGE_SCOPE);
  String str1 = (String)pageContext.getAttribute("str",pageContext.REQUEST_SCOPE);
  %>
  <%= "request范围:" + str1 %>
  <%= "page范围:" + str2 %>
  10 exception对象
  在 JSP 页面中,经常需要处理一些异常信息,这时,可以通过 exception 对象来实现。exception对象是java.lang.Exception类的实例对象,它用于封装JSP中抛出的异常信息。需要注意的是,exception 对象只有在错误处理页面才可以使用,即 page 指令中指定了属性<%@page isErrorPage="true"%>的页面。
  <%@ page language="java" contentType="text/html; charset=utf-8"
  pageEncoding="utf-8" errorPage = "error.jsp" %>
  --error.jsp
  <%@ page contentType = "text/html; charset = utf-8"
  language = "java" isErrorPage = "true" pageEncoding="utf-8"%>
  11 jsp处理异常
  <%
  try{
  int a = 6;
  int c = a/0 ;
  }
  catch(Exception exception)
  {
  out.println(exception.getClass());
  out.println(exception.getMessage());
  }
  %>
  12标签
  • 标签中要引入的资源和当前JSP页面是两个彼此独立的执行实体,即被动态引入的资源必须能够被Web容器独立执行。而include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件需要共同合并才能翻译成一个Servlet源文件。
  • 标签中引入的资源是在运行时才包含的,而且只包含运行结果。而include指令引入的资源是在编译时期包含的,包含的是源代码。
  • 标签运行原理与RequestDispatcher.include()方法类似,即被包含的页面不能改变响应状态码或者设置响应头,而include指令没有这方面的限制。
  13 动作元素
  动作元素将当前请求转发到其他Web资源(HTML页面、JSP页面和Servlet等),在执行请求转发之后的当前页面将不再执行,而是执行该元素指定的目标页面。其具体语法格式如下所示。
  ${pageContext.request.contextPath}会获取项目的名称chapter06并以"/"开头
  13 什么是JavaBean
  JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个Java类。为了规范JavaBean的开发,Sun公司发布了JavaBean的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下。
  (1)它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法。
  (2)它提供公共的setter方法和getter方法,让外部程序设置和获取JavaBean的属性。
  如果一个属性只有getter方法,则该属性为只读属性。如果一个属性只有setter方法,则该属性为只写属性。如果一个属性既有getter方法,又有setter方法,则该属性为读写属性。通常来说,在开发JavaBean时,其属性都定义为读写属性。需要注意的是,对于 JavaBean 属性的命名方式有一个例外情况。如果属性的类型为boolean,它的命名方式应该使用 is/set,而不是 get/set。例如,有一个boolean 类型的属性married,该属性所对应的方法声明如下所示。
  14 EL表达式
  由于EL可以简化JSP页面的书写,因此,在JSP的学习中,掌握EL是相当重要的。要使用EL表达式,首先要学习它的语法。EL表达式的语法非常简单,都是以"${"符号开始,以"}"符号结束的,具体格式如下。
  用户名:<%=request.getAttribute("username")%>
  密 码:<%=request.getAttribute("password")%>
  使用EL表达式:
  用户名:${username}
  密 码:${password}
  15 EL隐式对象
  pageContext对象:
  请求URI为:${pageContext.request.requestURI}
  Content-Type响应头:${pageContext.response.contentType}
  服务器信息为:${pageContext.servletContext.serverInfo}
  Servlet注册名为:${pageContext.servletConfig.servletName}
  16 Web域相关对象
  使用pageScope、requestScope、sessionScope和applicationScope这4个隐式对象成功地获取到了相应JSP域对象中的属性值。需要注意的是,使用EL表达式获取某个域对象中的属性时,也可以不使用这些隐式对象来指定查找域,而是直接引用域中的属性名称即可,例如表达式${userName}就是在page、request、session、application这4个作用域内按顺序依次查找userName属性的。
  <%
  pageContext.setAttribute("userName", "itcast");
  %>
  <%
  request.setAttribute("bookName", "Java Web");
  %>
  <%
  session.setAttribute("userName", "itheima");
  %>
  <%
  application.setAttribute("bookName", "Java 基础");
  %>
  表达式${pageScope.userName}的值为:${pageScope.userName}
  表达式${requestScope.bookName}的值为:${requestScope.bookName}
  表达式${sessionScope.userName}的值为:${sessionScope.userName}
  表达式${applicationScope.bookName}的值为:${applicationScope.bookName}
  表达式${userName}的值为:${userName}
  17 param和paramValues对象
  param 对象用于获取请求参数的某个值,它是 Map 类型,与request.getParameter()方法相同,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。param对象的语法格式比较简单,具体示例如下。
  ${param.num}
  如果一个请求参数有多个值,可以使用paramValues对象来获取请求参数的所有值,该对象用于返回请求参数所有值组成的数组。如果要获取某个请求参数的第1个值,可以使用如下代码。
  ${paramValues.nums[0]}
  举例:
  18 .Cookie对象
  在JSP开发中,经常需要获取客户端的Cookie信息,为此,在EL表达式中,提供了Cookie隐式对象,该对象是一个代表所有Cookie信息的Map集合,Map集合中元素的键为各个Cookie的名称,值则为对应的Cookie对象,具体示例如下。
  获取cookie对象的信息:${cookie.userName}
  获取cookie对象的名称:${cookie.userName.name}
  获取cookie对象的值:${cookie.userName.value}
  举例:
  Cookie对象的信息:
  ${cookie.userName }
  Cookie对象的名称和值:
  ${cookie.userName.name }=${cookie.userName.value }
  <%
  response.addCookie(new Cookie("userName", "itcast"));
  %>
  19 什么是JSTL
  从JSP 1.1规范开始,JSP就支持使用自定义标签,使用自定义标签大大降低了JSP页面的复杂度,同时增强了代码的重用性。为此,许多Web应用厂商都定制了自身应用的标签库,然而同一功能的标签由不同的Web应用厂商制定可能是不同的,这就导致市面上出现了很多功能相同的标签,令网页制作者无从选择。为了解决这个问题,Sun 公司制定了一套标准标签库(JavaServer Pages Standard Tag Library),简称JSTL。
  使用JSTL标签库报错,可将 jstl.jar 和 standard.jar 这两个文件复制到 chapter07项目的 lib 目录下,复制到tomcat的lib目录下即可。
  <%@ page language="java" contentType="text/html; charset=utf-8"
  pageEncoding="utf-8"%>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

苹果ios16测试ios16的测试版用了一周了你们感觉怎么样评论区说一说吧说一下我的自身体验以下我说的所有数据都是基于这台13promax远风栏256g续航问题ios16bat100连ih15真实版刺激了!苹果iOS16借鉴安卓实锤?网友原来国产系统这么厉害谁能想到,在iPhone14系列的发售之前,苹果再爆大瓜。事情是这样的,此前几天iOS16终于上线,众人欣喜之余发现新版的iOS不管解锁动画,还是锁屏界面的DIY,都带着一股浓浓的最温柔的牵挂丨接棒少年第一次见到你攥拳的小手里什么都没有那时就想给你我的所有身边的人都叫你小孩儿你却不想被小看你会为小小的热爱付出大大的努力和坚持给你一支笔你就能写出万千人生诗行给你一株青苗你会种出参天那些惊艳你的央视文案1。如果命运是世界上最烂的编剧,你就要争取,做你人生最好的演员。撒贝宁2。初见乍惊欢,久处亦怦然。朱广权3。若你决定灿烂,山无遮,海无拦。撒贝宁4。是微风,是晚霞,是心跳,是无可替京郊这个惊艳世人的千亩花海,又到了绚烂盛放的季节近年来昌平这个美丽的地方每到67月就花开成海它就是七孔桥趁年轻就去旅行摄影如果从七孔桥上开车路过就或许可以看见窗外的花海颇有些壮观独漂摄影七孔桥花海位于十三陵水库二坝这个地方原来是惊艳仙子,冰霜美人,51岁的俞飞鸿为何要把单身女神进行到底惊艳仙子,冰霜美人,51岁的俞飞鸿为何要把单身女神进行到底惊鸿仙子,古装女神,冰美人,飞哥,不老女神,这些由网友送给女明星俞飞鸿的美称叠加在一起,成为一道美丽的风景线。网友说,俞飞有些人,有些事,一转身便是一辈子了!唯美句子,值得收藏我一直以为山是水的故事,云是风的故事,你是我的故事,可是却不知道,我是不是你的故事。一个人总要走陌生的路,看陌生的风景,听陌生的歌,然后在某个不经意的瞬间,你会发现,原本费尽心机想早安心语正能量句子也有一些很难熬的日子,也知道生活不会一直甜蜜闪烁,我接受它的苦,它的灰暗,它的刺,因为总会过去的,我的花会开的,生活也会慢慢拥抱我的。希望我们都是快乐真实的人喜欢就喜欢,讨厌就讨厌那些永远拥有梦想永远热泪盈眶的句子1。只有那些躺在坑里从不仰望高处的人,才会没有出头之日。黑格尔2。非学无以广才,非志无以成学。诸葛亮3。小鸟欲高飞,虽飞亦不远,非关气力微毛羽未丰满。木心4。如果你让现在长留在地狱华为nova10系列手机发布会官宣7月4日举行6月24日,华为官方正式宣布将于7月4日召开nova10系列及全场景新品夏季发布会,发布华为nova10系列手机。根据最新的爆料信息,华为nova10Pro将采用一块6。7英寸曲面索尼X95EK售价公布!相比TCL三星贵出近506月23日晚间8点,索尼的实力派芯玩家发布会在线上召开。不出意料,今年早期公布的索尼X95EKZ9K电视产品正式亮相,实际机型与春季发布会中曾公布的配置保持一致。而在价格方面,采用
迪卡侬宣布造电动自行车体育用品超市巨头迪卡侬日前宣布将推出一款电助力自行车概念车,概念车被命名为MagicBike或者BTwinConcept01,官方也表示新的概念车旨在测试不同的技术和想法,它会收集老美传来了新消息,台积电或将重新迎来华为回归老美传来了新消息,台积电或将重新迎来华为回归!采取各种手段限制国际企业的发展,也让老美长期处于全球科技供应链的顶端,拥有了很多绝对核心的技术,也成为了捣乱全球科技发展有效的手段。在极目快评蔚来汽车坠楼两名试车员身亡,拿安全事故调侃太不合适极目新闻评论员屈旌6月22日17时22分许,上海市嘉定区安亭镇安拓路56弄上海汽车创新港8号楼3楼,一辆蔚来测试车从高处坠下,致使杜某和张某某两名试车员受伤,120到场后将两人送至无须插电话卡!你的手机也能免流量看电视了不知道大家是否还记得,早些年山寨机时代,有一批手机直接能够收看电视的频道?在当时,这种能直接看电视的手机受到了不少学生群体的欢迎。不少同学都拿着手机在被窝里看NBA转播,也算是当年支付宝正面回应,关于男子46万资金冻结问题支付宝官方回应,男子支付宝冻结一事!6月22日,支付宝安全中心官微发布声明,对男子46万元资金在账户中无法取出进行了说明。声明称,根据举报信息和平台风险系统识别,该用户的账户交易行硅光子芯片发展潜力巨大牛津大学的科学家本周宣布在芯片设计方面取得突破,他们推出了一种基于光的光子芯片,据称其速度是传统电子半导体的300倍。它展示了光子学在数据中心等环境中提供更高性能和更高能效的潜力,256GB不够用?3款512GB大内存手机,最低2399元,闭眼随便买您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。虽然说现在手机内存的空间越来越大,但是现在各大应用占用的空间也越来越多,特别是一些常用的应A股氢燃料电池蓄势待发!或将高增长的5家氢燃料电池企业氢燃料未来的发展趋势在全球气候变暖的大背景下,各种危机也开始出现,环境问题面临严峻挑战,世界各国开始把目光投向清洁能源,氢燃料电池技术因其具有高转换率以及零排量的特点,被认为是未来小米12SUltra同款1英寸IMX989传感器,夏普AQUOSR7正式开启预定今年5月份时,夏普发布了一款名为AQUOSR7的新机,这款新机将配备1英寸4700万像素大底传感器,而根据海外推特网友晒出的截图来看,看起来这款夏普AQUOSR7采用的这颗1英寸大红米K50S浮出水面,顶级4nm5500mAh120W,真香预定红米品牌成立到现在,相信很多人都见证了它的蜕变。放在两年多前,Redmi刚宣布品牌独立时,谁能想到红米手机有朝一日卖到四千元还有人加价购买?高端品牌大众化属实是被卢伟冰玩明白了,红两协会提示不存在所谓的食品级化妆品中国消费者协会中国保健协会化妆品发展工作委员会暑期消费提示保障儿童用妆安全,这些消费提示请收好近年来,随着社会和经济的发展,人们对美的追求愈加强烈,化妆品市场逐渐显现出不断增长和低