jsp/jstl/el精讲

574 篇文章 4 订阅
272 篇文章 1 订阅

jsp
第一章 jsp概述
1-1 什么是jsp
jsp是服务器响应页面
jsp是嵌入java代码的html

	jsp的本质(是后端程序)就是servlet,也是用来接收并处理请求的后台程序.

1-2 jsp执行原理及存放路径
(1)jsp执行原理
html的执行原理:
浏览器发出请求访问html资源,服务器接收请求,服务器看到浏览器发出的是要找到html资源的请求,服务器会找到相应的html资源,直接返回给浏览器,浏览器接收html.

jsp的执行原理:
	浏览器发出请求访问jsp资源,服务器接收请求,根据浏览器发出的请求找到了相应的jsp资源,然后将jsp资源首先翻译成为java临时文件(jsp中的内容都是以java文件中响应流的形式存在的),然后java临时文件再编译成为class文件.最终执行的是class文件.jsp中的内容,都是以class文件中的响应流的形式进行的输出.

(2)jsp临时文件存放路径
tomcat/work

(3)jsp的运行流程图示

在这里插入图片描述

1-3 jsp字符编码设置及环境的搭建
jsp页面3处字符编码,都修改为UTF-8
pageEncoding=“UTF-8”:
jsp页面本身的字符编码
contentType=“text/html; charset=UTF-8”:
设置响应流的字符编码

: 设置响应头信息,服务器告诉浏览器,要以utf-8的编码形式来打开响应 jsp字符编码的环境统一设置的方式 window属性 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181114143520302.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwMzQ3MTMz,size_16,color_FFFFFF,t_70)

1-4 jsp临时文件生成案例
(1)html代码错误的情况
正常生成java临时文件,正常编译成class文件
(2)java代码编译时错误的情况(语法)
正常生成java临时文件,由于编译出错,所以不能生成class文件.
(3)java代码运行时错误的情况
正常生成java临时文件,也能够正常编译成class文件,只不过在执行class文件的时候报500错误.
(4)jsp出现500错误应该去哪里调试
在jsp文件中做修改
但是生成的java临时文件可以做错误的参考依据
第二章 jsp中base标签的使用
2-1 相对路径示例

2-2 绝对路径示例

2-3 加入basePath变量的绝对路径示例
<%
String basePath = request.getScheme() + “?/” + request.getServerName() + “:” + request.getServerPort() + request.getContextPath() + “/”;
%>

2-4 basePath变量结合base标签使用示例
head下第一行引入
在这里插入图片描述

2-5 练习:使用base标签做图片的引入

2-6练习:使用base标签做css和js文件的引入

第三章 小脚本scriptlet
3-1 <% %>的使用
代码统一生成在_jspService方法中(代码生成在方法体中)
3-2 <%! %>的使用
代码统一生成在_jspService方法的外面(代码生成在类体中)
实际项目开发中,用不到

3-3 <%-- --%>的使用
作为java脚本的注释,该形式为jsp文件专业级别的注释,可以注释html代码,但是主要用来注释java脚本.
使用该形式的注释,查看网页源代码,看不到注释的内容.
3-4 <%= %>的使用
out.print();

以下练习目的:练习java脚本的拼接
以下练习:遇到前端内容的显示,就拆分java脚本
3-5 练习:用*输出10乘10的列表





……

3-6 练习:打印学生信息列表

第四章 jsp的指令directive
4-1 jsp指令概述及语法
(1)概述
声明jsp页面的所需属性和动作
(2)语法
格式:<%@指令名称 属性=“值” 属性=“值”%>

4-2 jsp指令的分类
(1)page指令:主要声明jsp页面的一些属性
(2)include指令:静态包含.
(3)taglib指令:导入标签库
(4)使用指令的注意事项
一个页面中可以出现多个指令
指令可以放在任意位置,一般都放在jsp页面最上面

4-3 page指令
page指令常用属性
contentType:设置响应流的编码,及通知浏览器用什么编码打开
pageEncoding:设置页面的编码
import:导入所需要的包

page指令非常用属性
language:当前jsp页面里面可以嵌套的语言
session:设置jsp页面是否可以使用session内置对象
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面,若值为true,可 以使用jsp页面的一个内置对象 exception
4-4 include指令
包含作用,可以使一个jsp包含另一个jsp
使用include指令的包含形式为一种静态的包含形式
包含文件和被包含文件最终只生成一组java和class临时文件.所以包含文件和被包含文件中的所有的内容被统一生成在了唯一的jspService方法中,所以变量不能重名.
4-5 taglib指令:(JSTL中讲解)
用来导入标签库
格式:<%@taglib prefix=“前缀名” uri=“名称空间” %>

4-6 jsp动作标签
(1)jsp:forward:转发标签

(2)jsp:include:包含标签
	包含文件和被包含文件分别独立的生成各自的java和class临时文件,自己文件中的代码生成在了自己临时文件中的jspService方法中,所以不用担心变量的重名.

4-7 jsp的九大内置对象(在实际项目开发中用不到)
(1)jsp的九大内置对象
内置对象 类型
out JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
exception Throwable
page 当前Servlet(this)
config ServletConfig
application ServletContext
pageContext PageContext
(2)jsp中的域对象
pageContext 一个页面
request 一次请求
session 一次会话
application 整个项目
(3)使用pageContext当做其他的域对象使用
scope取值:
APPLICATION_SCOPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
(4)使用pageContext获取其他内置对象
get…
4-8 实战:使用servlet结合jsp的方式完成学生信息管理系统

学生信息管理系统
增删改查

没有使用jsp时的做法
在这里插入图片描述
使用了jsp之后
在这里插入图片描述

分析以上两种开发模式,各有优缺点
第一种
优点:连jdbc,取sList方便
缺点:使用响应流响应sList数据麻烦

第二种:
优点:响应sList数据方便
缺点: 连jdbc,取sList必须写java脚本

我们未来的在企业中的开发模式,是将二者优点相结合
产生的第三种开发模式
取servlet的连jdbc取sList数据的部分
取jsp的响应sList数据的部分
在这里插入图片描述

跳转到修改页 开发模式1
在这里插入图片描述

分析以上开发模式,如果参数量过多,或者参数的值过大,那么浏览器的地址对于参数的传递有可能传递的不全
未来的实际项目开发,基于以下开发模式
跳转到修改页 开发模式2
在这里插入图片描述
EL&JSTL
第一章 EL表达式
1-1 EL表达式概述
(1)什么是EL表达式
EL:Expression Language表达式
(2)EL表达式的作用
a.获取数据
取得域中的数据
在jsp中代替 getAttribute()
取得参数值
在jsp中代替 getParameter()
取得全局参数的值
在jsp中代替 上下文.getInitParameter()

	b.执行运算

1-2 EL表达式的语法
${数据或运算}
使用el表达式,都是使用key来取得value
${key}
1-3使用EL来获取域中的数据
(1)xxxScope隐含对象的使用
${pageScope|requestScope|sessionScope|applicationScope.属性名}

(2)xxxScope的省略方式
	当我们使用el表达式取值的时候,如果没有使用xxxScope隐含对象指定从哪个作用域取值,那么默认会从最小的域开始搜索key.如果搜索到了,则显示key所对应的值.如果搜索不到,则继续向上一个较大的域继续搜索.如果搜索到最大的域,始终没有搜索到key,那么el表达式为我们返回空串.
	在我们实际项目开发中,我们一般为了方便,习惯于省略掉xxxScope,那么我们在不同的作用域设置值的时候,key就不能重复了.

(3)EL表达式对于空串的处理
	将null值,返回以空串

1-4 使用EL表达式取得其他常用类型的值
(1)获取数组值
域 中 的 名 称 [ i n d e x ] 例 如 : {域中的名称[index]} 例如: [index]{strArr[1]}
(2)获取List值
域 中 的 名 称 [ i n d e x ] 例 如 : {域中的名称[index]} 例如: [index]{strList[1]}
(3)获取Map值
域 中 的 名 称 . 键 名 例 如 : {域中的名称.键名} 例如: .{strMap.m1}
(4)获取domain中的属性值
域 中 的 名 称 . 属 性 例 如 : {域中的名称.属性} 例如: .{p.name}

1-5 EL执行运算
(1)EL执行运算的方式及返回值
在这里插入图片描述
(2)使用EL表达式执行简单的运算
1-6 EL中的其他常用隐含对象
(1)pageContext
常用方式:${pageContext.request.contextPath}
(2)param
获取请求参数
(3)paramValues
获取请求参数数组,搭配jstl迭代来使用
(4)initParam
获取全局参数

第二章 JSTL标签库
2-1 JSTL标签库概述
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x以上。在JSP 2.0中也是作为标准支持的。

2-2 JSTL标签库的作用
结合EL表达式来使用,代替jsp页面中的scriptlet。
2-3 JSTL的分类
core:核心类库
fmt:格式化|国际化
xml:已过时
sql:已过时
函数库:平时很少使用

2-4 JSTL使用步骤
(1)导入jar包 (jstl.jar和standard.jar)

(2)在页面上导入标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

(3)引用方式:
		c标签:所需功能

2-5核心类库core需要掌握的内容
(1)c:if
使用方式:
<c:if test=" e l 表 达 式 &quot; &gt; 满 足 的 时 候 输 出 的 内 容 &lt; / c : i f &gt; 例 如 : &lt; c : i f t e s t = &quot; {el表达式}&quot;&gt;满足的时候输出的内容&lt;/c:if&gt; 例如: &lt;c:if test=&quot; el"></c:if><c:iftest="{5>3}">
5大于3
</c:if>

(2)c:forEach
	使用方式
		<c:forEach begin="从那里开始" end="到那里结束" step="步			长" var="给变量起个名字" varStatus="循环状态变量">
			${i }--${vs.count }<br>
		</c:forEach>
		例如:
		<c:forEach begin="1" end="3" items="${strList}" step="1" 				var="str">
				${str}
				<br/>
		</c:forEach>
(3)c:set 和 c:choose的使用(了解)
	<c:set var="count" value="4"/>
	<!-- 相当于 pageContext.setAttribute("count",3)  -->
	<c:choose>
		<c:when test="${ count ==1 }">
			计数1
		</c:when>
		<c:when test="${ count ==2}">
			计数2
		</c:when>
		<c:when test="${ count ==3 }">
			计数3
		</c:when>
		<c:otherwise>
			不在范围内
		</c:otherwise>
	</c:choose> 

第三章 学生信息管理系统的重构
3-1 重构需求
(1)使用el结合jstl的方式,对学生信息列表进行重构
(2)使用el对修改页的取值进行重构
(3)从学生列表页跳转到学生添加页,使用按钮绑定事件的方式 来实现
(4)学生添加操作和学生修改操作,使用jquery的方式来提交表 单
(5)在学生信息列表页扩充修改按钮,删除按钮,配合列表第一列 的复选框来实现跳转到修改页的操作和执行删除操作

(6)使用修改按钮跳转到修改页
(7)使用删除按钮执行删除操作
(8)使用删除按钮实现可批量删除操作
(9)批量删除时需要注意的问题
(10)在列表页上加入全选操作,列表实现隔行变色操作

1.Servlet和JSP都属于动态网页技术*

理解

2.单纯的Servlet不能进行动态网页开发吗?为什么还要引入JSP?*

理解
不理解

3.jsp和servlet各自职责是什么*

jsp的本质(是后端程序)就是servlet,也是用来接收并处理请求的后台程序.
jsp最主要的作用就是将数据输出到浏览器,做页面展示.

servlet:接收并处理请求的后台程序.

4.JSP是基于Java语言实现的服务器端页面:Java Server Pages。实际上JSP还是Java语言,做服务器端开发的,不属于前端技术。*
jsp是服务器响应页面
jsp是嵌入java代码的html
jsp的本质(是后端程序)就是servlet,也是用来接收并处理请求的后台程序.

5.jsp文件的扩展名为jsp或jspx,这个可以通过tomcat服务器的web.xml文件查看到。*

知道

6.jsp文件执行原理是什么?*

	浏览器发出请求访问jsp资源,服务器接收请求,根据浏览器发出的请求找到了相应的jsp资源,
	然后将jsp资源首先翻译成为java临时文件(jsp中的内容都是以java文件中响应流的形式存在的),
	然后java临时文件再编译成为class文件.最终执行的是class文件.jsp中的内容,
	都是以class文件中的响应流的形式进行的输出.

7.jsp文件为什么第一次访问的时候速度较慢?*

出的请求找到了相应的jsp资源,然后将jsp资源首先翻译成为java临时文件(jsp中的内容都是以java文件中响应流的形式存在的),
然后java临时文件再编译成为class文件.最终执行的是class文件.jsp中的内容,
都是以class文件中的响应流的形式进行的输出.

8.jsp文件在什么时候会进行重新编译,服务器依据什么来进行重新编译?*

知道
不知道

9.jsp最主要的作用就是将数据输出到浏览器,做页面展示。*

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import ="com.wkcto.domain.Student,java.util.*"
%>
Insert title here <% Student s1 = new Student("A001","zs",25); Student s2 = new Student("A002","ls",26); Student s3 = new Student("A003","ww",27); Student s4= new Student("A004","zl",28); Student s5 = new Student("A005","sq",29); List slist = new ArrayList(); slist.add(s1); slist.add(s2); slist.add(s3); slist.add(s4); slist.add(s5); %> <% for(int i=0;i
序号 编号 姓名 年龄 操作

10.jsp会被翻译为java类,jsp翻译的类继承HttpJspBase,而HttpJspBase继承HttpServlet,说明jsp就是Servlet。*

理解
不理解

11.jsp被翻译的java程序,以及编译生成的class字节码被存放到tomcat服务器的work目录下*

知道
不知道

12.jsp文件语法错误,会被翻译生成java源文件吗?*

正常生成java临时文件,由于编译出错,所以不能生成class文件.

13.jsp运行出现问题之后,我们应该去java源文件中调试错误*

(1)java代码运行时错误的情况
	正常生成java临时文件,也能够正常编译成class文件,只不过在执行class文件的时候报500错误.
(2)jsp出现500错误应该去哪里调试
	在jsp文件中做修改
	但是生成的java临时文件可以做错误的参考依据

14.jsp中专业的注释怎么写?*

    作为java脚本的注释,该形式为jsp文件专业级别的注释,可以注释html代码,但是主要用来注释java脚本.
使用该形式的注释,查看网页源代码,看不到注释的内容.

15.jsp中怎么写中文?*

pageEncoding=“UTF-8”:
jsp页面本身的字符编码

16.jsp中编写的html css js代码对于jsp来说都是普通字符串,这些代码只有被jsp输出到浏览器之后,浏览器才会将其解释执行。*

理解
不理解

17.<%%> 里面的java语句会被翻译到哪里?*

	代码统一生成在_jspService方法中(代码生成在方法体中)

18.<%!%>里面的java代码被翻译到哪里?*

代码统一生成在_jspService方法的外面(代码生成在类体中)
实际项目开发中,用不到

19.<%=%>被翻译到哪里,被翻译成什么代码,主要作用是什么?*

等价于响应流–> out.print(); 浏览器页面中,作为浏览器页面的展示。

20.include指令原理,include动作原理,它们的区别以及怎么选择使用?*

include指令
包含作用,可以使一个jsp包含另一个jsp
使用include指令的包含形式为一种静态的包含形式
包含文件和被包含文件最终只生成一组java和class临时文件.所以包含文件和被包含文件中的所有的内容被统一生成在了唯一的jspService方法中,所以变量不能重名.

    jsp:include:包含标签

包含文件和被包含文件分别独立的生成各自的java和class临时文件,
自己文件中的代码生成在了自己临时文件中的jspService方法中,所以不用担心变量的重名.

21.page指令当中常见属性都理解吗?pageEncoding,contentType,import,session,errorPage,isErrorPage*

page指令常用属性
contentType:设置响应流的编码,及通知浏览器用什么编码打开
pageEncoding:设置jsp页面的编码
import:导入所需要的包

 page指令非常用属性
language:当前jsp页面里面可以嵌套的语言
session:设置jsp页面是否可以使用session内置对象
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面,若值为true,可以使用jsp页面的一个内置对象 exception

22.jsp九大内置对象其实就是Servlet类当中的9个变量名,分别是什么*

  out/request/response/session/application/config/page/exception/pegeContext

23.九大内置对象分别对应的是哪个类*

                  内置对象			                             类型
		out			        JspWriter
		request			         HttpServletRequest
		response			 HttpServletResponse
		session				HttpSession
		exception			Throwable
		page				当前Servlet(this)
		config				ServletConfig
		application			ServletContext
               pageContext		        PageContext

24.九大内置对象当中有四个域对象,从小到大排序为:*********

pageContext < request < session < application

25.通过pageContext对象可以获取request对象:pageContext.getRequest()*

知道

26.能够独立完成用户登录,并且登录成功后可以将用户信息存储到session范围当中。当用户访问系统中某些资源的时候验证该用户是否登录。*

能
不能

27.登录成功之后可以访问到学生信息列表页/学生添加页面/修改页面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值