JavaWeb-jstl表达式

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。