歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> JSTL 及 tablibs 的簡單介紹和配置方法

JSTL 及 tablibs 的簡單介紹和配置方法

日期:2017/3/1 9:08:16   编辑:Linux編程

jstl 簡介

jstl 的全稱就是jsp standard tag libraries, 就是jsp裡的標准標簽庫。
引用jstl技術能在jsp種使用更加強大的標簽(tag)。

jstl 裡包含多個標准庫, 本文主要簡單講講其中的核心標准庫

核心庫

主要封裝的是一些基本的核心的業務邏輯。

tablibs

這個名稱一看就知道, 就是指標簽庫的集合了。

Spring mvc裡配置 tablibs

maven 設置

當然要在maven裡加入兩個包, 分別是 jstl 和 standard。
在pom.xml裡加入

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<dependency>
   <groupId>taglibs</groupId>
   <artifactId>standard</artifactId>
   <version>1.1.2</version>
</dependency>

那麼在 WEBINF/lib 裡就會加入jstl-1.2.jar 和 standard-1.1.2.jar 這兩個包

spring-context.xml 配置

現在大部分人使用的viewReslover 都是InternalResoucesViewReslover。

在InternalResoucesViewReslover的配置裡加上個viewClass的Property

<!-- InternalResoucesViewReslover -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  <property name="prefix" value="/WEB-INF/jsp/"></property>
  <property name="suffix" value=".jsp"/>
</bean>

jsp頁面配置

只需要在jsp裡頭部加上

下面這句

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

聲明一下核心標簽庫, 注意這個真是jstl的1個部分, 其余部分參考spring文檔。

1個例子

這個例子使用了核心tablibs中最常用的 1個

我們知道, 如果jsp頁面接受1個從後台(controller)傳過來的參數的值,一般如下寫法法就ok了

<input type="hidden" name="showIds" id="showIds" value=${paraId}/>

但是, 如果接受的參數是1個容器(list/map)的話, 單靠jsp就不好處理了。
一般的做法是把容器裡元素的遍歷用JavaScript寫在 jsp頁面的初始化event裡

但是如果使用jstl 標簽庫, 就能直接在jsp遍歷傳過來的容器元素哦。

controller 傳值

package com.home.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.home.rest.User;

@Controller
@RequestMapping("/user")
public class UserRestController {
    private Map<Integer,User> userMap = new HashMap<Integer, User>();

    public UserRestController(){
        userMap.put(1, new User(1,"jack","jacky","[email protected]"));
        userMap.put(2, new User(2,"nick","nicky","[email protected]"));
        userMap.put(3, new User(3,"jenny","jenny","[email protected]"));
        userMap.put(4, new User(4,"bill","billy","[email protected]"));
    }

    @RequestMapping(value="/users", method=RequestMethod.GET)
    public String list(Model model){
        model.addAttribute("users", userMap);
        return "rest/user/users";
    }

}

上面的例子利用model傳了包含幾個User對象的map容器過去。。

jsp遍歷容器元素

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>User list</title>
</head>
<body>
    <c:forEach items="${users}" var="um">
        -- ${um.value.id} 
        -- ${um.value.name}
        -- ${um.value.email}
        <br>
    </c:forEach>

</body>
</html>

可以見到我利用 這個標簽直接遍歷裡參數容器。

頁面效果

Copyright © Linux教程網 All Rights Reserved