惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - Valen

命令方式启动SQL服务 tomcat中显示文件目录 equals中NullPointerException问题解决 - Valen - 博客园 Jsp重定向forward和sendRedirect的区别 Java,Hibernate,Sql之间数据类型对应表 转:Java调用正则表达式 - Valen - 博客园 Jsp中EL表达式不能显示的解决方法 JAVA读取Properties的六种方法 Jsp中errorPage使用及web.xml配置 - Valen - 博客园 Install JSEclipse Method 备份你的手机通讯录到网络吧! vsftpd 配置 解决fedora11 root用户登录问题 Windows与Vmware下的Linux文件共享方法 Windows Live 设置 雷人签名 ob_start 用法 分页算法(1) 小沈阳 "不差钱" 改编版
JSTL与EL表达式简单应用 - Valen - 博客园
Valen · 2009-10-15 · via 博客园 - Valen

Jsp 动作标签 java server page

 //实例化一个bean,给bean的属性赋值
 <jsp:useBean id="ub" class="com.bean.UserBean"></jsp:useBean>
 <jsp:setProperty name="ub" property="uname" value="小强"/>
 <jsp:getProperty name="ub" property="uname"/>


Jstl标签  java standard taglib language

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="true"%>

//page指令中,isELIgnored="true"默认为false,就是值允许EL表达式,设置true则不允许EL表达式

[表达式标签]

1、c:out = 输出标签

<c:out value="" default="" escapeXml=""></c:out>

属性: /*
  * value:值
  * default:默认值
  * escapeXml:默认允许输出特殊字符串
  */
 
 //当没有变量uName时,则输出default的值
 <c:out value="${uName}" default="null值"></c:out>
 //如果escapeXml为false时,则特殊字符不起作用,页面会显示红色的Hello
 <c:out value="<font color=red>Hello</font>" escapeXml="false"></c:out>

2、c:set = 赋值,设置属性

<c:set var="" property="" value="" target="" scope=""></c:set>

属性: /*
  * var:作用域属性
  * property:属性名
  * value:属性值
  * target:bean属性或map值
  * scope:作用域范围{page,request,session,application}
  */
 
 假设有UserBean类,有uName,uPass,uAge3个属性,给UserBean类赋值
 
 //var:版本,如果value值为null,则var属性将被删除,如果value值不为null,var属性被创建
 <c:set var="uName" scope="session">valen</c:set>
 <c:set var="uName" scope="session" value="valen"></c:set>
 //上面两种方式一样,只不过第2种赋值方式为有文本体
 <c:out value="${uName}"></c:out>

 //target:版本,下面这段代码意思是,首先实例化一个UserBean的对象为ub,然后给这个对象的uName

属性赋值放入scope中,名字为ub1,
 //然后将ub1输出,如果ub1没有指定scope,则输出的时候会去4个容器中查找
 <jsp:useBean id="ub" class="bean.UserBean"></jsp:useBean>
 <c:set target="${ub}" property="uname" value="valen"></c:set>
 <c:out value="${ub.uname}"></c:out>

3、c:remove
 
 /*
  * var:要删除的名字
  * scope:从哪个容器里删除,如果未指定,则把所有容器中为改名字的删除
  */

4、c:catch

 /*
  * var:错误属性名
  */

 //将可能会出错的程序外围加入c:catch标签,程序报错后,会记录在var的属性名中,然后将错误信息打印

出来
 <c:catch var="exception" >
  <% int i = 9/0; %>
 </c:catch>
 //exception:java.lang.ArithmeticException: / by zero
 <c:out value="${exception}"></c:out>
 //exception.message相当于exception.getMessage()
 <c:out value="${exception.message}"></c:out>

[流程控制标签] 

5、c:if

 /*
  * test:代表表达式内容为true则执行本体内容
  * scope:取值范围
  * var:用来存储test运算后的结果{true|false}
  */

 //
 <c:if test="${ub.uname=='小白'}">
  <c:out value="登录成功"></c:out>
 </c:if>


6、c:choose、when、otherwise

 /*
  * when test:当条件满足时执行
  * otherwise:否则执行otherwise的语句
  */
 
 <c:choose >
  <c:when test="">
   <c:out value=""></c:out>
  </c:when>
  <c:otherwise >
   <c:out value=""></c:out>
  </c:otherwise>
 </c:choose>

[迭代标签]

7、c:forEach
 
 /*
  * begin:如果指定了items,就从items[begin]开始迭代,如果没有指定就在begin开始,类型为整数
  * end:类型为整数
  * items:要进行迭代的集合
  * step:迭代的步长
  * var:迭代参数的名称
  * varStatus:迭代变量的名称,用来表示迭代的状态
  */

  //${userinfo} 就等于request.setAttribute("userinfo",al);
  <c:forEach items="${userinfo}" var="ub">
    <tr>
     <td align="center"><c:out value="${ub.uname}"></c:out></td>            

         <td align="center"><c:out value="${ub.upass}"></c:out></td>
     <td align="center"><c:out value="${ub.age}"></c:out></td>
     <td align="center"><c:out value="${ub.email}"></c:out></td>         

         <td align="center"><c:out value="${ub.address}"></c:out></td>
   </tr>
 </c:forEach>
 
8、c:forTokens
 
 /*
  * items:
  * delims:以什么字符分割
  */
 <c:forTokens var="token" items="bleu,blanc,rouge|vert,jaune|blanc,rouge"  delims="|,">
   <c:out value="${token}"/>
 </c:forTokens>
[URL标签]

9、c:import
 
 /*
  * url:引入页面,与jsp:include相同
  * 好处:当被引用的页面发生更改时,容器能立刻产生反应
  * 指令引入:是指引入页面也被引入页面完全融合,2个页面的属性可以共用
  */

10、c:param

 /*
  * name:变量名
  * value:变量值
  */
 //param要与import和redirect结合使用,相当于传递参数
 
11、c:redirect
 
 //跳转页面,跳转到b页面,可以把参数data传送过去
    <c:redirect url="b.jsp" >
     <c:param name="data" value="hello,a!"></c:param>
    </c:redirect>

EL表达式应用

 {param.txtName} = request.getParameters("txtName");
 <c:out value="${param.txtName }"></c:out>
 {paramValues.txtCheckBox} = request.getParameterValues("txtCheckBox"); //返回一个数组,可以用

下标取值
 <c:out value="${paramValues.txtCheckBox[0]}"></c:out>