不得不说,前面几章是整个Java Web的核心技术,如果跳过了前面几章可以说做一个coding人员根本不合格。
N年前进入公司就使用OAF,几年没有使用过SSH。虽然每天在做业务逻辑增删改查,看似和大家一样,当解决问题的时候就会发现,根本不理解Java Web的根本。
至于JSTL这些知识已经过期了,但是有些陈旧项目可能会遇到,我们学习的是它的思想,只做简单了解。
在JSP中,EL表达式是个很方便的工具,使用EL表达式可以很方便的引用一些Java Bean以及其属性,而不会抛出NullPointException之类的错误。但是EL表达式功能很有限,例如不能遍历集合等,因此需要JSTL的支持。
1、什么是标签
JSTL全称为JSP Standard Tag Library,即JSP标准标签库。
标签是JSP作为Java EE分层程序中,显示层的一种解决方案。
2、标签实例
我们前面实例已经使用了标签
主要包含如下部分
- 引入jar
- jsp页面导入jar,并且给简写便于使用
- 使用
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<%@ page import="com.wht.demo.listener.PersonInfo" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%
String action = request.getParameter("action");
String account = request.getParameter("account");
if ("login".equals(action) && account.trim().length() > 0) {
PersonInfo personInfo = new PersonInfo();
personInfo.setAccount(account.trim().toLowerCase());
personInfo.setIp(request.getRemoteAddr());
personInfo.setLoginDate(new Date());
session.setAttribute("personInfo", personInfo);
response.sendRedirect(response.encodeRedirectURL(request.getRequestURI()));
return;
} else if ("logout".equals(action)) {
session.removeAttribute("personInfo");
response.sendRedirect(response.encodeRedirectURL(request.getRequestURI()));
return;
}
%>
<html>
<head>
<title>单态登录测试</title>
</head>
<body>
<c:choose>
<c:when test="${personInfo !=null}">
<center>
<div>
<h3>
欢迎您,${personInfo.account}。
</h3>
</div>
<div>
<h3>
您登录的IP为,${personInfo.ip}。
</h3>
</div>
<div>
<h3>
您登录的时间为<fmt:formatDate value="${personInfo.loginDate}"
pattern="yyyy-MM-dd HH:mm:ss"/>。
</h3>
</div>
<div>
<h3>
<a href="${pageContext.request.requestURI}?action=logout">退出</a>
</h3>
</div>
<script>setTimeout("location=location;", 5000);</script>
</center>
</c:when>
<c:otherwise>
${msg}
<c:remove var="msg" scope="session"/>
<form action="${pageContext.request.requestURI}?action=login"
method="POST">
<div>账号:<input name="account"/></div>
<div><input type="submit" value="登录"/></div>
</form>
</c:otherwise>
</c:choose>
</body>
</html>
3、为什么使用标签
JSP中一般使用Scriptlet脚本即<%%>包起来的java代码,不便于阅读和维护。
使用标签核心就是为了让jsp页面简洁美观好用。
4、JSTL标签库
JSTL是JSP官方给的一套标签库,包含了结合的遍历,数据的输出,字符串的处理,数据的格式化等等功能。
除了JSTL标签库,市面上还有其它的标签库,例如Struts标签库,Spring标签库,JFreeChart标签库等。
并且Java 有个通用思想,除了有标准的库往往会给个机会让你自定义一些模块。