jsp中java代码打印_Java的Jsp中,使用Layui表格的输出

本文介绍了如何在JSP中利用Java和Layui库来美化表格展示。通过解析和处理HTTP请求参数,动态构建SQL查询,并使用Gson将查询结果转化为JSON格式,以适应Layui的数据接口。文章详细展示了代码实现过程,包括错误处理和数据分页,最终实现了自定义表格渲染,提高了用户体验。
摘要由CSDN通过智能技术生成

在Jsp中,每次要用表格渲染的时候,如果用系统默认的表格就像下图一样比较丑,如果你要自己渲染的话,就比较麻烦。所以我写了Java 的用Layui渲染表格的方法。

2d4d4930a1cdb66b87ca936ec7c68bea.png

要使用layui渲染表格的方法,要知道后台的传入参数和传出参数,layui官网说的很清楚,我就不过多赘述了,传入的是代表当前页码(page)和代表每页数据量(limit),传出的参数是总行数(count)、数据(data)、数据状态码----可以不设置(code)、状态信息码 —可以不设置(mag)

传入参数:

dbac6ffc00c39d264600da6a094c98bd.png

传出参数:

5bff4554bebf608b89cefcb18a1f6c10.png

然后再准备工具包:Gson

Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化;同时每个方法都提供了重载方法

然后上代码

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.util.Enumeration;

import java.util.HashMap;

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 com.google.gson.Gson;

import com.google.gson.JsonArray;

import com.google.gson.JsonObject;

import com.gx.dao.IComdao;

import com.gx.dao.impl.ComdaoImpl;

import com.gx.utils.DbUtils;

public JsonObject SelectSenior(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//获取传入参数

int page= Integer.parseInt(request.getParameter("page"));

int limit=Integer.parseInt(request.getParameter("limit"));

request.setCharacterEncoding("UTF-8");

response.setContentType("text/html ;charset=UTF-8");

//Enumeration enu = request.getParameterNames();

//检查传入参数

//while (enu.hasMoreElements()) {

//String paraName = (String) enu.nextElement();

//System.out.println(paraName + ": " + request.getParameter(paraName));

//}

JsonObject json = new JsonObject();

try {

String strmysql = "select tbsenior.seniorID,tbsenior.`name`,tbsenior.gender,tbsenior.birthday,tbinhospital.checkInmark, "

+ " tbinhospital.dateofagreement,tbinhospital.endtime,tbsenior.idcardno,tbinhospital.inSite, "

+ " tbCaregrade.caregrade,tbYear.`year`,tbPocketbook.pocketbook"

+ " from b_inhospital tbinhospital join s_senior tbsenior on tbinhospital.seniorID = tbsenior.seniorID "

+ " join s_year tbYear on tbinhospital.YearID = tbYear.YearID "

+ " join S_Pocketbook tbPocketbook on tbinhospital.PocketbookID = tbPocketbook.PocketbookID "

+ " join S_Caregrade tbCaregrade on tbinhospital.CaregradeID =tbCaregrade.CaregradeID ";

String strNum = request.getParameter("strNum");

String strCode = request.getParameter("strCode");

Object[] Obj = null;

/// 筛选查询结果

if (!"".equals(strNum) && !"".equals(strCode)) {

strmysql = strmysql + " WHERE tbsenior.`name` LIKE '%?%' && tbsenior.checkInmark LIKE '%?%' ORDER BY tbsenior.NationID; ";

Obj = new Object[2]; //开辟一个长度为2的数组

System.out.println("Obj="+Obj.length);

Obj[0]=strNum;

Obj[1]=strCode;

}

else if (!"".equals(strNum) ) {

strmysql = strmysql + " WHERE tbsenior.`name` LIKE ? ORDER BY tbsenior.NationID; ";

Obj = new Object[1]; //开辟一个长度为1的数组

Obj[0]=strNum;

}else if (!"".equals(strCode) ){

strmysql = strmysql + " WHERE tbsenior.checkInmark LIKE ? ORDER BY tbsenior.NationID; ";

Obj = new Object[1]; //开辟一个长度为1的数组

Obj[1]=strCode;

}

else {

strmysql = strmysql + "ORDER BY tbsenior.NationID; ";

}

IComdao comdao = new ComdaoImpl();

rs = comdao.find(strmysql, Obj); //mysql查询的结果

conn = comdao.getConn();

ps = comdao.getPs();

Gson gson = new Gson();

HashMap hm = new HashMap();

JsonArray jsonarray = new JsonArray();

json.addProperty("code", 0);

json.addProperty("msg", "");

int len = 0; // 总条数

while (rs.next()) {

len++;

//分页,切割

if ((len > (page-1) * limit) && (len < (page) * limit)) {

// 得到结果集(rs)的结构信息,比如字段数、字段名等。

ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();

// 返回此 ResultSet对象中的列数。

int icolnum = rsmd.getColumnCount();

for (int i = 1; i <= icolnum; i++) {

// 转换为json 类型

hm.put(rsmd.getColumnName(i).toString(), rs.getString(i));

}

jsonarray.add(gson.toJsonTree(hm));

}

}

json.add("data", jsonarray); //

json.addProperty("count", len);

jsonarray.add(gson.toJsonTree(hm));

System.out.println(jsonarray);

json.add("data", jsonarray);

System.out.println(json);

} catch (Exception e) {

e.printStackTrace();

} finally {

DbUtils.close(conn, ps, rs);

}

return json;

}

最后看效果图:

b642d1e39e055e03733c828b6d8af954.png

本文地址:https://blog.csdn.net/weixin_44550157/article/details/107895404

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
重点: <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT> </OBJECT> <input type=button value=打印 " class= "NOPRINT "> <input type=button value=直接打印 " class= "NOPRINT "> <input type=button value=页面设置 " class= "NOPRINT "> <input type=button value=打印预览 " class= "NOPRINT "> 注意: 1、CSS对打印的控制: <!--media=print 这个属性可以在打印时有效--> <style media=print> .Noprint{display:none;} .PageNext{page-break-after: always;} </style> Noprint样式可以使页面上的打印按钮等不出现在打印页面上,这一点非常重要,因为它可以用最少的代码完成最需要的功能 PageNext样式可以设置分页,在需要分页的地方 就OK了,呵呵 2、表格线粗细的设置,更是通过样式表: <style> .tdp { border-bottom: 1 solid #000000; border-left: 1 solid #000000; border-right: 0 solid #ffffff; border-top: 0 solid #ffffff; } .tabp { border-color: #000000; border-collapse:collapse; } </style> 或者: <style> .TdCs1 { border:solid windowtext 1.0pt; } .TdCs2 { border:solid windowtext 1.0pt; border-left:none; } .TdCs3 { border-top:none; border-left:solid windowtext 1.0pt; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt; } .TdCs4 { border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt; } .underline { border-top-style: none; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-bottom-color: #000000; } </style> 1、控制 "纵打 "、 横打”和“页面的边距。 (1) [removed] function SetPrintSettings() {  // -- advanced features  factory.printing.SetMarginMeasure(2) // measure margins in inches  factory.SetPageRange(false, 1, 3) // need pages from 1 to 3  factory.printing.pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值