1.JSTL
JavaServer Pages Standard Tag Library(1.1),它的中文名称为JSP标准标签函数库。JSTL是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环。
在项目中最常使用:解决条件判断和循环问题(EL表达式所做不到的)
安装
(1)直接把JSTL有关的俩个jar包,拷贝到web目录下的WEB-INF目录,右键新建一个文件夹名为lib里
(2)然后在jsp页面上添加指令,就可以使用了
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
流程控制
<c:if>的用途就和我们一般在程序中用的if一样
user.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:if test="${age >= 18}">
<h2>成年人</h2>
</c:if>
<c:if test="${age < 18}">
<h2>未成年人</h2>
</c:if>
</body>
</html>
servlet
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "LoginServlet" , urlPatterns = "/login.do")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("age" , 20);
request.getRequestDispatcher("user.jsp").forward(request , response);
}
}
<c:choose>
<c:choose>本身只当做<c:when>和<c:otherwise>的父标签。
<c:when>和<c:otherwise>也不能脱离<c:choose>。
<c:otherwise>必须在<c:when>之后才能使用。
user.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:choose>
<c:when test="${age >= 60}">
<h2>老年人</h2>
</c:when>
<c:when test="${age >= 18}">
<h2>成年人</h2>
</c:when>
<c:otherwise>
<h2>未成年人</h2>
</c:otherwise>
</c:choose>
</body>
</html>
servlet
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "LoginServlet" , urlPatterns = "/login.do")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("age" , 50);
request.getRequestDispatcher("user.jsp").forward(request , response);
}
}
迭代操作
<c:forEach>
<c:forEach>为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行<c:forEach>的本体内容。
user.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<ul>
<c:forEach items="${user_list}" var="user" varStatus="index">
<li>${index.count}---${user}</li>
</c:forEach>
</ul>
</body>
</html>
servlet
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "LoginServlet" , urlPatterns = "/login.do")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<String> list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
request.setAttribute("user_list" , list);
request.getRequestDispatcher("user.jsp").forward(request , response);
}
}
image.png
单列集合泛型为对象的操作,即集合中存放的是一个一个对象
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<a href="login.do">登录</a>
</body>
</html>
User.java实体类
package domain;
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
servlet处理请求
package servlet;
import domain.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "LoginServlet" , urlPatterns = "/login.do")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> list = new ArrayList<>();
User user1 = new User();
user1.setName("zhangsan");
user1.setAge(3);
list.add(user1);
User user2 = new User();
user2.setName("lisi");
user2.setAge(5);
list.add(user2);
request.setAttribute("user_list" , list);
request.getRequestDispatcher("user.jsp").forward(request , response);
}
}
转发页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<ul>
<c:forEach items="${user_list}" var="user" >
<li>${user.name}---${user.age}</li>
</c:forEach>
</ul>
</body>
</html>
image.png
双列集合操作
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<a href="login.do">登录</a>
</body>
</html>
User.java实体类
package domain;
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
servlet处理请求
package servlet;
import domain.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebServlet(name = "LoginServlet" , urlPatterns = "/login.do")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String , User> map = new HashMap<>();
User user1 = new User();
user1.setName("zhangsan");
user1.setAge(3);
map.put("1" , user1);
User user2 = new User();
user2.setName("lisi");
user2.setAge(5);
map.put("2" , user2);
request.setAttribute("user_map" , map);
request.getRequestDispatcher("user.jsp").forward(request , response);
}
}
转发页面user.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<ul>
<c:forEach items="${user_map}" var="user">
<li>${user.key}---${user.value.name}---${user.value.age}</li>
</c:forEach>
</ul>
</body>
</html>
image.png