jstl标签集合及应用实例总结

本文详细介绍了JSTL标签在网页开发中的应用,包括使用<c:out>、<c:set>、<c:remove>、<c:catch>、<c:if>、<c:choose>、<c:forEach>、<c:forTokens>、<c:import>、<c:url>等标签进行页面内容展示、变量操作、错误处理、分时问候、列表遍历、字符串分割、文件导入、网页显示等功能。通过实例展示了如何实现分时问候、登陆模块、屏蔽错误信息、遍历数组和数据库查询显示商品信息。同时,介绍了如何利用JSTL简化网页开发流程,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、测试<c:out>标签

******************** 测试escapeXml属性 **********************<br>

escapeXml属性值为false时:<c:outvalue="<hr>"escapeXml="false"/>

escapeXml属性值为true时:<c:outvalue="<hr>"/><br>

******************** 测试两种语法 ***************************<br>

第一种语法格式:<c:outvalue="${user}"default="user的值为空"/><br>

第二种语法格式:<c:outvalue="${user}">user的值为空 </c:out>

2、测试<c:set>标签

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%>

应用语法1定义一个session范围内的变量user,值为mrsoft<br>

<c:setvar="user"value="mrsoft"scope="session"/>

输出变量user的值为:${sessionScope.user}<br>

应用语法2定义一个request范围内的变量money,值为12.5*6的结果<br>

<c:setvar="money"scope="request"> ${12.5*6}</c:set>

输出变量money的值为:${requestScope.money}<br>

应用语法3JavaBean“LinkmanForm”设置各属性并应用<c:out>;标签输出各属性<br>

<jsp:useBeanclass="com.zz.LinkmanForm"id="linkman"/>

<c:setvalue="1"target="${linkman}"property="id"/>

<c:setvalue="zz"target="${linkman}"property="name"/>

id属性值为:<c:outvalue="${linkman.id}"/><br>

name属性值为:<c:outvalue="${linkman.name}"/><br>

应用语法4JavaBean“LinkmanForm”设置各属性并应用<c:out>标签输出各属性<br>

<c:settarget="${linkman}"property="tel"> 84978981 </c:set>

tel属性值为:<c:outvalue="${linkman.tel}"/>

其中com.zz.LinkmanForm;是一意bean,分别有id name tel 三个属性。

3、测试<c:remove>标签

<c:set var="softName" value="明日科技编程词典" scope="page"/>

移除前输出变量softName的值:<c:out value="${pageScope.softName}" default="softName的值为空"/><br>

<c:remove var="softName" scope="page"/>

移除后输出变量softName的值:<c:out value="${pageScope.softName}" default="softName的值为空"/>

4、测试<c:catch>标签

<c:catch var="exception">

<%

int number=Integer.parseInt(request.getParameter("number"));

out.println("合计金额为:"+521*number);

%>

</c:catch><c:outvalue="${exception}"/>

5、测试<c:if>标签

<%request.setCharacterEncoding("utf-8");%>à不要忘记,不然${param.comment}将得到乱码!!!

未来的世界是:方向比努力重要,能力比知识重要,健康比成绩重要,生活比文凭重要,情商比智商重要!

<hr>

${param.comment}

<center>

<c:if test="${empty param.comment}">

<form name="form1"method="post" action="">

评论:<textarea name="comment" cols="30"rows="4"></textarea><br><br>

<input type="submit" name="Submit" value="发表评论">

</form>

</c:if>

</center>

6、测试<c:choose>标签

<c:choose>

<c:whentest="${empty sessionScope.user}">

<center>

<formname="form1" method="post" action="deal.jsp">

用户名:<input name="user" type="text"id="user"> &nbsp;

<input type="submit"name="Submit" value="登录">

</form>

</center>

</c:when>

<c:otherwise>

欢迎您!${sessionScope.user} [<a href="logout.jsp">退出</a>]</c:otherwise>

</c:choose>

deal.jspàà

<%request.setCharacterEncoding("GBK");%>

<c:set var="user" scope="session"value="${param.user}"/>

<%response.sendRedirect("index.jsp");%>

logout.jspàà

<% session.invalidate();

response.sendRedirect("index.jsp");%>

7、应用<c:choose>实现分时问候

<c:choose>

<c:when test="${now.hours>=0 && now.hours<5}">凌晨好!</c:when>

<c:when test="${now.hours>=5 && now.hours<8}">早上好!</c:when>

<c:when test="${now.hours>=8 && now.hours<11}">上午好!</c:when>

<c:when test="${now.hours>=11 && now.hours<13}">中午好!</c:when>

<c:when test="${now.hours>=13 && now.hours<17}">下午好!</c:when>

<c:otherwise>晚上好!</c:otherwise>

</c:choose>

现在时间是:${now.hours}${now.minutes}

8、应用<c:forEach>标签遍历List集合

<%List list=newArrayList();

list.add("明日科技");

list.add("编程词典");

list.add("www.bccd.com");

request.setAttribute("list",list);

%>

利用<c:forEach>标签遍历List集合的结果如下:<br>

<c:forEachitems="${requestScope.list}"var="keyword"varStatus="id"begin="0"end="1">

${id.index }&nbsp;${keyword}<br>

</c:forEach>

9、应用<c: forTokens>标签分割字符串并显示

<c:setvar="sourceStr"value="编程词典软件涵盖技术、函数、控件、实例、项目、方案、界面等所有开发内容,以及所有实例程序、实用工具等内容,是程序开发人员高效编程必备的软件。"/>

原字符串:<c:outvalue="${sourceStr}"/>

<br>********************分割后的字符串**************************<br>

<c:forTokensitems="${sourceStr}"delims=",、。"var="item">${item}<br>

</c:forTokens>

10、应用<c:import>标签导入文件

<c:importurl="navigation.jsp" charEncoding="GBK"/>

11、应用<c:import>标签在网页中显示百度网页

<c:catchvar="error">

<c:importurl="http://www.baidu.com"charEncoding="utf-8"/>

</c:catch>

<c:iftest="${!emptyerror}">

该网址不存在,请确认是否登录到Internet

</c:if>

<c:urlvalue="http://localhost:8080/userServlet"var="url"scope="session">

<c:paramname="action"value="query"/>

</c:url>

<a href="${url}">查询全部用户信息</a>

12、测试<c:url>标签

Index.jspàà

<body>

<c:urlvalue="deal.jsp"var="url"scope="session">

<c:paramname="user"value="mr"/>

</c:url>

<ahref="${url}">提交</a>

</body>

deal.jspàà

<body>

传递的参数:${param.user}

</body>

13、测试登陆模块

1)、一个比较好的login.jsp登陆页面à

<div style="width:100%; text-align:center">

<div id="login">

<div id="loginForm">

<c:choose>

<c:when test="${emptysessionScope.user}">

<form action="deal.jsp"method="post" name="form1">

<table width="240" border="0"cellspacing="0" cellpadding="0">

<tr>

<td height="27">用户名:

<input name="user"type="text" class="txt_grey" id="user"/></td>

</tr>

<tr>

<td height="27">&nbsp;&nbsp;码:

<input name="pwd" type="password"class="txt_grey" id="pwd" /></td>

</tr>

<tr>

<td height="30"align="center">

<input name="Submit"type="submit" class="btn_grey" value="登录" />&nbsp;

<input name="Submit2"type="reset" class="btn_grey" value="重置" /></td>

</tr>

</table>

</form>

</c:when>

<c:otherwise>

<table width="240" height="100%"border="0" cellspacing="0" cellpadding="0">

<tr>

<tdvalign="middle">欢迎您!${sessionScope.user}[<a href="logout.jsp">退出</a>]</td>

</tr>

</table>

</c:otherwise>

</c:choose>

</div>

</div>

</div>

2)、下面是一个应用实例:

Index.jspà

<body>

<divstyle="width:800px;text-align: center; padding: 10px;">

<divstyle="width:500px;">

<c:choose>

<c:when test="${admin !=null}">

<c:import url="admin.jsp"charEncoding="utf-8"></c:import>

</c:when>

<c:otherwise>

<c:import url="login.jsp"charEncoding="utf-8"></c:import>

</c:otherwise>

</c:choose>

</div>

</div>

</body>

Admin.jspàà

<body>

<br>

<fontstyle="color:red; font-size: 15px;">您好,${admin}<br>欢迎来到管理员页面!

</font>

<br>

<ahref="ExitServlet">退出</a>

</body>

Loginout.jspàà

<%

session.invalidate();

%>

<c:redirecturl="index.jsp"/>

所涉及的业务处理,也就是servlet—>ààLoginServlet

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

doPost(request,response);

}

publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

Stringusername = request.getParameter("username");

Stringpassword = request.getParameter("password");

if("mrsoft".equals(username)&&"mrsoft".equals(password)){

request.getSession().setAttribute("admin",username);

}

request.getRequestDispatcher("index.jsp").forward(request,response);

}

所涉及的业务处理,也就是servlet—>ààExitServlet

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

doPost(request,response);

}

publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

request.getSession().invalidate();

request.getRequestDispatcher("index.jsp").forward(request,response);

}

xml文件中需要对servlet进行简单配置ààà

<servlet>

<servlet-name>LoginServlet</servlet-name>

<servlet-class>com.lyq.servlet.LoginServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>ExitServlet</servlet-name>

<servlet-class>com.lyq.servlet.ExitServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>LoginServlet</servlet-name>

<url-pattern>/LoginServlet</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>ExitServlet</servlet-name>

<url-pattern>/ExitServlet</url-pattern>

</servlet-mapping>

14、应用JSTL屏蔽页面中出现的错误

<body>

<fontstyle="font-size:24px;">应用JSTL屏蔽页面中出现的错误,比如除数为0.</font><br>

<formaction="???"name="form"method="get">

被除数:<inputtype="text"name="bcs"value="${param.bcs}"><br>

&nbsp;&nbsp;数:<inputtype="text"name="cs"value="${param.cs}"><br>

<c:catchvar="exception">

<%

int bcs=Integer.parseInt(request.getParameter("bcs"));

int cs=Integer.parseInt(request.getParameter("cs"));

int result=bcs / cs;

%>

&nbsp;&nbsp;是:<inputtype="text"name="s"value="<%=result%>"><br>

</c:catch>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<inputtype="submit"name="submit"value="提交">

&nbsp;&nbsp;<inputtype="reset"name="reset"value="重置">

</form>

</body>

15、利用<c:forEach>标签遍历数组

<%

String[]subject={"英语","政治","物理","化学","数学","语文"};

request.setAttribute("kc",subject);

%>

<fontstyle="font-size:24px;">利用&lt;c:forEach&gt;标签遍历subject数组的结果如下:</font><br>

<c:forEachitems="${requestScope.kc}"var="keyword"varStatus="id"begin="1">

subject数组中的第${id.index }个元素是:&nbsp;${keyword}<br>

</c:forEach>

在举一个实例-àà

应用JSTL显示数据库中的商品信息

<body>

<c:redirecturl="UserInfoServlet"/>

</body>

à

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

Listlist = newArrayList();// 创建List集合

try {

ConnDBconn=newConnDB();// 创建数据库连接对象

Stringsql = "SELECT * FROM tb_user";

ResultSetrs=conn.executeQuery(sql);// 查询全部用户信息

while (rs.next() && rs.getRow()>0){// 通过循环遍历用户信息

Useruser = newUser();// 用户实例对象

//设置实例对象的属性

user.setId(rs.getString(1));

user.setName(rs.getString(2));

user.setSex(rs.getString(3));

user.setAge(rs.getString(4));

list.add(user);// 将用户信息保存到List集合中

}

}catch(SQLException e) {

e.printStackTrace();

}

request.setAttribute("userList",list); // 将用户信息保存HttpServletRequest

request.getRequestDispatcher("showUserInfo.jsp")

.forward(request,response); // 重定向到showUserInfo.jsp页面

}

publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

doGet(request,response);// 调用doGet方法

}

à显示页面在

<c:forEachvar="user"items="${requestScope.userList}">

<tr>

<tdheight="27"align="center"bgcolor="#FFFFFF">

<c:outvalue="${user.id}"/>

</td>

<tdalign="center"bgcolor="#FFFFFF">

<c:outvalue="${user.name}"/>

</td>

<tdalign="center"bgcolor="#FFFFFF">

<c:outvalue="${user.sex}"/>

</td>

<tdalign="center"bgcolor="#FFFFFF">

<c:outvalue="${user.age}"/>

</td>

</tr>

</c:forEach>

附带一个ConnDB

package com.zz.tools;

import java.io.InputStream; //导入java.io.InputStream

import java.sql.*; //导入java.sql包中的所有类

import java.util.Properties; //导入java.util.Properties

/**

*

* @author administrator

*/

public class ConnDB {

publicConnection conn = null; // 声明Connection对象的实例

publicStatement stmt = null; // 声明Statement对象的实例

publicResultSet rs = null; // 声明ResultSet对象的实例

privatestatic String propFileName = "connDB.properties"; // 指定资源文件保存的位置

privatestatic Properties prop = new Properties(); // 创建并实例化Properties对象的实例

privatestatic String dbClassName = "com.mysql.jdbc.Driver";//定义保存数据库驱动的变量

private static String dbUrl ="jdbc:mysql://127.0.0.1:3306/db_Database07?user=root&password=admin&useUnicode=true";

publicConnDB() { //定义构造方法

try{ //捕捉异常

//Properties文件读取到InputStream对象中

InputStreamin = getClass().getResourceAsStream(propFileName);

prop.load(in);// 通过输入流对象加载Properties文件

dbClassName= prop.getProperty("DB_CLASS_NAME"); // 获取数据库驱动

dbUrl= prop.getProperty("DB_URL", dbUrl); //获取URL

}catch (Exception e) {

e.printStackTrace();// 输出异常信息

}

}

publicstatic Connection getConnection() {

Connectionconn = null;

try{ //连接数据库时可能发生异常因此需要捕捉该异常

Class.forName(dbClassName).newInstance(); //装载数据库驱动

//建立与数据库URL中定义的数据库的连接

conn= DriverManager.getConnection(dbUrl);

}catch (Exception ee) {

ee.printStackTrace(); //输出异常信息

}

if(conn == null) {

System.err.println("警告:DbConnectionManager.getConnection()获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+ "\r\n链接位置:"+ dbUrl);//在控制台上输出提示信息

}

returnconn; //返回数据库连接对象

}

/*

* 功能:执行查询语句

*/

publicResultSet executeQuery(String sql) {

try{ // 捕捉异常

conn= getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn

stmt= conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

rs= stmt.executeQuery(sql); //执行SQL语句,并返回一个ResultSet对象rs

}catch (SQLException ex) {

System.err.println(ex.getMessage());// 输出异常信息

}

returnrs; // 返回结果集对象

}

/*

* 功能:关闭数据库的连接

*/

publicvoid close() {

try{ // 捕捉异常

if(rs != null) { // ResultSet对象的实例rs不为空时

rs.close();// 关闭ResultSet对象

}

if(stmt != null) { // Statement对象的实例stmt不为空时

stmt.close();// 关闭Statement对象

}

if(conn != null) { // Connection对象的实例conn不为空时

conn.close();// 关闭Connection对象

}

}catch (Exception e) {

e.printStackTrace(System.err);// 输出异常信息

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值