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

学习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"%>

在新建成的荣誉墙前,他们庄严宣誓二十大胜利闭幕后,东山战斗守备一等功臣连官兵在刚落成不久的荣誉墙前隆重集会,开展了一场特殊的连史讲解和教育,采取连队先进典型个人讲故事的方式,重温东山保卫战战斗经历,深入学习贯彻二G20峰会圆满落幕,从被忽视到中等强国,印尼的大国野心要实现了吗据环球网报道,G20峰会已经落下帷幕,作为主办方的印尼,也狠狠地刷了一波存在感。印尼国土面积190多万平方公里,人口超过2。7亿,是东盟第一大经济体。从各方面来看,都称得上是大国。特斯拉电动车事故真相八九不离十,真正原因撇不开电车本身问题近日,广东潮州饶平县一辆特斯拉电动汽车在饶洋镇突然加速狂奔,在持续狂奔2。6公里的过程中,接连撞上了摩托车自行车三轮车和小货车,导致2死3伤的严重后果。车主受伤入院接受治疗,没有生大时代大变局,税改掀起波澜,房地产的租房时代可能要来了大时代大变局,这句话用在深圳身上是最合适不过的,仅用40多年时间就把一个小渔村发展成国内一线城市。深圳的发展是敢闯敢试,经济实力也冲上了全国第三的位置。近期深圳又迎来了一项改革,深坐标武汉!全球最大纯商业体武商梦时代开业支点财经记者陈勇摄总投资120亿元,80万方体量超越迪拜MALL。上午11时,全球最大纯商业体武商梦时代正式开门迎客。开业仪式上,武商集团董事长陈军表示,武商梦时代的启幕,代表着集手指僵硬,关节肿痛,关键在于阳气不足!一张经典方,很具代表性日常生活中,类风湿关节炎总是更偏爱那些辛勤劳作的人。尤其是一些干了一辈子家务活的中老年人,整天泡在田地里,或者整天忙于做饭洗碗,多半都有手指僵硬肿痛的毛病,严重的还会伴随关节变形四爹地的老球衣,怎么就成了外网up主的流量密码?过了20岁就不要穿得像个小孩子了,应该是2022年最火的时尚建议。正当我国立志要变成熟的00后们纷纷pick起了厅里厅气的干部风时,海外Z世代的男装专家也不约而同地向爹系穿搭发起致世界杯即将开始,卡塔尔地铁和电车能否承受120万游客?11月20日卡塔尔即将迎来2022年世界杯,一个星期之后预计将有120万游客前往卡塔尔,面对这种情况,有人质疑卡塔尔是否有接待这些游客的能力,尤其是卡塔尔的公共交通和铁路系统是否能杭州周边超值得去的3座古镇,景美人少美食还很地道,11月就去旅行头条创作挑战赛我喜欢古镇胜过自然景点,即便如今很多古镇也越来越商业化,但不乏也有一些相对小众或者原生态保护的比较好的古镇。这个金秋如果出不了远门,那么杭州周边这几个古镇或许是你周末注意,长春将再迎雨雪降温天气从上周开始长春的天气开始发威冷空气大雪降温一场大雪过后我大长春美成了童话这就是你想要的风花雪月吧在欣赏美景的同时别忽视我们还将迎来降雪天气届时气温也会随之下降1920日长春有雨夹雪飞机上有三样东西是免费的,乘客不要求,空姐一般不会提出现今,我们出行有多种可选择的交通工具,比如汽车火车高铁飞机等。这些交通出行方式在极大方便着我们的生活,无论是在出行时间还是距离上,都在给乘客提供着出行保障。但是,如果跨省或者出国,
详解医保改革中的门槛费,有了这些限制你还能报销多少?头条创作挑战赛门诊报销的限制这次医保改革的意义是积极的,虽然个人账户的钱减少了但门诊可以报销了,只不过在门诊报销中又设置了门槛费和封顶线,受到了限制,这个实在是让人觉得不爽。很多人快手日活用户超3。6亿北京日报客户端记者赵语涵快手2023增量效应磁力大会2月22日在北京召开,披露了平台一系列特色数据和商业化发展新版图等。2022年,平台日活用户超3。6亿,已成为最大的短剧消费市场9个生活极简目标清单目录01。自律习惯02。日常护理03。精致生活04。消费购物05。身材管理06。投资理财07。健康管理08。自我提升09。修身养性关于自律学习坚持早睡早起,保持作息规律。先做不需要手游剑与远征魔术礼帽活动别换神魔,换资源难道不香?远征魔术礼帽活动即将回归,但抠门这次不建议换任何的英雄,哪怕是神魔。至于为什么,看了本期兑换英雄你就懂。此外,本期依然会有猎宝雪地最新的平民7队阵容,需要的,别忘提前留存。魔术礼帽CSGOM4A1削弱影响CT胜率下降明显日前数据统计网站leetify统计了从2021年7月20日到2023年1月13日官方匹配比赛中共计5。4亿个回合,限定为服役地图。从地图上看,受M4A1削弱影响最大的地图是Anci白发长在哪,病就从哪来?这3处尤其要注意人未老,头先白,这是众多人的生活写照,明明有着年轻美丽的容貌,却有一头白发,看起来显老。导致白发生长的原因有很多,包括疾病缺乏微量元素吸烟精神压力太大等。从中医看来,白发生长在哪个男人就要偷偷补肾,然后惊艳所有人!5种补肾超强的中成药请收好今天我们来聊一个很普遍又比较实质性的话题,那就是肾虚。说起肾虚可能会很多人想到的是纵欲过度,并不是啊,导致肾虚的原因有很多种,比如长期熬夜,暴饮暴食,大喜大悲,抽烟酗酒等,都会是导生吃番茄,番茄红素能吸收吗?也能吸收一点,但不多。番茄红素是类胡萝卜素的一种,番茄番石榴西瓜木瓜和粉红葡萄柚等等蔬菜水果里都有。番茄红素抗氧化性很强,能较好地清除活性氧,从而阻挡氧化损伤,观察性研究发现它和降要照顾好自己今天做完午饭给爷爷,吃完饭后,爷爷突然头晕了起来,因为年龄也大了,有些老年疾病也正常。刚开始我也没太在意,就跟爷爷聊天是不是缺少微量元素了。通过聊天我又想到微量元素缺少会眼前发黑呀肠道里长了息肉,上厕所时早有提示,别等到中晚期才发现刘女士今年65岁了,在两年前,刘女士做肠镜检查的时候,被发现肠道内有一厘米左右大小的息肉,病理结果显示为管状腺瘤。但是刘女士认为身体没有其他不适症状,所以就没进行下一步的治疗,但是日版switch下载游戏慢怎么办如果您在使用日版Switch下载游戏时遇到了下载速度缓慢的问题,以下是一些可能会有所帮助的解决方法确认您的网络连接稳定。尽量使用有线网络连接,避免使用WiFi连接或者移动网络数据,