使用了EL表达式可以简化JSP页面代码,但是如果需要进行逻辑判断怎么办?
虽然EL表达式可以访问JavaBean的属性,但是并不能实现在JSP中进行逻辑判断,因而要使用JSTL标签。
JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
1.使用JSTL实现JSP页面中逻辑处理
2.JSTL通常会与EL表达式合作实现JSP页面的编码
使用JSTL的步骤
1.创建Web工程,添加jar包
下载地址:http://mvnrepository.com/artifact/javax.servlet/jstl/1.2
下载完直接复制到web项目WEB-INF的LIB目录下就可以了。
2.在JSP页面添加taglib指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3.使用JSTL标签
1.创建一个jstl.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jstl</title>
</head>
<body>
<fieldset>
<legend>
简单字符串
</legend>
${str}
</fieldset>
<fieldset>
<legend>
简单字符串
</legend>
<c:out value="${str}"></c:out><br/>
</fieldset>
<fieldset>
<legend>
简单字符串,不存在提示
</legend>
<c:out value="${strq }" default="没有取到值"></c:out>
</fieldset>
<fieldset>
<legend>
特殊字符串,你好
</legend>
<c:out value="${welcome }" default="没有取到值" escapeXml="false"></c:out>
</fieldset>
<fieldset>
<legend>
特殊字符串,你好(消除隐患escapeXml="true",不写默认也是true)
</legend>
<c:out value="${welcome }" default="没有取到值" escapeXml="true"></c:out>
</fieldset>
<fieldset>
<legend>
特殊字符串,弹窗(消除js评论隐患escapeXml="true",不写默认也是true)
</legend>
<c:out value="${welcome1 }" default="没有取到值" escapeXml="true"></c:out>
</fieldset>
<fieldset>
<legend>
if判断
</legend>
<c:if test="${v>1 }">
v的值大于1
</c:if>
</fieldset>
<fieldset>
<legend>
choose when otherwise
</legend>
<c:choose >
<c:when test="${v>1 }">
v的值大于1
</c:when>
<c:otherwise >
v的值不大于1
</c:otherwise>
</c:choose>
</fieldset>
<fieldset>
<legend>
choose when otherwise if...else
</legend>
<c:choose >
<c:when test="${score<60 }">
不及格
</c:when>
<c:when test="${score<70 }">
及格
</c:when>
<c:when test="${score<80 }">
良好
</c:when>
<c:when test="${score<90 }">
优秀
</c:when>
<c:otherwise >
天才
</c:otherwise>
</c:choose>
</fieldset>
<fieldset>
<legend>
自定义对象
</legend>
${news2.id},${news2.tid},${news2.title},${news2.ncontent}<br/>
</fieldset>
<fieldset>
<legend>forEach ${ vs.index} ${vs.count} ${vs.first} ${vs.last}</legend>
<c:forEach items="${newslisttest }" var="u" varStatus="vs">
<c:choose>
<c:when test="${vs.count % 2 !=0 }">
<font color="blue">${u.id },${u.title },${u.author},${u.createtime}<br></font>
</c:when>
<c:otherwise>
${u.id },${u.title },${u.author},${u.createtime}<br>
</c:otherwise>
</c:choose>
</c:forEach>
</fieldset>
</body>
</html>
2.创建JstlServlet(实体类和业务层不再赘述)
package com.xintouyun.jweb.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.xintouyun.jweb.entity.News;
import com.xintouyun.jweb.entity.User;
import com.xintouyun.jweb.service.NewsService;
import com.xintouyun.jweb.service.UserService;
import com.xintouyun.jweb.service.impl.NewsServiceImpl;
import com.xintouyun.jweb.service.impl.UserServiceImpl;
public class JstlServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
//创建session
HttpSession session =request.getSession();
//创建application
ServletContext application=request.getServletContext();
request.setAttribute("str", "hello world");
request.setAttribute("welcome", "<font color='red'>你好</font>");
request.setAttribute("welcome1","<script> alert(111111) </script>");
session.setAttribute("welcome2", "nihao");
application.setAttribute("welcome3", "nihaoa");
NewsService newsservice=new NewsServiceImpl();
News news2=newsservice.getNews(15);
request.setAttribute("news2", news2);
UserService userservice=new UserServiceImpl();
User user2=userservice.getUser("admin");
request.setAttribute("user2", user2);
List<News> news3=newsservice.listNews();
request.setAttribute("newslisttest", news3);
request.setAttribute("v", "10");
request.setAttribute("score", "86");
request.setAttribute("v1", null);
request.setAttribute("v2", "");
request.setAttribute("v3", new ArrayList<>());
request.setAttribute("v3", "value4");
request.getRequestDispatcher("Jstl.jsp").forward(request, response);
}
}
3.配置xml文件
<servlet>
<servlet-name>JstlServlet</servlet-name>
<servlet-class>com.xintouyun.jweb.servlet.JstlServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JstlServlet</servlet-name>
<!--访问servlet的路径:必须以/开头,这个/代表应用的根 -->
<url-pattern>/JstlServlet</url-pattern>
</servlet-mapping>
重启tomcat服务器,然后浏览器访问http://localhost:8080/myweb/JstlServlet(我的项目是myweb)