一、 流程处理标签
1、if判断语句
<c:if test="判断语句">
//满足条件时是执行此行
</c:if>
2、if-else语句
<c:choose>
<c:when test="判断语句">
//条件成立执行此行代码
</c:when>
<c:otherwise>
//条件不成立执行此行代码
</c:otherwise>
</c:choose>
其中对于不管是if语句还是if-else语句,判断语句可以是EL表达式。这里我说的if语句和if-else语句只是为了便于我自己的理解,请不要和我抬杠。
3、循环语句
<c:forEach var="?" items="?">
//循环体
</c:forEach>
二、网页重定向、网页导入、URL重写
1、网页重定向
<c:redirect url="?"></c:redirect>
2、网页导入
<c:import url="?"></c:import>
3、URL重写
<c:url url="?"></c:url>
三、属性处理和输出标签、
1、设置属性标签
<c:set var="变量名" value="变量值" scope="属性范围"></c:set>
如果我们不指定scope的范围,那么首先一次从page、request、session、application中寻找属性名,如果找到则设置属性值,如果找不到,则在page中创建一个行的属性名-属性值
2、移除一个属性标签
<c:remove var="变量名" scope="属性范围"></c:remove>
2、输出标签
<c:out value="?"></c:out>
四、实验一
实现一个登录功能,如果用户登录成功,那么久跳转到登录成功页面显示用户名,如果用户登录失败,则重定向到登录页面,并输出一条额外信息
login.jsp:登录页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<c:import url="error.jsp"/> //使用<c:import url="?">标签包含一个错误信息
<form action="/check.jsp" method="post">//信息录入后转到check.jsp页面处理
Name:<br>
<input type="text" name="name"/><br>
Password:<br>
<input type="password" name="password"><br>
<input type="submit" name="submit"/>
</form>
</body>
</html>
error.jsp:错误信息页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<c:out value="${error}"/> //如果登录失败,我就会吧失败信息放在session当中,并设置error属性,和相应属性自
</body>
</html>
check.jsp:检查用户登录信息页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Check In</title>
</head>
<body>
<c:choose>
<c:when test ="${param.name=='makeliwei' && param.password=='make'}" >//判断条件使用EL表达式,使用${param.propertyName}的方式获取属性值,
<c:set var="login" value="${param.name}" scope="session"/> //信息验证成功,使用<c:set var="?" value="?" scope="?"/>方式将name值保存在session中
<jsp:forward page="login_success.jsp"/> //通过<jsp:forward page="?"/>标签转发login_success.jsp页面
</c:when>
<c:otherwise> //判断条件不成立则执行下面的语句
<c:set var="error" value="密码错误或者账号不存在" scope="session"></c:set>//
<c:redirect url="login.jsp"/>//使用<c:redirect url="?"/>方式重定向到我们的login.jsp
</c:otherwise>
</c:choose>
</body>
</html>
login_success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Login Sucess</title>
</head>
<body>
<h1>Welcome to TaoTao.com</h1>
<c:out value="${login}"/>//使用<c:out value="?"/>属性值输出
</body>
</html>
效果演示
在浏览器中输入:http://localhost:8088/login.jsp
输入登录信息name=”makeliwei,password=”make;页面就跳转到了check.jsp
信息输出正确则,显示如下页面
信息输入错误则显示包含错误信息的登录页面
五、实验二
使用标签元素实现URL重写功能
counter.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<c:set var="counter" value="${sessionScope.counter+1}" scope="session"></c:set>
<html>
<head>
<title>Counter</title>
</head>
<body>
<h2>JSP Counter ${sessionScope.counter}</h2>
<a href="<c:url value="counter.jsp"/>">递增</a>
</body>
</html>
效果演示
1、在浏览器没有禁用Cookie的效果演示图
点击递增,我们的URL并没有发生任何变化
2、禁用Cookie后
我们发现点击递增,浏览器地址栏的URL发生了变化。实现了URL重写
参考
《JSP&Servlet读书笔记》-林信良