使用Eclipse编写动态网页

JAR包网页:Maven Repository

CSS 页面样式网页:layui

Ecpilce中修改提示

Window > Preferences>搜索content assist修改
在这里插入图片描述
在这里插入图片描述

B/S技术与C/S技术

1.B/S技术:(Brower/Server)浏览器与服务器:“程序完全部署在服务器上”
采取技术:“请求/相应模式”
流程:
在这里插入图片描述
2.C/S技术:(/Server)客户端与服务器
区别:
在这里插入图片描述

###URL(uniform resource locator):统一资源定位符

http://localhost:8080/news.index.html
(http:协议);
(localhost:主机IP地址:端口号)
(news:项目资源路径)

Tomcat服务器

下载:可去对应的Tomcat官网,选择对应版本进行下载
作用:Tomcat本身为Apache jakarta的开源项目,主要为JSP和Servlet的容器
目录详情:
/bin
(存放各种平台下用于启动和停止Tomcat的脚本文件)
/conf
(存放Tomcat服务器的各种配置文件)
/lib
(存放Tomcat服务器所需的各种JAR文件)
/logs
(存放Tomcat的日志文件)
/temp
(Tomcat运行时用于存放临时文件)
/webapps
(当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中)
/work
(Tomcat把由JSP生成的Servelet放于此目录下(如JSP文件sc生成后的java文件和class文件))

环境变量配置

CATALINA_HOME,值为Tomcat的安装目录
path配置%CATALINA_HOME%bin
classpath配置%CATALINA_HOME%/lib/servlet-api.jar
注意:
(配置该变量主要用于手动部署,发布项目,后期集成开发工具会帮我们实现)
(Tomcat运行依赖JRE,确保已安装JRE并配置JRE_HOME环境变量,或针对已安装的JDK配置JAVA_HOME环境变量)

修改端口号

通过配置文件server.sml修改Tomcat端口号,默认为8080.注意修改后不要被其他应用程序占用

Web项目

web目录:
Web应用的根目录,该目录下所有文件在客户端都可以访问(JSP,HTML等)
WEB-INF 存放应用使用的各种资源,该目录及子目录对客户端都是不可访问
/WEB-INF/classes 存放Web项目的所有的class文件
/WEB-INF/lib 存放Web应用使用的JAR文件

修改起始页

通过配置文件web.xml修改访问起始页,在welcome-file-list标签内
,按从上往下顺序,选择匹配的起始页,越靠前优先级越高
在这里插入图片描述

手动部署

步骤:
编写Web应用的代码
在webapps目录下创建应用文件目录
将创建的页面复制到应用目录下
启动Tomcat服务并进行访问

集成编译器部署

重要步骤
项目创建,部署,发布详细流程
step1:new,找到dynamic web project
在这里插入图片描述
step2:在呼出窗口中进行如下操作
创建项目名,点击next
在这里插入图片描述
在点击
在这里插入图片描述
勾选生成web.xml文件,并将生成的目录位置改为WebRoot
在这里插入图片描述
step3:添加tomcat服务器,tomcat服务器可从官网进行下载 【file】–【new】-- 【server】,呼出界面
在这里插入图片描述
在这里插入图片描述
选择对应版本的tomcat服务器,点击 next
在这里插入图片描述
在对应界面内,进行如下顺序的操作,选择tomcat服务器所在的文 件目录,注意目录层级
在这里插入图片描述
在Servers面板中,可以找到对应tomcat服务器
在这里插入图片描述
双击Servers面板的tomcat服务器,进行如下配置并保存
在这里插入图片描述
step4:添加tomcat服务器库 选中项目,右键点击【properties】,找到java bulid path 呼出界面后,按箭头进行如下操作
在这里插入图片描述
找到指定版本的tomcat服务器,点击finish即可
在这里插入图片描述
最后到Order and Export界面中,勾选对应的包,apply and close即可
在这里插入图片描述
step5:在WebRoot路径下,创建jsp文件,在文件中随便打点东西测 试,如网页标签
step6:将web项目部署到tomcat服务器上 如图,在Servers界面中,右键,点击 【add and remove】,将需 要部署的项目部署到服务器上
在这里插入图片描述
注意
相关设置
JSP编码格式设置
【window】–【preferences】,搜索JSP,进行如下操作,最后 apply and close即可
在这里插入图片描述

常见错误

1.无法访问网页:
可能原因:服务器没有开启
2.404
可能原因:1.URL路径有误
2.文件放置位置有误,如放在WEB-INF,WEB-INF中的文件客户端无法访问
3.项目没有部署到服务器上

JSP(Java Server Pages)

本质:在HTMl中嵌入java脚本代码
页面内容:
1.静态内容:如常规的html代码
2.指令:page指令
语法<%@指令%>
在这里插入图片描述
小脚本:
语法:<%Java代码%>
在这里插入图片描述
表达式:
语法:<%= Java表达式%>
在这里插入图片描述
声明:
说明:可以用与定义成员变量或方法,供以后后面使用
语法:< ! 方 法 !方法 >
在这里插入图片描述
注释
1.JSP注释:语法< − − − − -- -- >
注意:客户端不会显示
2.html注释:语法<!- - -->
<!- -<h 1>welcome</h 1>–>
注意:客户端会显示
3.单行注释:
语法: <%//代码%>
<%//int a=3;%>
4.多行注释:
语法:<%/代码/%>
<%/int a =3/%>

JSP内置对象(常用):

内置对象名称说明
out对象用于向客户端输出数据
request主要用于处理客户端请求的数据信息
response用于响应客户端请求并向客户端输出信息
session用于记录会话状态
application类似于系统的全局变量,用于实现Web应用中的资源共享

Request对象

1.作用:主要用于处理客户端请求
2.常用方法:
(1.String getParameter(String name):根据表单组件名称获取提交数据)
在这里插入图片描述
(2.String[] getParameterValues(String name):获取表单组件多个值时的请求数据)
在这里插入图片描述
(3.void setCharacterEncoding(String charset):指定每个请求的编码(限于表单中的post))
在这里插入图片描述
(4.RequestDispatcher getRequestDispatcher(String path):返回一个RequestDispatcher对象,该
对象的forward()方法用于转发请求在这里插入图片描述
2.表单编码问题的解决:
1.POST方式:在小脚本中添加request.setCharacterEncoding(“UTF-8”)
2.GET方式:方法1:在获取值时,对获取的值编码格式进行更改
案例:name = new String(name.getBytes(“ISO-8859-1”),“UTF-8”);
方法2:找到Tomcat中的conf里的server.xml中在这里插入图片描述
在最后添加URLEncoding = “UTF-8”;

Response对象

1.作用:用于响应客户端请求并向客户端输出信息
2.常用方法:
(1.void sendRedirect(String url)
案例:response.sendRedirect(“index.jsp”))
转发与重定向的区别:
转发:1.转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
2.客户端浏览器的地址栏不会显示转向后的地址、
重定向:1.重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向
2.在地址栏中可以显示转向后的地址
超链接的页面跳转:
html页:< a href =“xxx.jsp?属性1=“值”&属性2=“值””>xxx</ a>
控制处理页:
<%String 属性名 = request.getParameter(属性1);%>

Session对象

会话:一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
常用方法:
1.String getId():
获取sessionid
注意:同一个session对象sessionid相同
在浏览器中,默认一个浏览器窗口为一个session,在实际中,很多浏览器
实现了多窗口会话共享,如果需要移除该功能,可以去对应的浏览器内进行设置(根据不同浏览器)
2.void setMaxInactiveInterval(int interval)
设定session的非活动实际(会话对象的国过期时间)
单位:秒
其他设置session的非活动时间的方法:
方式1:可以在tomcat服务器中的web.xml文件中的如下位置,将对应的默认
时间改为指定的时间,默认时间为30分钟(单位:分钟)
方式2:在项目中的web.xml文件中,设置如下图所示代码
在这里插入图片描述
3.int getMaxInactiveInterval()
获取session的有效非活动时间(以秒为单位)
4.void invalidate()
设置session对象失效
5.void setAttribute(String key,Object value)
以key/value的形式保存对象值,一般用于保存用户的登录信息到session对象中
6.Object getAttribute(String key)
通过key获取对象值,该方法的返回值是一个Object,必须进行强制类型转换
7.void removeAttribute(String key)
从session中删除指定名称(key)所对应的对象

include指令

作用:多个页面中需要统一的业务处理。可利用include指令避免代码冗余
语法:
<%@ include file = “xx.jsp”%>
案例:
<%@ include file = “longin.jsp”%>

Application对象

方法名称说明示例
void setAttribute(String key,Object value)以key/value的形式将对象存储到application中application.setAttribute(“app”, app);
Object getAttribute(String key)通过key获取application中存储的对象application.getAttribute(“app”)
String getRealPath(String)返回相对路径

对象的作用域

1.page 作用域

1.表示当前页。
2.page作用域可以使用pageContext对象的setAttribute()和getAttribute()方法访问。
3.page作用域在客户端每次请求JSP页面时创建,在服务器发送响应时创建,在服务器发送响应或
请求转发到其他页面或资源后失效

2.request 作用域,

1.与客户端的请求绑定在一起的,其作用范围要比page作用域大。
2.request作用域可以通过调用request对象的setAttribute()和getAttribute()方法进行访问。
3.request作用域在页面转发或包含中同样有效,即在调用RequestDispatcher的forward()方法转向
的页面或者调用include()方法包含的页面,都可以共享request作用域
4.需要注意,request作用域对于每次客户端的请求都是不同的,对于任何一个新的请求,都会重新
创建于本次请求相对应的request作用域,而当请求结束后,与之相关的request作用域也随之失效。
5.注:RequestDispatcher对象的include()方法与pageContext对象的include()方法实现相同的效果。

3.session 作用域

1.只要将数据绑定到session作用域中,则该数据可以被本次会话中的其他页面所访问
2.session作用域可以通过session对象的setAttribute()与getAttribute()方法进行访问

4.application 作用域

1.application 作用域针对整个web应用,被该应用所有用户所共享
2.application 作用域可以通过application 对象的setAttribute()与getAttribute()方法进行访问

Cookie

1.作用

1.对特定对象的追踪,如访问者的访问次数、最后的访问时间,路径等。
2.统计网页浏览次数。
3.在cookie有效期内,记录用户登录信息。
4.实现各种个性化服务,如针对不同用户喜好以不同的风格展示不同的内容。
注:不建议在cookie中保存比较重要或敏感的内容,

2.在 JSP 中使用 cookie

1.创建cookie对象:Cookie cookie = new Cookie(String name,String value);
name:代表cookie的名称
value:表示该名称对应的值
2.写入cookie:response.addCookie(newCookie);

方法名称说明
void setMaxAge(int expiry)设置cookie的有效期,以秒为单位
void setValue(String)在cookie创建后,为cookie赋予新的值
String getName()获取cookie的名称
String getValue()获取cookie的值
int getMaxAge()获取cookie的有效时间,以秒为单位

3.读取cookie

JSP通过request对象的getCookies()方法读取
示例:Cookie[] cookie =request.getCookies();

4.setaMaxAge(int expiry)

1.若expiry参数是大于0的整数,表示cookie的有效存活时间
2.如果设置expiry参数等于0,表示从客户端删除该cookie
3.设置expiry参数为负数或者不设置,表示cookie会在当前窗口关闭后失效

cookie与session作用域对比

1.session作用域是在服务器端保存用户信息,cookie是在客户端保存用户信息
2.session作用域保存的值是Object类型,cookie保存的值是String类型
3.session作用域随会话的结束而将其存储的数据销毁,cookie可以长期保存在客户端
4.cookie保存不重要的信息,session保存重要信息

JDBC连接数据库:三层思想

Servlet

1,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。
2.javax.servlet包中的类和接口是通用的不依赖协议的Servlet API,包括:

接口:Servlet,ServletRequest,ServletRespones,ServletConfig,ServletContext
抽象类:GenericServlet.
javax.servlet.http包中的类和接口是用于支持HTTP协议的Servlet API.

Servlet 接口

方法名称功能描述
public abstract void init(ServletConfig config)由Servlet容器调用,用于完成Servlet对象在处理客户端请求前的初始化工作
public abstract void service(ServletRequest req,ServletResponse res)用于Servlet容器调用,用于处理客户端的请求
public abstract void destroy()由Servlet容器调用,释放Servlet对象所使用的资源
public abstract ServletConfig getServletConfig()返回ServletConfig对象,该对象包含此Servlet的初始化和启动参数。返回的ServletConfig对象是传递给init()方法的对象
public abstract String getServletInfo()返回有关Servlet的信息,如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(如HTML、XML等)

GenericServlet 抽象类

抽象类GenericServlet 实现了Servlet接口和ServletConfig接口,给出了除了service()方法外的其他方法的简单实现。

方法名称功能描述
public void init(ServletConfig config)对Servlet接口中 init(ServletConfig config)方法的实现,并将ServletConfig实例进行保存以备用。此方法还有一个无参的重载方法init(),可用于子类中重写,以实现用户订制的初始化工作。
public String getInitParameter(String)通过调用ServletConfig的getInitParameter(String name)方法获取web.xml中设置的以name命名的初始化参数值。
public ServletContext getServletContext()返回ServletContext对象的引用

通常只需要重写不带参数的init()方法,如果重写init(ServletConfig Config)方法,则应包含super.init(config)代码

HttpServlet 抽象类

方法名称功能描述
public void service(ServletRequest req,ServletResponse res)GenericServlet类中 service ()方法实现,将请求分发给protected void service(HttpSerletRequest req,HttpServletResponseres)方法
protected void service(HttpServletRequest req,HttpServletRequest resp)接受HTTP请求,并将它们分发给此类中定义的doXxx()分发
protected void doXxx(HttpServletRequest req,HttpServletRequest resp)根据请求方式的不同分别定义的处理方法,如doGET(),doPost()方法

HttpServlet的service(HttpServletRequest req,HttpServletResponse res)方法相当于一个分发器,可以根据请求方法的类型,调用相应的doXxx()方法,所有在编写Servlet时只需要根据应用的需要,重写doGet()或者doPost()方法

ServletConfig接口

方法名称功能描述
public String getInitParameter(String name)获取web.xml中设置的以name命名的初始化参数
public ServletContext getServletContext()返回Servlet的上下文对象引用

ServletContext接口

一个ServletContext 接口的实例表示一个Web应用的上下文,Servlet使用ServletContext 接口定义的
方法与它的Servlet 容器进行通信。JSP内置对象 application就是ServletContext的实例
方法名称功能描述
public void setAttribute(String name,Object object)设置名称为name的属性
public String getInitParameter(String name)获取系统范围的名称为name的初始化参数值,系统范围的初始化参数可以在部署描述符中使用< context-param>元素定义
public Object getAttribute(String name)获取名称为name的属性
public String getRealPath(String name)返回参数所代表目录的真是路径
public void log(String message)记录一般日志信息

ServletRequest 和 HttpServletRequest 接口

1.ServletRequest 接口:
当客户请求时,由Servlet容器创建ServletRequest对象用于封装客户的请求信息,这个对象将被容器作为service()方法的参数之一传递给Servlet,Servlet能够利用ServletRequest对象获取客户端的请求数据

方法名称功能描述
public abstract Object getAttribute(String name)获取所有为name的属性值
public abstract void setAttribute(String name,Object object)在请求中保存名称为name的属性
public abstract void removeAttribute(String name)清除请求中名字为name的属性
public abstract String getCharacterEncoding()返回请求体所使用的字符编码
public abstract void setCharacterEncoding()设置请求体的字符编码
public abstract String getParameter(String name)返回指定请求参数的值
public abstract String[] getParameterValues(String name)返回指定请求参数的全部值
public abstract RequestDispatcher getRequestDispatcher(String path)返回指向指定路径的请求分发对象

2.HttpServletRequest 接口:
HttpServletRequest 位于javax.servlet.http包中,继承自ServletRequest接口

方法名称功能描述
public abstract String getContextPath返回请求URL中表示请求上下文的路径,上下文路径是请求URL的开始部分
public abstract Cookie[ ] getCookie返回客户端再次请求中发送所有的cookie对象
public abstract HttpSession getSession ()返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session
public abstract String getMethod()返回此次请求所使用的HTTP方法的名字,如GET,POST
public abstract String getHeader(String name)获取指定的请求头信息

ServletResponse 和HttpServletResponse 接口

1.ServletResponse 接口 :
用于封装响应数据,并且同时将这两个对象一并作为参数传递给Servlet。Servlet利用ServletRequest对象获取客户端的请求数据,经过处理后由ServletResponse对象发送响应数据。

方法名称功能描述
public abstract PrintWrite getWrite()返回PrintWrite对象,用于向客户端发送文本
public abstract String getCharacterEncoding()返回在响应中发送的正文所使用的字符编码
public abstract void setCharacterEncoding()设置发送到客户端的响应的字符编码
public abstract void setContentType(String type)设置发送到客户端响应的内容类型,此时响应的状态属于尚未提交

2.HttpServletResponse 接口
用于对客户端的请求执行响应

方法名称功能描述
public abstract void addCookie(Cookie cookie)增加一个cookie到响应中,这个方法可多次调用,设置多个cookie
public abstract void addHeader(String name,String value)将一个名称为name,值为value的响应报头添加到响应中
public abstract void sendRedirect(String location)发送一个临时的重定向响应到客户端,以便客户端访问新的URL
public abstract void encodeURL(String url)使用session ID对用于重定向的URL进行编码

创建Servlet

1.导入Servlet所需要的包
2.自定义的Servlet类继承自HttpServlet类
3.实现doGet()或者doPost()方法
在这里插入图片描述

部署Servlet

1.编辑web.xml,添加对应Servlet类的配置,如图:在这里插入图片描述
注:1.两个servlet-name需要对应
2.url-pattern:元素指定Servlet的URL
3.servlet-class:对应需要跳转的页面
4.< url-pattern >/xxx/*< /url-pattern >,路径匹配,如果没有精确匹配,对/xxx/路径的所有请求
将由Servlet进行处理.
5.< url-pattern > *.xxx< /url-pattern >如果没有精确匹配和路径匹配,则所有针对.xxx扩展
,名的请求将由该Servlet处理

访问Servlet

在这里插入图片描述
1.action属性对应的是web.xml文件中< url-pattern >元素所定的URL
注:request.getContextPath()可以获取当前Web应用的上下文路径。对于经由浏览器请求的URL,使用应用上下文路径进行约束,可以避免使用相对路径时可能发生的路径解析错误。如:
location.href = “”+contextPath+"/util?opr=list"

若出现编码异常可在doGET中添加

response.setContentType("text/html; charset=utf-8");

Servlet的生命周期

1.加载和实例化:
Servlet不能独立运行,它必须被部署到Servlet容器中,由容器实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内管理Servlet。
2.初始化:
设置数据库连接参数,建立JDBC连接,或者是建立对其他资源的引用(对于每一个Servlet实例,init()方法只能被调用一次)
(调用init())
3.服务:
Servlet被初始化后,就处于能响应请求的就绪状态。当Servlet容器接受客户端请求时,调用Servlet的service()方法处理客户端请求,HTTPServlet的service()方法会根据GET或POST请求转调doGet或doPost方法。
(调用service())
4.销毁:
Servlet容器判断一个Servlet是否应当被释放时,容器就好调用Servlet的destroy()方法,该方法指明哪些系统资源可以被系统回收
(调用destroy())

EL(Expression Language)表达式

1.什么是EL表达式:他是借鉴了JavaScript和XPath的表达式语言。EL表达式定义了一系列的隐含对象和操作符,使开发人员能够方便地访问页面的上下文,以及不同作用域内的对象,而无须再JSP页面嵌入Java代码,从而使开发人员及时不熟悉Java也能轻松地编写JSP程序

2.EL表达式的特点和使用范围:提供了访问和处理应用程序数据的功能,通常用于在某个作用域内取得属性值,或者做简单的运算和判断。
特点:1.自动类型转换2.使用简单

3.EL表达式的语法:${EL表达式}
1.点操作符:EL表达式通常由两部分组成:对象和属性,如 ${employee.computer}可以访问employee对象的computer
2.[ ]操作符:与点操作符一样可以访问对象的某个属性,如 ${employee[“computer”]}
1.当属性名包含了特殊字符如“.”或“-”等情况下,就不能使用点操作符来访问,只能用[]
2.“[]”操作符中可以使用变量实现动态访问,如 ${employee[propertyName]},propertyName是另一个变量,改变其值可以动态访问employee的不同属性
3.访问数组,如果有一个对象名为array的数组,那么可以根据索引值来访问其中的元素,如 ${array[0]}

Empty操作符

empty是用于检测一个变量值是否为null或者为empty(如长度为0的字符串变量或者集合变量)。如
变量a不存在,则${empty a }返回结果为true

当EL表达式配合JSP跳转页面传值时前面不能有空格

name2=(后面不能有空格,不然会连空格一起解析)

绝对路径:

> ${pageContext.request.contextPath}

EL表达式隐式对象(无须声明)

1.作用域访问对象:可以把变量存放在不同作用域中以满足不同范围的访问需求

对象名称方法描述
pageScope与页面作用域(page)中的属性相关联的Map类
requestScope与请求作用域(request)中的属性相关联的Map类
responseScope与会话作用域(response)中的属性相关联的Map类
applicationScope与应用程序作用域(application)中的属性相关联的Map类

注:若不指定范围查找即${employee},则会按照page》request》response》application的顺序依次查找employee

2.参数访问对象:是与页面输入参数有关的隐式对象

对象名称说明
param按照参数名称访问单一请求值的Map对象
paramValues按照参数名称访问数组请求值的Map对象

如:${param.userName}==request.getParameter(“userName”);
${paramValues.habits}==request.getParameterValues(“habits”);
3.JSP隐式对象:
它是JSP和EL的一个公共对象,通过pageContext可以访问其他八个内置对象(request,response等)

对象名称说明
pageContext提供对页面信息和JSP内置对象的访问,语法如${pageContext.request.contextPath}

JSTL(Java Server Page Standard Tag Library)标签

1.什么是JSTL:JSP标准标签库,包含了多种标签,如:通用标签,条件判断标签和迭代标签等
2.如何使用JSTL:(1)需要到JAR包在这里插入图片描述
(2.)需在使用JSTL的JSP页面中使用taglib指令导入标签库描述符文件
<%@ taglib uri = “http://java.sun.com/jsp/jstl/core” prefix=“c” %>

通用标签库

用于在JSP页面内设置,显示和删除变量,他包含了三个标签,< c:set>,< c:out>和< c:remove>
1.< c:set>标签:用于设置作用域变量的值或者作用域变量的属性值:
(1.)将value值存储到范围为scope的变量variable中。
如:<c:set var = “msg” value = “HEllow World” scope = “request”/>
var属性的值是设置变量名
value属性的值是赋予变量的值
scope属性对应的是变量的作用域,可选项有page,request,session和application
(2.)将value值设置到对象的属性中:
如:< c:set value=“value” target = “target” property =“property "
target属性是操作的JavaBean对象,可以使用EL表达式来表示。
property属性对应JavaBean对象的属性名
value属性对应JavaBean对属性的值
2.< c:out>标签:用于计算表达式结果输出显示,类似于JSP中的<%=%>
(1.)不指定默认值:
如: < c:out value=”${name}"></ c:out>
value属性指需要输出的表达式的运算结果,可以通过EL表达式来获取
(2.)指定默认值:
如:<c:out value = " ${msg}" default=“null”/>
default属性是value属性的值为空时输出的默认值

(3):< c:out>标签还有一个escapeXml属性,表示是否转换特殊字符,用于指定使用< c:out>标签输出诸如<,>,"、"、&之类在HTML和XML中具有特殊意义的字符时是否应该进行转义。
escapeXml属性设置会true,则会自动进行转义处理,这也是默认值。
如:< p>$ {"< a href = ‘http://www.baidu,com’>百度< /a>"}< /p>==
< p>< c:out escapeXml = “false” value = “< a href = ‘http://www.baidu,com’>百度< /a>”>< /p>

3.< c: remove>标签:用于移出指定作用域内的指定变量
< c:remove var=“msg” scope=“scope”/>
var属性是指待移出的变量的名称。
scope 属性是指移出的变量所在的范围,可选项有page,request,session和application
如果没有指定,则默认page

整个通用标签示例:
在这里插入图片描述在这里插入图片描述

条件标签库

JSTL的条件标签库包括< c:if>、< c:choose>、< c:when>和< c:otherwise>标签
1.< c:if>标签:用于实现Java语言中if语句的功能
< c:if test = “condition” var=“varName” scope=“scope”>
//主体内容
< /c:if>
(1.)test属性是判断条件,当condition(可以用EL表达式表示)的结果为true时,会执行主体内容,如果为false则不会执行
(2.)var属性定义变量,该变量存放判断的结果,该属性可以省略
(3.)scope属性值var 定义变量的存储范围,可选值有page,request,session和application,该选项可以省略

在这里插入图片描述
2、< c:choose>:< c:choose>、< c:when>和< c:otherwise>一起实现互斥条件的执行,类似于Java语言的if-else if-else语句:
< c:choose var=“varName” scope=“scope”>
< c:when test=“condition”>
主体内容
< /c:when>
< c:otherwise>
主体内容
< /c:otherwise>
< /c:choose>
(1.)< c:choose> 是作为< c:when>和< c:otherwise>的父标签使用的,除了空白字符外,
< c:choose>的标签体只能包含这两个标签
(2.)< c:when>标签必须有一个直接的父标签< c:choose>,而且必须在同一个父标签下的
< c:otherwise>标签出现之前。在同一个父标签< c:choose>中,可以有多个< c:when>标签
(3.)< c:otherwise>标签必须出现在有一个直接父标签< c:choose>,而且必须是< c:choose>标签的最后一个嵌套的标签。
(4.)在运行时,判断< c:when>标签的测试条件是否为true,第一个测试条件为true的< c:when>标签体被JSP容器执行。如果没有满足条件的< c:when>标签,那么< c:otherwise>的标签体将被执行
在这里插入图片描述

迭代标签库

通过< c:forEach>对集合对象进行迭代操作,很大程度减化迭代操作
1.遍历集合对象的成员:

<c:forEach var ="varName" items = "collectionName" varStatus="varStatusName" begin="beginIndex" end = "endIndex" step = "step">
主体内容
		<c:when test="${user2.index%2 ==1 }">
		
		</c:when>
		
		<c:otherwise>
		
		</c:otherwise>
			
	</c:forEach>
  1. var属性是对当前成员的引用,即如果当前循环到第一个成员,var就引用第一个成员,如果循环到第二个成员就引用第二个成员。 例如:list[i]
  2. items指被迭代的集合对象 例如:list.lenth
  3. varStatus 属性存放var引用的成员的相关信息,如索引等 例如:i
  4. begin属性表示开始位置,默认为0,该属性可以省略 例如:i=0
  5. end 属性表示结束位置,该属性可以省略
  6. step 表示循环的步长,默认为1,该属性可以省略 例如:i++
    在这里插入图片描述
    结果:
    在这里插入图片描述
    2.指定语句的执行次数:
    <c:forEach var =“varName” varStatus=“varStatusName” begin=“beginIndex” end = “endIndex”
    step = “step”>
    主体内容
    < /c:forEach>
  7. var属性是对当前成员的引用
  8. varStatus 属性存放var引用的成员的相关信息,如索引等 例如:i
  9. begin属性表示开始位置,默认为0,该属性可以省略 例如:i=0
  10. end 属性表示结束位置,该属性可以省略
  11. step 表示循环的步长,默认为1,该属性可以省略 例如:i++
  12. 格式1和格式2的区别在于,格式2不是对一个集合对象遍历,而是根据指定的begin属性,end属性以及step属性执行主体内容固定的次数。
    在这里插入图片描述
    结果:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值