百木园-与人分享,
就是让自己快乐。

javaweb:JSP、JSTL标签和EL表达式

据我理解,标签是为了使得jsp内容更加简洁,编写起来更加方便,不用再去在jsp里写大段的java代码,标签就显得与html格外契合;当然,并不是一定要使用标签,只用jsp的语法来写java代码也可以实现功能,只是稍显繁琐。

言归正传,我们在使用标签之前首先需要导入两个依赖

        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

导入以来之后,我们的标签就可以使用了。

 

1.JSP标签

常用的JSP标签有三个,分别为

<jsp:include page=\"\"></jsp:include>

<jsp:forward page=\"\"></jsp:forward>

<jsp:param value=\"\" name=\"\"/>

第一个标签是用来进行网页之间的拼接,page里面写入的是需要拼接页面的路径,前面在网页拼接中已经使用过,在此就不再展示效果;

第二个标签是请求转发,page里面写入的是请求转发到的页面的路径;

第三个标签是通常与上面两个标签混合使用,它的作用是携带一些参数,获取这些参数的方法是request.getParameter(String key),接下来我们结合第二个请求转发的标签做一下测试

首先定义两个页面,一个是pa1.jsp,一个是pa2.jsp

pa1.jsp

<%@page import=\"java.net.URLEncoder\"%>
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
    pageEncoding=\"UTF-8\"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<title>ja1</title>
</head>
<body>
<jsp:forward page=\"ja2.jsp\">
<jsp:param value=\"jms\"  name=\"name\"/>
<jsp:param value=\"100\" name=\"age\"/>
</jsp:forward>
</body>
</html>

pa2.jsp

<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
    pageEncoding=\"UTF-8\"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<title>ja2</title>
</head>
<body>
<h1>姓名:<%= request.getParameter(\"name\") %></h1>
<h1>年龄:<%= request.getParameter(\"age\") %></h1>
</body>
</html>

我们访问pa1.jsp,看一下能不能请求到pa2.jsp并读取到数据

 

 

没有问题。

 

2.JSTL标签

常用的JSTL标签是核心标签了

第一步:引用核心标签库的语法:<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>,将这一句话加在jsp文件的开头;

我们来说一些常用的标签

(1).<c:if></c:if>和<c:out/> 

<c:if></c:if>就还跟程序中的if是一样的,它具有以下三个属性:

test:if的判断条件语句,是必须的;

var:储存条件结果的变量,就是定义一个变量值为true或false,非必须;

scope:var属性的作用域,默认是当前页面(page),非必须;

<c:out/>就是输出语句,也具有三个属性:

value:输出的内容,必须;

default:输出的默认值,默认就是主题内容,非必须;

escapeXml:是否忽略XML特殊字符。默认是true,非必须;

下面我们来看一下这两个标签的实际用法:

建立一个页面coreif.jsp

<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
    pageEncoding=\"UTF-8\"%>
<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<title>coreif</title>
</head>
<body>
<form action=\"coreif.jsp\"  method=\"get\">
用户名:<input type=\"text\" name=\"username\" value=\"${param.username }\"><br>
<input type=\"submit\" value=\"登录\"><br>
</form>
<c:if test=\"${param.username == \'guanliyuan001\'}\" var=\"logined\">
    <c:out value=\"登陆成功\"></c:out>
</c:if>
<c:out value=\"${logined }\"></c:out>
</body>
</html>

 

 然后我们输入用户名为“guanliyuan001”再登陆

 

 (2).<c:set/>和<c:choose></c:choose>

<c:set/>适用于保存数据的标签,它具有五个属性:

var:储存信息的变量;

value:储存的值;

scope:作用域,默认是当前页面(page);

还有两个属性 不常用,在此就不做介绍了。

<c:choose></c:choose>与java switch语句和if else if else语句功能相似,他还有两个子标签<c:when></c:when>和<c:otherwise></c:otherwise>

具体语法如下:

<c:choose>

  <c:when test =\"\">

  ...

  </c:when/>

  <c:when test =\"\">

  ...

  </c:when/>

  <c:when test =\"\">

  ...

  </c:when/>

  ...

  <c:otherwise>

  ...

  </c:otherwise>

</c:choose/>

下面我们来看一下这两个标签的实际用法:

建立一个页面setchose.jsp

<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
    pageEncoding=\"UTF-8\"%>
<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<title>setchoose</title>
</head>
<body>
<form action=\"setchoose.jsp\"  method=\"get\">
成绩<input type=\"text\" name=\"s\" value=\"${param.s }\"><br>
<input type=\"submit\"><br>
</form>
<c:set var=\"score\" value=\"${param.s }\"/>
<c:choose>
    <c:when test=\"${score >= 90 }\">
        <h1>成绩优秀</h1>
    </c:when>
    <c:when test=\"${score >= 80 }\">
        <h1>成绩良好</h1>
    </c:when>
    <c:when test=\"${score >= 70 }\">
        <h1>成绩一般</h1>
    </c:when>
    <c:when test=\"${score >= 60 }\">
        <h1>成绩及格</h1>
    </c:when>
    <c:when test=\"${score >= 0 }\">
        <h1>成绩不及格</h1>
    </c:when>
    <c:otherwise>
        <h1></h1>
    </c:otherwise>
</c:choose>
</body>
</html>

 

 

 

 

 

 

 

 (3).<c:forEach></c:forEach>

这个标签封装了java的for、while、dowhile循环,它具有以下属性:

 

属性 描述 是否必要 默认值
items 要被循环的信息
begin 开始的元素(0=第一个元素,1=第二个元素) 0
end 最后一个元素(0=第一个元素,1=第二个元素) Last element
step 每一次迭代的步长 1
var 代表当前条目的变量名称
varStatus 代表循环状态的变量名称

 

接下来我们演示以下它的实际用法:

建立一个页面foreach.jsp

<%@page import=\"java.util.ArrayList\"%>
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
    pageEncoding=\"UTF-8\"%>
<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<title>foreach</title>
</head>
<body>
<% 
    ArrayList<String> arry = new ArrayList<>();
    arry.add(\"this is 1\");
    arry.add(\"this is 2\");
    arry.add(\"this is 3\");
    arry.add(\"this is 4\");
    arry.add(\"this is 5\");
    request.setAttribute(\"number\", arry);
%>
<c:forEach var = \"num\" items=\"${number }\">
    <c:out value=\"${num }\"/><br>
</c:forEach>

<c:forEach var = \"i\" begin=\"1\" end=\"5\">
    i =<c:out value=\"${i }\"/><br>
</c:forEach>

</body>
</html>

 

 3.EL表达式

EL 表达式语法如下:

${EL表达式}

 

(本文仅作个人学习记录用,如有纰漏,敬请指正)


来源:https://www.cnblogs.com/jmsstudy/p/16530986.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » javaweb:JSP、JSTL标签和EL表达式

相关推荐

  • 暂无文章