隐式对象使用位置

  隐式对象在转译为Servlet后,是_jspService()中的局部变量。隐式对象只能在<%与%>之间,或<%=与%>之间直接使用。
  无法在<%!与%>之间直接使用隐式对象;但可以给它传递进去,比如:

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@page import="javax.servlet.*, java.io.PrintWriter, java.util.HashMap, java.util.Map, java.util.Set" %>
<%!
    // 方法对数是传递过来的请求和响应对象
    public void allBooks (HttpServletRequest request, HttpServletResponse response) {
        Map<String, String> bookMap = new HashMap<String, String>();
        bookMap.put("三国演义", "小说");
        bookMap.put("资治通鉴", "历史");
        bookMap.put("窦娥冤", "戏剧");
        request.setAttribute("books", bookMap);
    }
%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>在线书籍</title>
</head>
<body>
<table style="text-align:left; width:100%;" border="0">
    <tbody>
    <tr>
        <td style="background-color: rgb(51, 255, 255);">书名</td>
        <td style="background-color: rgb(51, 255, 255);">分类</td>
    </tr>
    <%
        // 给声明的方法把请求、响应对象传递进去
        allBooks(request, response);
        Map<String, String> books = (Map<String, String>)request.getAttribute("books");
        Set<Map.Entry<String, String>> entries = books.entrySet();
        for (Map.Entry<String, String> entry : entries) {
    %>
    <tr>
        <td><%= entry.getKey() %></td>
        <td><%= entry.getValue()%></td>
    </tr>
    <%
        }
    %>
    </tbody>
</table>
</body>
</html>
View Code

相关文章: