使用java编写网页

  • 时间:
  • 浏览:752
  • 来源:成都艾邦软件开发

1.模拟登录并记录登录信息。主要是sessionid对java开发的网站特别有效在做门户集成项目的时候发现这个cookie简直太重要了。

public  String openSession()
 {
  String urlStr ;
OutputStream out null;
  InputStream in null;
  try {
URL url new URL(urlStr);
HttpURLConnection con (HttpURLConnection) url.openConnection();
con.setRequestMethod(POST);

   // 打印请求头信息
Map hfs con.getHeaderFields();
SetString keys hfs.keySet();
for (String str : keys) {
ListString vs (List) hfs.get(str);
System.out.print(str :);
for (String v : vs) {
System.out.print(v \t);
}
System.out.println();
}
System.out.println();
String cookieValue con.getHeaderField(Set-Cookie);
System.out.println(cookie value: cookieValue);
String sessionId cookieValue.substring(0,
cookieValue.indexOf(;));
return sessionId;
  } catch (Exception e) {
e.printStackTrace();
return null;
  } finally {
try {
if (in ! null)
in.close();
if (out ! null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
  }
 }

2,下载数据核心代码

public  void downImgCore(String sessionId,String sUrl,String sFileUrl)
 {

  InputStream in null;
  try
  {
String url sUrl;//
URL u new URL(url);
HttpURLConnection con (HttpURLConnection) u.openConnection();
con.setRequestMethod(GET);
con.setRequestProperty(Cookie, sessionId);
con.setConnectTimeout(500);
in con.getInputStream();

   File img new File(sFileUrl);
// 生成图片
BufferedOutputStream out new BufferedOutputStream(
new FileOutputStream(img));
byte[] buf new byte[2048];
int length in.read(buf);
while (length ! -1) {
out.write(buf, 0, length);
length in.read(buf);
}

out.close();

  } catch (Exception e)
  {
e.printStackTrace();
  } finally
  {
try {
if (in ! null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
  }
 }

JAR包网页Maven Repository

CSS 页面样式网页layui

Ecpilce中修改提示

Window Preferences搜索content assist修改

B/S技术与C/S技术

1.B/S技术:Brower/Server浏览器与服务器“程序完全部署在服务器上”
采取技术“请求/相应模式”
流程

2.C/S技术/Server客户端与服务器
区别

###URLuniform 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服务器可从官网进行下载 –-- 呼出界面


选择对应版本的tomcat服务器点击 next

在对应界面内进行如下顺序的操作选择tomcat服务器所在的文 件目录注意目录层级

在Servers面板中可以找到对应tomcat服务器

双击Servers面板的tomcat服务器进行如下配置并保存

step4添加tomcat服务器库 选中项目右键点击,找到java bulid path 呼出界面后按箭头进行如下操作

找到指定版本的tomcat服务器点击finish即可

最后到Order and Export界面中勾选对应的包apply and close即可

step5在WebRoot路径下创建jsp文件在文件中随便打点东西测 试如网页标签
step6将web项目部署到tomcat服务器上 如图在Servers界面中右键点击 ,将需 要部署的项目部署到服务器上

注意
相关设置
JSP编码格式设置
–搜索JSP进行如下操作最后 apply and close即可

常见错误

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

JSP(Java Server Pages)

本质在HTMl中嵌入java脚本代码
页面内容
1.静态内容如常规的html代码
2.指令page指令
语法%指令%

小脚本
语法%Java代码%

表达式
语法% Java表达式%

声明
说明可以用与定义成员变量或方法供以后后面使用
语法方法方法

注释
1.JSP注释语法−−−−-- --
注意客户端不会显示
2.html注释语法!- - --
!- -h 1welcome/h 1–
注意客户端会显示
3.单行注释
语法 %//代码%
%//int a3;%
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.写入cookieresponse.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的getInitParameterString name方法获取web.xml中设置的以name命名的初始化参数值。
public ServletContext getServletContext()返回ServletContext对象的引用

通常只需要重写不带参数的init()方法如果重写initServletConfig 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 logString 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方法的名字如GETPOST
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 setContentTypeString type设置发送到客户端响应的内容类型此时响应的状态属于尚未提交

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

方法名称功能描述
public abstract void addCookieCookie cookie增加一个cookie到响应中这个方法可多次调用设置多个cookie
public abstract void addHeaderString nameString value将一个名称为name值为value的响应报头添加到响应中
public abstract void sendRedirectString location发送一个临时的重定向响应到客户端以便客户端访问新的URL
public abstract void encodeURLString 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?oprlist

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

response.setContentType(text/html; charsetutf-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()

ELExpression 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可以访问其他八个内置对象requestresponse等

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

JSTLJava Server Page Standard Tag Library标签

1.什么是JSTLJSP标准标签库包含了多种标签如通用标签条件判断标签和迭代标签等
2.如何使用JSTL1需要到JAR包
2.需在使用JSTL的JSP页面中使用taglib指令导入标签库描述符文件
% taglib uri “/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属性对应的是变量的作用域可选项有pagerequestsession和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 属性是指移出的变量所在的范围可选项有pagerequestsession和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 定义变量的存储范围可选值有pagerequestsession和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 varStatusvarStatusName beginbeginIndex end  endIndex step  step主体内容\t\tc:when test${user2.index%2 1 }/c:whenc:otherwise/c:otherwise/c:forEach
  1. var属性是对当前成员的引用即如果当前循环到第一个成员var就引用第一个成员如果循环到第二个成员就引用第二个成员。 例如list[i]
  2. items指被迭代的集合对象 例如list.lenth
  3. varStatus 属性存放var引用的成员的相关信息如索引等 例如i
  4. begin属性表示开始位置默认为0该属性可以省略 例如i0
  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该属性可以省略 例如i0
  10. end 属性表示结束位置该属性可以省略
  11. step 表示循环的步长默认为1该属性可以省略 例如i
  12. 格式1和格式2的区别在于格式2不是对一个集合对象遍历而是根据指定的begin属性end属性以及step属性执行主体内容固定的次数。

    结果