学习JavaWeb第十五天

学习JavaWeb第十五天
JSP : 运行在服务器的页面
1、JSP的运行方式
  • jsp的工作模式是请求/响应模式,客户端首先发出HTTP请求,JSP程序收到请求后进行处理并返回处理结果。在一个JSP文件第一次被请求时,JSP引擎(容器)把该jsp文件转换成一个servlet,而这个引擎本身也是一个Servlet。
  • 转换过程:
    • 1、客户端发出请求,请求访问jsp文件
    • 2、jsp容器先将jsp转换成一个Java源文件,在转换的过程中如果发现jsp文件中存在任何语法错误,则终止转换过程,并向服务器返回错误信息.
    • 3、如果转换成功,则jsp容器将生成的java源代码编译成响应的字节码文件.class改文件就是一个Servlet,Servlet容器会像处理其它Servlet一样来处理它。
    • 4、由Servlet容器加载成功后的Servlet类,(.class)文件创建一个Servlet实例,并执行Servlet的jspinit()方法,jspinit()方法在Servlet整个生命周期中只执行一次
    • 5、执行JSPService方法来处理客户端的请求,对于每一个请求,JSP容器都会创建一个线程来处理它,如果多个客户端同时访问当前jsp,那么JSP容器会创建多个线程使得每个客户端请求都对应有一条线程去处理,用这种方式来去提高系统的并发量,和缩短响应时间
    • 6、如果jsp文件发生更改了,则服务器将根据设置决定是否对该文件进行重新编译
    • 7、虽然Jsp效率很高,但是在第一次调用的时候由于转换和编译所以会有轻微的延迟
    • 8、当请求处理完成后,响应对象由jsp容器接收,并将HTML格式响应信息发送回浏览器
      在这里插入图片描述
2、JSP和Servlet区别
  • 1、jsp主要页面显示,JSP擅长视图层、Servlet擅长控制层。
  • 2、Jsp在tomcat转化成Servlet的时候给予了9大内置对象,而Servlet不叫内置对象。
  • 3、JSP实质是简化版的Servlet(只负责页面相关)、Servlet功能比较全面。
  • 4、Jsp不算是一个完整的Java类(需要依赖tomcat生成),Servlet纯粹的类。
3、Jsp基础语法
  • JSP脚本元素 语法:<% 嵌套java代码即可 %>(相当于java里面填写局部的变量、方法调用等)
  • Jsp的声明语句 用于声明变量和方法 <%! 内容 %> (相当于在类里面的成员变量和方法)
  • 输出语句 <%=java要输出的值 %> (填写的方法需要有返回值)

jsp中的三大指令:page(描述页面)、include(页面包含)、taglib(表达式引入)

  • page:在jsp页面中,经常需要对页面的某些特效进行描述,例如,页面的编码方式、jsp页面采用的语言等,这时可以通过page指令来实现,page指令的具体语法格式如下所示 描述页面信息
    • 语法<%@page 属性=” 值” 属性=” 值” 属性=” 值” 属性=” 值” %>
    • 一般用法描述:< %@ page contentType=“text/html;charset=UTF-8” language=“java” % > contentType="text/html表示jsp中的类型,charset=UTF-8"设置其编码格式, language="java"语言,errorPage="welcome.jsp"页面发生异常所有加载的页面
    • 基本属性
      • ContentType:有效的文档类型,客户端浏览器根据该属性判断文档的类型,例如:HTML格式为text/html纯文本的格式为text/plain jpg图像为image/jpeg…
      • charset 设置其编码格式
      • Language : 指解释该jsp文件是采用的语言,默认为java
      • Import : 导java包或类,impor是唯一可以声明多次的page指令属性,一个import属性可以引用多个类,中间用英文都好分割
      • IsErrorPage : 声明当前页面是否是一个错误页面,默认值是false,如果为true 则该jsp内置有一个Excepetion对象,可以直接使用
      • ErrorPage:指定一个错误页面,如果该servlet程序跑出一个未捕捉的异常,则转到errorPage指定页面。errorPage指定页面的isErrorPage实现为true,且内置的exception对象为未捕捉的异常
      • Session :声明当前Jsp是否初始化Session内置对象 默认是true表示初始化
  • include:在实际开发时,有时需要在jsp页面静态包含一个文件,例如html文件、文本文件等,这时可以同include指令来实现(即引入其它jsp文件 、基本上都是公共的部分)
    • 注意点:include静态包含将2个jsp合成一个jsp 生成一个servlet
    • 语法:<%@include file=”页面名称” %>
  • taglib:指令一般引用第三方的表达式比如jstl表达式,fmt格式化时间的
    • 语法:<%@taglib prefix=“简称” uri=“具体的表达式的连接” %>
EL表达式:简化jsp里的代码,用于获取存于内置(request, respone servletContext)对象的值
  • 语法: ${ 作用域对象的名称 }
  • 注意点:使用el表达式来获取对象,必须给这个对象set与get 方法
    • 获取的语法:${对象名称.属性的名称}
  • EL作用:避免简单的错误 做些简单的算术 获取内置对象作用域下的值
  • 运算符如图:
    • 在这里插入图片描述
JSTL标签库:与 el搭配使用,简化jsp里的代码
  • jstl表达式使用步骤:
    • 1.导入jar(添加依赖)
      • jstl.jar
      • standard.jar
    • 2.引用相应的标签库 jstl
      • <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
      • 解析:prefix="c"表示前缀,一般取名为c,可以修改(但不建议),uri="http://java.sun.com/jsp/jstl/core"表示引入的核心库(也就是网址),写法固定
  • 常见表达式:
    • 1.< c:set var=“pang” value=“变量值” scope=“session”></ c:set>:设置一个变量,var为变量的名称,value为值, scope为哪个域(没指定scope 默认是 pageContext域)
    • 2.< c:if test="${pang !=null}"> 写的内容 </ c:if>:用于做判断,test 里便是判断的条件
    • 3.表示多分支if选择结构
	<c:choose>
		<c:when test=" $ {pang==20}" >
			年龄为20
		</c:when>
		<c:when  test="${pang>=22}">
			下一个就是你了
		</c:when>
		<c:otherwise>
			找了一个
		</c:otherwise>
	</c:choose>
  • 4.遍历集合的标签
<c:forEach items="${registerList}" var="register" 
				varStatus="statu" begin="1" end="5" step="2">
		${register.id}<br/>
		${register.name}
</c:forEach>
	- Items:表示需要遍历的集合
	- var="register":表示每次遍历的对象
	- varStatus:表示其索引
	- index 下标
	- count 序号
	- begin:表示从几开始遍历
	- end:到什么时候结束
	- step:步长,每次遍历的间隔
  • 5.<c:out value=“ddd”></c:out>:就是打印,把value的值打印到网页上。 可以输出域对象中的内容 、可以输出自定义内容
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值