用JSP创建一个表格模板 .

转载 2013年12月03日 22:30:04
项目中要用到一些展示信息的表格,表头不固定,表格内容是即时从后台取的;考虑到复用性,笔者用jsp编写了一个表格模板,可以从request中获取List封装的数据,然后通过JSTL结合EL表达式填充到模板。最后完成的jsp文件可以作为一个单独的模块,嵌入到任意其它jsp页面需要的位置。

 

        首先是规划一下表格的样式:

        为简单起见,此处使用html的table等标签构建了一个简单的表格,表格背景隔行变色,整体颜色为蓝色系。表格定义部分的核心代码如下:

  1. <table style="width:100%;border:1px white solid">  
  2.     <tr bgcolor="#4F81BD"style="color: #fff;">  
  3.         <th style="text-align: center"><%=columns[0]%></th>  
  4.         <th style="text-align: center"><%=columns[1]%></th>  
  5.     </tr>  
  6.     <c:forEach items="${list}" var="row"varStatus="status">  
  7.         <tr bgcolor="${status.index%2 == 0?'#D0D8E8':'#E9EDF4'}">  
  8.             <td align="center">${status.current.key}</td>  
  9.             <td align="center">${row.value}</td>  
  10.         </tr>  
  11.     </c:forEach>  
  12. </table>  

             此表格只有两列,可用于显示包含一组“键值对”的数据。代码中的columns是jsp页面中定义的一个java字符串数组,保存两列列头的值,例如:“设备类型”、“数量”。数据行使用JSTL的forEach标签来遍历各条数据,其中list变量是存放在request中的List类型的对象,List中存放了一组包含“键值对”的数据实体,笔者所用的数据实体是一个简单的Bean:

  1. package com.reports.charts.bean;  
  2.    
  3. public classKeyValueBean {  
  4.     private String key;  
  5.     private String value;  
  6.      
  7.     public KeyValueBean() {  
  8.     }  
  9.     public KeyValueBean(String key, String value) {  
  10.         this.key = key;  
  11.         this.value = value;  
  12.     }  
  13.      
  14.     public String getKey() {  
  15.         return key;  
  16.     }  
  17.     public void setKey(String key) {  
  18.         this.key = key;  
  19.     }  
  20.     public String getValue() {  
  21.         return value;  
  22.     }  
  23.     public void setValue(String value){  
  24.         this.value = value;  
  25.     }  
  26. }  

             模板中的取值方法用到了EL表达式,例如${list}表示取出request中的list对象。${status.current}和${row}其实指代的是同一个东西,也就是当前遍历的数据行,这里使用两种不同的写法是为了给读者提供更多实现方式的参考。关于EL表达式的详细信息,可参考笔者转发的文章《JSP中的EL表达式详细介绍》。

        接下来的关键就是传递list的值放到request中了。一般J2EE项目中都使用了Struts、SpringMVC等mvc框架,常见的处理流程应该是客户端发送数据请求,Controller接收请求进行处理,取出并生成合适的数据存放到一个List中,然后转发给View,也就是转发给JSP页面来显示。

        然而基于其它的考虑,笔者希望这个jsp页面可以不经过Controller而独立运行,于是就需要将控制层移到jsp代码中;完整的jsp模板定义代码如下:

 

        其中,SpringContextHolder是笔者定义的一个获取Spring管理的其它Bean的工具类,用这个类可以方便地在同一个项目所有运行Java代码的地方使用,详见笔者的:《在JavaWeb应用中获取Spring管理的Bean的方法》。ReportFunctions类是一个业务类,包含了许多具体业务的代码,除了本文的jsp模板中可以使用之外,在项目的其它许多控制类都会用到。或者换句话说,笔者此处是借用了项目中现有的一个业务类,抽象出了一个模板。我们将模板保存一下,例如保存为“_tb2ColParam.jsp”,然后带着参数访问或获取这个jsp即可呈现出一个带样式的表格:“_tb2ColParam.jsp?p=1024&columns=types|nums”。

  1. <%@ page language="java"contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>  
  4.    
  5. <%@ page import="com.reports.util.ReportFunctions"%>  
  6. <%@ page import="com.reports.util.SpringContextHolder"%>  
  7. <%@ page import="java.util.*"%>  
  8. <%@ page import="com.reports.charts.bean.KeyValueBean"%>  
  9.    
  10. <%  
  11.     String[]columns = null;  
  12.     try{  
  13.         columns= request.getParameter("columns").split("\\|");  
  14.     }catch(NullPointerExceptione){  
  15.         e.printStackTrace();  
  16.         System.out.println("参数columns未赋值");  
  17.     }  
  18.     if(null == columns){  
  19.         columns= newString[]{"设备种类","数量"};  
  20.     }  
  21.     Stringparam = request.getParameter("p");  
  22.      
  23.     ReportFunctionsreportF = SpringContextHolder.getBean(ReportFunctions.class);  
  24.     List<KeyValueBean>list = null;  
  25.     if(null != param){  
  26.         list= report.method(param);  
  27.     }else{  
  28.         System.out.println(“参数获取失败”);  
  29.     }  
  30.      
  31.     if(0 == list.size()){  
  32.         list.add(new KeyValueBean("暂未统计", "暂无数据"));  
  33.     }  
  34.     request.setAttribute("list", list);  
  35. %>  
  36.    
  37. <table style="width:100%;border:1px white solid">  
  38.     <tr bgcolor="#4F81BD"style="color: #fff;">  
  39.         <th style="text-align: center"><%=columns[0]%></th>  
  40.         <th style="text-align: center"><%=columns[1]%></th>  
  41.     </tr>  
  42.     <c:forEach items="${list}" var="row"varStatus="status">  
  43.         <tr bgcolor="${status.index%2 == 0?'#D0D8E8':'#E9EDF4'}">  
  44.             <td align="center">${status.current.key}</td>  
  45.             <td align="center">${row.value}</td>  
  46.         </tr>  
  47.     </c:forEach>  
  48. </table>  

 

 

http://blog.csdn.net/neareast/article/details/16993271

 

http://blog.csdn.net/neareast/article/details/17023907

JSP表格模板升级(1)-- 用Java反射动态指定方法和参数

http://blog.csdn.net/neareast/article/details/17033515

JSP表格模板升级(2)-- 动态加载v.s.自定义标签初始化表格

 

相关文章推荐

JSP表格模板升级(3)-- 可变列数的表格模板

前文《JSP表格模板升级(1)-- 用Java反射动态指定方法和参数》已经实现了动态指定具体的业务方法,达到了一定的复用性,但现实使用中,一个仅有两列的列表是无法满足大多数显示要求的,于是本文对表格模...

JSP中使用JSP模板

JSP中使用JSP模板使用模板是开发稍大一点的网站必不可少的一步,模板引擎也是有好多。因为接触的少,我还是选择了使用JSP做模板引擎,然后就是如何引入了。 JSP的include分两种,静态incl...

jsp里的${}和jquery template的${} 怎么样转义

http://www.infoq.com/cn/news/2010/10/jQuery-Template  http://api.jquery.com/category/plugins/temp...

如何实现JSP网页模板 JSP网页母版

一般情况下,我们做网站的时候,其实,页脚,横幅,左菜单都是一样的 如果在每个页面都写一次的话,就造成了资源浪费。通常情况下,我们的解决办法就是使用网络模板。其实很简单就是用来一个标签,将重复使用的代...

如何实现JSP网页模板 JSP网页母版

一般情况下,我们做网站的时候,其实,页脚,横幅,左菜单都是一样的,如: 如果在每个页面都写一次的话,就造成了资源浪费。通常情况下,我们的解决办法就是使用网络模板。其实很简单就是用来一个标签,将重...

jsp表格中的<tr> <td> <th> <br> <b> <p>用法

表格是html中经常使用到的,简单的使用可能很多人都没问题,但是更深入的了解的人恐怕不多,下面我们先来看一下如何使用。 必须定义在里面,表示一行; 必须定义在里面,表示一列;       ...

用JSP创建一个表格模板

项目中要用到一些展示信息的表格,表头不固定,表格内容是即时从后台取的;考虑到复用性,笔者用jsp编写了一个表格模板,可以从request中获取List封装的数据,然后通过JSTL结合EL表达式填充到模...

asp.net 实现在线浏览word文档(word转html)

最近在做word文档在线浏览,找了种种方法、控件之后,回归到word转HTML,在线浏览.... 一下是后台代码,前台html页面默认代码即可。 因为用文件如下:using System; us...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)