学习笔记整理-Web应用技术开发复习3-jsp、javabean、EL标签、JSTL标签库

本文介绍了jsp的概念、基本语法和隐式对象,强调了JavaBean的编码规范和在jsp中的使用,以及EL标签简化表达式的作用。此外,还详细讲解了JSTL的核心标签库,如<c:out>、<c:set>、<c:if>和<c:forEach>等。
摘要由CSDN通过智能技术生成

以下内容为个人的学习笔记整理,如有错误,请指出,谢谢~


一、jsp

1、jsp概念:是建立在Servlet规范之上的动态网页开发技术。在jsp中,html和java代码共同存在,html实现静态内容Java用来实现网页动态内容。文件扩展名为.jsp。

2、基本语法

24a001a9b5df4448823c307cc7ccc99a.png

①jsp模板元素:其静态html内容称为jsp模板元素。jsp模板元素定义了网页的基本骨架。
②scriptlet元素:在jsp页面中,使用<% %>格式嵌套java代码。
910f9f1897a648dd80ef6bfe90b16175.png

注意:使用<%=expression%>格式,在Scriptlet中声明变量是在服务方法之内的局部变量。 
使用<%!Java代码 %>格式,被声明的Java代码将被翻译到Servlet的_jspService()方法之外,即在JSP声明中定义的都是成员方法、成员变量、静态方法、静态变量、静态代码块等。

③page指令:在JSP页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式,JSP页面采用的语言等,可以通过page指令来实现,语法格式:<%@ page 属性名= "属性值"%>
常用属性名有:
08aa1f244bd44e30b842a2668c1ade44.png

5066f633eff94f34ba8b3f3f1637f72f.png 7748a63d77854057a495ffa97725509c.png

 ④可以在xml文件中配置页面错误转跳页面:
7477d4ad38dd49d99968f64a28f4dac8.png

⑤include指令:
有时候需要在JSP页面静态包含一个文件,例如HTML文件,文本文件等,可以通过include指令来实现,语法格式:<%@ include file="relativeURL"%>
其中file属性用于指定被引入文件的相对路径,如果以"/"开头,表示对于当前web应用程序的根目录。被引入的文件必须遵循jsp语法,其中可以是静态hrml,jsp脚本元素和jsp指令等普通jsp页面所具有的一切内容。除了指定元素,被引入的文件中其他元素被换成相应的java代码,然后插入当前jsp页面所翻译的servlet源文件中,插入位置与include指令在当前jsp页面中位置保持一致

 3、jsp的九个隐式对象:


da40bff366474075beda069ba8e9c317.png

a9dc103f624c4502afd2deaec1426e2a.png ①out对象:在jsp页面中,向客户端发送文本内容的时候可以使用out对象,out对象是javax.servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,不同的是,out对象的类型为JspWriter,它相当于一种带缓存功能的PrintWriter。所以如果response.getWriter().println("")和out.println("")相比下,会让前者先输出
除非加25886e8451094386b04d4b173f21884e.png

 那么就可以按顺序输出了。 

 ②requst对象
String getParameter(String name):根据页面表单组件名称获取请求页面提交数据
String[ ] getParameterValues (String name):获取页面请求中一个表单组件对应多个值时的用户的请求数据
Enumeration getParameterNames( ):获取请求所有参数
getSession([boolean]):获取、创建会话
setAttribute(属性,属性值) :设置请求属性
getAttribute(属性) :获取请求属性

response对象
void setContentType (String name):设置作为响应生成的内容的类型和字符编码void sendRedirect (String name):发送一个响应给浏览器,指示其应请求另一个URL(重定向)

session对象:web服务器为单个用户发送的多个请求对话,存储有关用户会话的所有信息
setAttribute(String name,Object value)
getAttribute(String name)
getId()
inValidate()
removeAttribute(String name)

application对象 :作用在jsp页面所属的应用程序(类似于servletcontext)
setAttribute(String name,Object value)”以键/值的方式,将一个对象的值存放到
application中getAttribute(String name):根据名称去获取application中存放对象的值

pageContext对象:使用户可以访问页面作用域中定义的所有隐式对象,它的作用范围是在同一个页面
4344908d932a4bf1a3eeebf1e00649a6.png

 除了可以获取隐式对象,还提供了存储数据的功能:
50645bc4d492463ca94cb0b0ea230abd.png
注意:参数scope指定的是属性的作用范围有四个值
pageContext.PAGE_SCOPE:表示页面范围
pageContext.REQUEST_SCOPE:表示请求范围
pageContext.SESSION_SCOPE:表示会话范围
pageContext.APPLICATION_SCOPE:表示Web应用程序范围
当使用findAttribute()方法查找名称为name的属性时,会按照page、request、session和application的顺序依次进行查找(从小到大),如果找到,则返回属性的名称,否则返回null。

page对象:代表jsp正在运行所产生的类对象本身,只在jsp页面中使用。page对象本质上包含当前servlet接口引用的变量,类似于this。

config对象:存储在编译jsp页面过程中创建的servlet信息,提供了检索servlet初始化参数的方法。
b6e5aa7518304c3fa12b399628cfa942.png

2d6431be645e45baab977c04f7c9eb09.png

 ⑨exception对象:在jsp页面在,经常需要处理一些异常信息,可以通过exception对象实现。封装jsp抛出的异常信息,其只能在错误处理页面才可以使用(page指令中指定了属性<%@ page isErrorPage=”true”%>的页面)
47ab5d963f794143a00bc523684d8bd6.png

4、jsp的标准动作

 ①jsp动作利用xml语法格式的标记来控制servlet引擎行为,利用jsp动作可以动态的插入文件重用Javabean组件把用户请求重定向到另外的页面为Java插件生成html代码
常用有:<jsp:include>、 <jsp:param>、 <jsp:forward>、 <jsp:useBean>、 <jsp:setProperty> 、<jsp:getProperty>

<jsp:include>:用来把指定文件(文本、html、jsp)插入正在生成的页面中,还可以向被加载的jsp文件传递参数
9b63c479ddfa4e178208a4923a387323.png

 page:<jsp:include>动作的必选属性,指明要包含文件的路径
flush属性:用于指定输出缓存是否被转移到被导入的文件,true时,则包含在被导入文件,为false时,则包含在源文件中
07f7bd8d7e4f4eb7b5a1725e07a188dc.png

 ③<jsp:include>和<jsp:param>一起使用:
16ee8d46b3b046d08ce01eec555e5e2f.png

69a2a8b0dff24ff1bb56576c4e73dbb0.png

 ④<jsp:forward>:请求转发到另一个页面,在请求的过程中会连同请求的参数一起转发到目标页面,只有一个page属性:
<jsp:forward page="relativeURL"  />  或者
<jsp:forward page="fileName"">
        <jsp:param  name="paramName"  value="paramValue"/>
</jsp:forward>

2858f573e8534dbb9e7d0221ee8820fd.png

57a26dbf1f074e53bbf68d47c8423271.png

二、javabean

1、JavaBean是java开发语言中一个可以重复使用的软件组件,本质就是一个java类。用其实现业务功能的扩展,使jsp页面干净简洁。

2、标准JavaBean组件需要遵循的编码规范:
必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的缺省构造方法。
②提供公共的setter和getter方法让外部程序设置和获取JavaBean的属性。
ef828387b19f4b219fb12f2cb8042be8.png

 3、<jsp:useBeaan>标签用于某个指定域范围(pagecontext/requst/session/application)中查找一个指定名称的JavaBean对象,如果存在则返回对象的引用,如果不存在则实例化一个新的JavaBean对象并将它按照指定的名字存储在指定域的范围中。

c93853982832427693acddcfdd11a54b.png

 caca7421656945aab51944085f09ec5f.png

 4、<jsp:setProperty>标签为 bean的属性赋值
①指定属性名,为其赋值:<jsp:setProperty name="对象名" property="属性名" value="属性值 ">
其对象名跟usebean中的id是一样的。


②属性名为请求参数名:0e1d5e11fe8246f3b234a216481c2551.png

72e3e94addb24753b15e3e1e3114920d.png

4f733b43b67640bdaa417d9bfecee854.png

 

③利用param属性,把指定属性名设置为一个请求参数的值:
<jsp:setProperty  name=“id” property=“属性名”  param=“请求参数名”/>

④所有请求参数名与bean属性名相同
<jsp:setProperty name=“id” property=“*”/>

5、<jsp:getProperty>标签获取bean的属性值
163ca1083c204153b69b821c420b0cd8.png

 三、EL标签

1、jsp页面中经常利用jsp表达式<%=%>来输出声明的变量以及页面传递的参数,当变量很多的时候,就会变得累赘,EL标签简化了表达式。如果在某个页面中禁止EL标签,可通过page指令设置:<%@page isELIgnored=”true” %>
EL标签语法形式:${参数名}

2、EL标签的功能;
①可以访问jsp中不同域的对象。
7d7d23012c9b43919bdf5d3275a0dbb5.png
②可以访问javabean中的属性。
7b398760fde94991b115ff3cf592f539.png
③可以访问集合元素。
e6faca92dea44f7491a3c1d05fe779b4.png
④支持简单的运算符操作。

023aed9ceab344afbd8dfaed5ac5d391.png

e137fdc23b8e4e8fb0cfb91ea3e2c9c2.png3、EL标签的隐式对象有12个

 ①pageContext:与JSP中的pageContext对象相同,可以获取其它对象。
7bc00dd231144bb7994347f0b7aa128d.png

 ②与范围有关的4个:
pageScope、requestScope、sessionScope、applicationScope它们基本上和JSP的pageContext、request、session和application一样,JSP中的4个对象除获取属性外,还可以有其它用途,例如:JSP中的request对象除可以存取属性之外,还可以取得用户的请求参数或表头信息等等。 但是在EL中,它就只能单纯用来取得对应范围的属性值
例如: ${sessionScope.username}可获取session 中名为username的属性值,相当于JSP 中的session.getAttribute("username")  

③与输入有关的2个:
param:按名称存储请求参数单一值的Map类
paramValues:请求参数的所有值构成的String数组
例如:
${param.name} 相当于:request.getParameter(“name”)
${paramValues.hobby} 相当于:request.getParameterValues(“hobby”)

④与请求头有关的2个:
header:请求头参数值的Map类。例如:${header.host}
header Values:请求头参数的所有值构成的 String 数组

⑤获取web应用程序初始参数的隐含对象:initParameter
例如:${initParam.userid} 相当于
String userid = (String)application.getInitParameter(“userid”);
用来获得名为userid的web上下文参数

 ⑥获取Cookie对象的隐含对象
例如:要取得cookie中有一个名color的值,可以使用${cookie.color}来获得

 四、JSTL标签库

1、jstl是Apache的jakarta小组开发的一个开源jsp标准标签库,是一组与html标签相似但又比html标签强大的功能的标签,编程人员可以通过它编写出动态的jsp页面。

2、优点:
①简化jsp和web程序的开发,本需要大量的java代码完成的功能,可以用少量jstl代码代替。
②jstl可读性强,易于理解。
桑拿利用jstl标签编写的web程序易于维护。

3、jstl两种使用方式:
①官网下载,将jstl.jar和standard.jar添加到项目中,如果需要Tomcat中所有项目都能使用JSTL,将两个jar包拷贝到Tomcat安装目录中的lib文件夹中;
②在pom.xml添加依赖866c2580d35f4eda964ffdf5eaf0c89f.png

4、在jsp页面中使用JSTL标签,需要使用taglib指令,例如引入核心库(core),格式如下:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
085bcd4892f3414c92906bcfbb6bc7f9.png

5、 jstl标签中的标签库主要分为五类:
core标签库(核心):包括通用标签(输出标签)、流程控制标签和循环控制标签。
fmt标签库:包括格式化、国际化标签。
fn标签库:函数标签库。
xml标签库:有关xml操作的标签库。
sql标签库:操作数据库的标签库。

6、<c:out>标签:用于显示数据的内容,类似于<%=%>,使用方式为:
<c:out value=“…  “ escapeXml=“true|false” default=“缺省值”/>或者
<c:out value=“…  “ escapeXml=“true|false” >
        缺省值
</c:out>
注意:
①只有当value的值为空时,才会输出缺省值
②default属性不能与标签体同时出现;
③escapeXml属性值为false,以下字符不转为字符串输出
<(&lt;) >(&gt;) &(&amp;)  ‘(&#039;)  “(&#034;)

7、c:set标签:用于在某个作用域范围中设置某个值,或者设置某个对象(JavaBean、Map)的属性
c746c0228b484eeb806a5cecb28bd63a.png①<c:set>中不能同时有var和target属性(要么设置某个变量的值,要么设置某个对象的属性)
②scope是可选的,默认为page
③如果value为null,var指定的属性将被删除

删除变量的话:
cbcc92a430bf4ae7b8a6da46d0718a74.png

 8、<c:if>标签:用于if条件语句测试,无else匹配有局限性
<c:if test="条件表达式" var="true/false" scope="范围" >或者
<c:if test="条件表达式" var="true/false" scope="范围" >
        标签体
</c:if>

9、<c:choose>标签:用于条件选择,常常和<c:when>以及<c:otherwise>使用。
649586d3e78e408485e75348ec151b40.png
​​​​​​

10、<c:forEach>标签:对某一段标签体内容遍历多次或者遍历一个对象集合。
b1e184298dfb414ba0190e4f8b01f032.png

①var变量名存放每一次迭代的内容
② varStatus(属于loopTagStatus类,其中属性count、index、last、first):用来保存当前迭代的状态。
bed24d1209204c67a41a25ebcd0740f1.png

194f2783dceb4124af76b43e88928202.png

 11、forTokens标签:遍历一组由指定分隔符隔开的字符串,类似于Java中的split()方法。

a56fdfe37086414a8715b99d01846e5e.png

 12、<c:catch>标签:用于异常捕获
542a69fb132443498bc7a152210acd04.png

 13、<c:url>标签:将URL格式化为一个字符串,然后存储在一个变量中
827c54374e9347298a406f86d97ed46c.png

 14、<c:import>标签:提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL。
b9ab969632784b9099dc3b12a2da5b74.png

15、851c6882df0543649124798693b0c11f.png 

 16、fn标签库使得处理字符串变得简单
若要使用fn标签库,需要在jsp页面的头部加入如下语句:
ca461552f86a4247ab6708f5fd3c1276.png

7ae4423cfacc47968729e577d917d174.png

52771ecfadfa41baacba577fc72e7a84.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aure_xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值