你好,游客 登录 注册 搜索
背景:
阅读新闻

JSTL 及 tablibs 的简单介绍和配置方法

[日期:2016-12-11] 来源:Linux社区  作者:nvd11 [字体: ]

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","jack@163.com"));
        userMap.put(2, new User(2,"nick","nicky","nick@163.com"));
        userMap.put(3, new User(3,"jenny","jenny","jenny@163.com"));
        userMap.put(4, new User(4,"bill","billy","bill@163.com"));
    }

    @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>

可以见到我利用 这个标签直接遍历里参数容器。

页面效果

页面

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-12/138195.htm

linux
相关资讯       jstl  tablib 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款