iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >用Java程序生成文本的捷径(转)
  • 428
分享到

用Java程序生成文本的捷径(转)

2023-06-03 05:06:47 428人浏览 泡泡鱼
摘要

用Java程序生成文本的捷径(转)[@more@]大多数程序都需要输出一些文本,比如邮件消息、html文件或控制台输出。但是,计算机本质上只能处理二进制数据,程序员必须让软件来生成可理解的文本。在这篇文章中,我要介绍的是在生成和输出文本时,

用Java程序生成文本的捷径(转)[@more@]大多数程序都需要输出一些文本,比如邮件消息、html文件或控制台输出。但是,计算机本质上只能处理二进制数据,程序员必须让软件来生成可理解的文本。在这篇文章中,我要介绍的是在生成和输出文本时,为何使用模板引擎能够节省时间。你将了解模板的优点,如何针对不同的情形创建高效的模板。和 System.println说再见! 虽然程序员可以很轻松地编写出输出文字信息的代码(因为这毕竟是从Hello World范例学到的第一件事情),但通常而言,程序员不是写作或组织文字信息(如邮件)的最佳人选。因此,我们常常让市场部门或公关部门去做那些事情。但遗憾的是,即使对于最普通的邮件,编写者也常常依赖程序输出来完成任务。无论是对于邮件编写者还是程序员,这种合作方式都很容易带来误解和造成失误。 请看一个例子:一个Java程序从某个数据源收集一些客户信息,通过email给公司的每一个客户发送帐户余额信息。下面是完成这个任务的Java程序(完整的示例程序代码可以从本文最后下载): for (int i=0; i { Customer customer = (Customer)customers.get(i); StringBuffer message = new StringBuffer(); message.append ("尊敬的先生/女士: "); message.append (customer.getCustName()); message.append (""); message.append (""); message.append ("您的帐户余额是 "); message.append (customer.getAccountTotal()); message.append (""); message.append (""); message.append ("致礼!"); message.append (""); message.append ("某某装饰品公司"); // 发送email mm.sendMail (customer.getFirstName(), customer.getEmail(), "Account", message.toString()); } 上面的例子可谓发送消息最差劲的方法之一。由于消息嵌入到了程序代码之中,如果没有程序员的帮助,其他人几乎不可能对消息进行编辑。同时,即使对于专业的程序员,如果他不了解代码,要进行编辑也很困难。如果你预见了这些麻烦,把代码写成下面这种形式: static public final String STR_HELLO="尊敬的先生/女士: "; static public final String STR_MESSAGE="您的帐户余额是 "; static public final String STR_BEY="致礼!某某装饰品公司"; 如果说上述代码使得消息编辑更容易,那么这种帮助也不会很多。很难要求一个不搞程序设计的人理解static和final的含义。此外,如果要改变消息的结构,上面这种代码也不够灵活。例如,人们可能要求你在邮件消息中加入更多来自数据源的信息,这时,你就得修改构造邮件的代码,或许还要添加更多的static final String对象。 模板简介从文本文件装入消息文本可以解决部分问题??但不能提供动态内容,而这对于系统来说是很重要的。你需要有一种方法把动态内容插入到预先编写好的文本消息。但是,如果使用某种文本模板引擎,它就能够帮助你完成所有复杂的工作。 模板引擎解决了把动态内容插入文本消息的问题。使用模板引擎时,我们不再把消息直接嵌入程序,而是创建一个包含文本内容的简单文本文件,称为“文本模板”。模板引擎解析文本模板,借助一些简单的模板指令,把动态内容插入模板输出结果。 我选择的模板引擎是Jakarta Project的Velocity,但你可以任意选择其他许多模板引擎之一。Velocity和WEBMacro或许是当前功能最丰富、最受欢迎的两个引擎,而且两者都按照源代码开放协议免费提供。虽然我在本文例子中使用Velocity,你可以方便地把这些例子移植到不同的模板引擎,只需遵照目标引擎的语法即可。我们来看看用Velocity完成的email程序例子。要编译和运行修改后的程序,你必须下载Velocity并把它加入到classpath。如果要让email部分也能正常运行,你还需要JavaMail。 for (int i=0; i in ”。#foreach指令迭代list,把list中的每个元素放入item参数,然后解析#foreach块内的内容。对于 list内的每个元素,#foreach块的内容都会重复解析一次。从效果上看,它相当于告诉模板引擎说:“把list中的每一个元素依次放入item变量,每次放入一个元素,输出一次#foreach块的内容”。 mvc设计模型在看下一个例子之前,请回顾一下前面我们所讨论的内容。使用模板引擎最大的好处在于,它分离了代码(或程序逻辑)和表现(输出)。由于这种分离,你可以修改程序逻辑而不必担心邮件消息本身;类似地,你(或公关部门的职员)可以在不重新编译程序的情况下,重新编写邮件消息。 实际上,我们分离了系统的数据模式(Data Model,即提供数据的类)、控制器(Controller,即邮件程序)以及视图(View,即模板)。这种三层体系称为Model-View- Controller模型(MVC)。如果遵从MVC模型,代码分成三个截然不同的层,简化了软件开发过程中所有相关人员的工作(MVC的出现已经有一段时间,参见本文最后的“参考资源”了解更多信息)。 结合模板引擎使用的数据模式可以是任何Java对象,最好是使用Java Collection Framework的对象。控制器只要了解模板的环境(如VelocityContext),一般这种环境都很容易使用。一些关系数据库的“对象-关系” 映射工具能够和模板引擎很好地协同,简化JDBC操作;对于EJB,情形也类似。 模板引擎与MVC中视图这一部分的关系更为密切。模板语言的功能很丰富、强大,足以处理所有必需的视图功能,同时它往往很简单,不熟悉编程的人也可以使用它。模板语言不仅使得设计者从过于复杂的编程环境中解脱出来,而且它保护了系统,避免了有意或无意带来危险的代码。例如,模板的编写者不可能编写出导致无限循环的代码,或侵占大量内存的代码。不要轻估这些安全机制的价值;大多数模板编写者不懂得编程,从长远来看,避免他们接触复杂的编程环境相当于节省了你自己的时间。 许多模板引擎的用户相信,在采用模板引擎的方案中,控制器部分和视图部分的明确分离,再加上模板引擎固有的安全机制,使得模板引擎足以成为其他内容发布系统(比如jsP)的替代方案。因此,Java模板引擎最常见的用途是替代JSP也就不足为奇了。 HTML处理由于人们总是看重模板引擎用来替换JSP的作用,有时他们会忘记模板还有更广泛的用途。到目前为止,模板引擎最常见的用途是处理HTML Web内容。但我还用模板引擎生成过sql、email、XML甚至Java源代码。在这里我只能涉及模板的部分应用,但你可以从本文最后的参考资源找到更多的例子。 我将在下面的HTML例子中使用前面email例子的数据模式。这个HTML页面是一个假想的企业Intranet页面,它显示出客户帐户的详细信息。本例中的控制器类是一个Java Servlet,视图部分则包含一个HTML模板。下面的代码显示了Servlet类中最主要的代码。为使这个例子更具有代表性,我从头开始手工编写这个 Servlet。然而,一般情况下,模板会提供一些Servlet工具,帮助用户减轻一些编写代码的负担。 // 装入模板 Template template = Velocity.getTemplate("html.vm"); // 创建环境 VelocityContext context = new VelocityContext(); context.put ("customers",Customer.getCustomers());// 解析模板,输出应答ServletOutputStream output = response.getOutputStream();Writer writer = new OutputStreamWriter (output);template.merge(context, writer);writer.flush(); 这个例子也没有什么令人惊异的地方。和前面的例子一样,我只是把必需的对象加入到VelocityContext,然后输出解析模板的结果。但是请注意,在前面的例子中,我只把一个Customer加入到VelocityContext,这里加入到VelocityContext的却是一组 Customer对象。我可以用#foreach指令迭代访问所有的Customer对象。下面是相应的HTML模板:

客户报告

#foreach ($customer in $customers)

$customer.CustName

#foreach ($transaction in $customer.Transactions)
$transaction.Date

--结束END--

本文标题: 用Java程序生成文本的捷径(转)

本文链接: https://www.lsjlt.com/news/232990.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用Java程序生成文本的捷径(转)
    用Java程序生成文本的捷径(转)[@more@]大多数程序都需要输出一些文本,比如邮件消息、HTML文件或控制台输出。但是,计算机本质上只能处理二进制数据,程序员必须让软件来生成可理解的文本。在这篇文章中,我要介绍的是在生成和输出文本时,...
    99+
    2023-06-03
  • 从Java应用程序动态生成PDF文件(转)
    从Java应用程序动态生成PDF文件(转)[@more@]如果应用程序需要动态生成 PDF 文档,则需要 iText 库。开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成。本文介绍了 iText 并提供了使用它从 Java ...
    99+
    2023-06-03
  • iOS APP h5快捷程序 .mobileconfig的生成
    iOS APP h5快捷程序 .mobileconfig的生成 从APP Store 下载Apple Configurator软件 从一个管理点管理所有iOS设备应用程序,文档和配置文件。想要确保您的...
    99+
    2023-09-01
    ios
  • (转)【Android】AAR文件的生成与使用
    文章目录 前言 一、AAR是什么? 二、使用步骤 1.生成AAR 2.AAR使用 总结 前言 现在App开发模块化技术已是常态,有很多的功能模块都被抽出来供给开发者使用。为了开发者使用,这些模块都会被打包,就和java中的库一样。在java...
    99+
    2023-09-15
    android
  • Java中二维码生成:使用对象还是文件路径?
    随着移动支付的普及,二维码已经成为了一种重要的支付手段。在Java中,我们可以使用第三方库来生成二维码。但是,在使用库的时候,我们通常会有两种选择:使用对象或者使用文件路径。 那么,使用哪种方式更好呢?这个问题并没有一个简单的答案,我们需要...
    99+
    2023-08-29
    二维码 对象 path
  • JAVA生成pdf文件的实操教程
    目录一、简介二、实操三、原理解析1.是什么?1.1.关键技术2.怎么做?为什么?3.参考总结 一、简介 PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形...
    99+
    2022-11-16
    java生成pdf文件 自己实现JAVA生成PDF文件 java实现pdf
  • 【教程】如何使用Java生成PDF文档?
    在如今数字化时代,越来越多的人使用PDF文档进行信息传递和共享。而使用Java生成PDF文档也成为了一个非常重要的技能,因为Java作为一种通用的编程语言,可以在不同的操作系统和平台上运行。下面,我们将为您介绍如何使用Java生成PDF文档...
    99+
    2023-09-02
    java servlet jvm
  • 利用exe4j生成java的exe文件
    使用集成开发工具IDEA生成jar文件 1. File—>Project Structure 2. Artifacts—>加号—>JAR—>From mod...
    99+
    2024-04-02
  • SpringBoot应用程序转换成WAR文件详解
    目录WAR与JAR新应用现有应用程序SpringBootServletInitializer建立WAR运行WAR如何在不牺牲嵌入式应用服务器的直接执行能力的情况下,将 JAR Spr...
    99+
    2022-11-13
    SpringBoot应用程序转换成WAR SpringBoot转换WAR
  • 【利用pycharm将python程序生成.exe执行文件】
    Python 学习笔记 一只小白自学Python的成长史 文章目录 Python 学习笔记一、安装pyinstaller包二、应用步骤2.1 在包中下载pyinstaller2.2 在The...
    99+
    2023-10-03
    python pycharm 开发语言
  • 在java中将inputStream对象转换为File对象(不生成本地文件)
    需求说明 在后端中通过POI生成Excel文件流,将输出流(outputStream)转为输入流(inputStream)后又需要将输入流(inputStream)转为File对象 问题:如果需要将输入流(inputStream)转为Fil...
    99+
    2023-08-18
    java python 开发语言
  • 利用Python制作本地Excel的查询与生成的程序问题
    目录前言需求实验步骤Excel预览图片查询2.1 Excel的索引与输入2.2 开始查询、丰富程序追加查询结果到Excel完整代码前言 今天教大家利用Python制作本地Excel的...
    99+
    2024-04-02
  • 建立Java的应用程序(转)
    建立Java的应用程序(转)[@more@]Java的普通应用程序中,必须含有一个可被外界(通常是java解释器)所直接调用的类,我们可以把这个类称为该应用程序的主类。建立Java的应用程序1:main成员函数  Java的普通应用程序中,...
    99+
    2023-06-03
  • 怎么用小程序模板生成美观的小程序
    本篇内容介绍了“怎么用小程序模板生成美观的小程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、头图打开小程序,首先看到的就是首页的头图,...
    99+
    2023-06-27
  • 利用Java编写HTML文件分析程序(转)
    利用Java编写HTML文件分析程序(转)[@more@]摘要:本文从实践的角度重点阐述Java语言中输入流类StreamTokenizer在编写HTML文件分析程序中的应用,并介绍了以字节为单位下载Web页面的例程。 一、概述 Web服务...
    99+
    2023-06-03
  • 如何在Java应用程序中打包JavaScript文件路径?
    在Java应用程序中,我们常常需要使用JavaScript文件来实现一些前端交互逻辑,但是JavaScript文件的路径问题却经常困扰着我们。本文将介绍如何在Java应用程序中打包JavaScript文件路径,以方便我们在应用程序中使用J...
    99+
    2023-09-10
    打包 javascript path
  • Unix Shell中Java应用程序的路径是什么?
    在Unix Shell中,Java应用程序的路径有时候会让人感到困惑。这是因为Unix Shell有自己的路径设置,而Java应用程序也有自己的路径设置。在本篇文章中,我们将探讨Unix Shell中Java应用程序的路径是什么,以及如何...
    99+
    2023-10-12
    unix shell path
  • Java 应用程序中的 PKIX 路径构建失败
    PKIX 路径构建失败是由于 Java 应用程序无法构建信任链,验证服务器的证书时发生的错误。这通常是由于以下几个原因导致的:1. ...
    99+
    2023-09-27
    Java
  • 如何在Java中使用对象来生成路径上的二维码?
    二维码在现代社会得到了广泛的应用,从商业广告到支付扫码,无处不在。在Java中,我们可以使用对象来生成路径上的二维码,使得我们的应用程序可以更加方便地管理和使用二维码。 一、二维码的生成 Java中可以使用多种开源库来生成二维码,其中比较常...
    99+
    2023-08-29
    二维码 对象 path
  • Java中生成微信小程序太阳码的实现方案
    目录背景实现方案生成有限制太阳码实现步骤获取小程序的access_token调用微信api生成小程序太阳码说明参数说明注意事项获取小程序的access_token调用微信api生成小...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作