java ee自动生成编码_EE Servlet 3:在Servlet中生成HTML输出

java ee自动生成编码

如果您只需要在EE Web模块中处理少量请求URI,那么在Servlet代码中生成自己HTML响应可能比使用完整的模板库更容易。 作为示例的一部分,我尝试了一个非常简单的Java DSL,该Java DSL在编写自己的Serlvet时生成html输出。 代码如下:



package zemian.servlet3example.web;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/index")
public class IndexServlet extends HtmlWriterServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HtmlWriter html = createHtmlWriter(req, resp);String message = getMessage(req, html);html.header().h(1, "Welcome to Servlet 3 Example").p("Let's explore Java Servlet 3.x Features.").p(message).ul(html.link("Index", "/index"),html.link("Hello", "/hello"),html.link("Form", "/form"),html.link("Sys Props (Password needed)", "/sys-props")).footer();} 
}

我写了一个基本的HtmlWriterServlet类,该类提供了一种方法,您可以在其中获取HtmlWriter构建器的实例。 包装类似HTML的生成器的好处是,它更易于阅读,并有助于生成正确的格式标签。 例如,“ ul”和“ table”接受Java List或Map对象,并生成正确的html标签。

这是另一个示例,我如何用几行代码生成Java System Properties页面的表视图:

package zemian.servlet3example.web;import java.io.IOException;
import java.util.TreeMap;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/sys-props")
public class SysPropsServlet extends HtmlWriterServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HtmlWriter html = createHtmlWriter(req, resp);TreeMap sysProps = new TreeMap(System.getProperties());html.header().h(1, "Java System Properties").table(sysProps).footer();}
}

简单的HtmlWriter类提供了一些html生成器方法,它可以帮助生成带有相对上下文路径HTML链接。 您可以轻松地对其进行进一步改进,以帮助生成更多HTML代码,例如表单标签等。

另外,请注意,ServletResponse对象使您可以完全控制编写自定义响应,因此,不仅限于重现HTML。 您可以编写二进制输出,例如PDF甚至MP3文件。 您只需要控制Response Writer以及将返回的正确的相应内容mime类型和大小即可。

  • 您可以在servlet3-example中获得这些代码

翻译自: https://www.javacodegeeks.com/2015/01/ee-serlvet-3-generating-html-output-in-servlet.html

java ee自动生成编码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jq 控制td只显示一行_CSS让表格里的内容强制显示一行,超出长度显示省略号

在写html页面的时候,会经常用到表格,而且很多时候一个tr里边需要包含好几个td,这样就会导致tr的高度不一致,被撑开了这时候,如果能让td里的内容强制显示在一行,并让超出边界范围的内容显示点点,…

C++11的模板改进

C11关于模板有一些细节的改进:模板的右尖括号模板的别名函数模板的默认模板参数模板的右尖括号C11之前是不允许两个右尖括号出现的,会被认为是右移操作符,所以需要中间加个空格进行分割,避免发生编译错误。int main() {std::vecto…

java面试题2014_Java生态系统– 2014年我的5大亮点

java面试题20141月1日-RedMonk Analyst公司宣布Java比以往任何时候都更加流行和多样化! 2014年,随着FOSDEM的Free Java会议室的年会,Java生态系统开始轰轰烈烈地响起。 除了关于OpenJDK和相关主题的许多精深的技术讲座外,Steve OG…

android 第三方圆弧进度条,android 可配置的圆弧进度条

Arc ProgressBar Configurable 圆弧环形进度条DEMOAttributesnameformatdescriptionborderWidthinteger圆弧边框的宽度progressStyletick/arc进度条类型,tick 为带刻度的radiusinteger半径arcbgColorcolor圆弧的边框背景degreeinteger弧度,设置为 0 即为…

三分钟让孩子的数学开窍

周末给孩子灌了一个世界观和方法论:用笛卡尔坐标系描述世界。 我强调,学习笛卡尔坐标系不是做题,它是工具,它是帮你解题的,而不是为难你的。 任何数学题放在笛卡尔坐标系都可以通过机械的方法硬算,计算过程…

oracle大对象实例_超大型Oracle数据库设计实例

超大型系统的特点为: 1.处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB; 2.系统必须提供实时响应功能,系统需不停机运行,要求系统有很高的可用性及可扩展性。 这篇是笔者针对以上特…

C++定时器的实现之格式修订版

个人认为一个完备的定时器需要有如下功能:在某一时间点执行某一任务在某段时间后执行某一任务重复执行某一任务N次,任务间隔时间T那么如何实现定时器呢?下面是我自己实现的定时器逻辑,源码链接最后会附上。定时器中主要的数据结构…

java 性能调优_Java性能调优调查结果(第四部分)

java 性能调优这是本系列中的最后一篇文章,我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果。如果您尚未阅读第一篇文章,建议您首先阅读以下内容: 性能问题的频率和严重性 最受欢迎的监控解决方案 查找根本原因的工…

Android接入热敏打印机,Android 关于佳博和汉印蓝牙热敏打印机开发

接上篇文章Android之BLE(低功耗)蓝牙开发,本篇文章针对上篇博文中提出的两款打印机的开发流程进行记录。首先不管时佳博打印机还是汉印打印机,都是先对他们各自的lib进行导入,如图:导入lib之后,一定要记得进行sync pro…

C 桥接模式 - 开关和电器

桥接模式(Bridge Pattern)是将抽象部分与它的实现部分分离,使它们都可以独立地变化。1模式结构UML 结构图:Abstraction(抽象类):用于定义抽象类的接口,并且维护一个指向 Implementor…

centos8配置本地光盘yum源_CentOS8 配置本地yum源的详细教程

centos8发行版通过 baseos 和应用流 (appstream) 仓库发布,appstream 是对传统 rpm 格式的全新扩展,为一个组件同时提供多个主要版本centos8 自带封装了nginx,这篇文章给大家介绍centos8 配置本地yum源,具体内容如下所示&#xff…

javafx显示image_如何摆脱JavaFX中的重点突出显示

javafx显示image今天,有人问我是否知道摆脱JavaFX控件(分别是按钮)的焦点突出的方法: 有关此问题的大多数文章和提示建议添加: .button:focused {-fx-focus-color: transparent; }但是使用这种样式,仍然…

android aop静态方法,spring aop 不能对静态方法进行增强解决

想要通过aop的方式记录HttpUtils发出的post请求日志,但是 aop 不能对静态方法进行增强。只能对实例方法进行增强。。如果一定要增强静态方法,我们可以对目标类使用单例模式,然后通过调用实例方法去调用那个静态方法,而且对应的对象…

汉字笔画动图怎么做_隶书基本笔画教程(动态图)

隶书开创并奠定了汉字的书写形式。而隶书的美时而古朴遒劲,时而秀美温润,实在是令人神往。笔法有方有圆,方圆并用。下面文章以明朗的笔迹演示,结合相对切实的例字,给大家详尽讲解隶书的基本写法。掌握这些基本写法后&a…

C语言没有引用,只有指针

这个问题是昨晚上有同学在知识星球提问,但是因为前两天一直在出差,比较累,没认真回答,今天打球回来,就把这个事情解决了。我想说的已经在题目说明的很清楚了,C语言是没有引用的,引用是在C 里面才…

java日志使用_使用Java 8防止日志过宽

java日志使用一些日志将被机器消耗并永久保存。 其他日志仅用于调试和供人类使用。 在后一种情况下,您通常要确保您不会产生太多的日志,尤其是不会产生太宽的日志,因为一旦行长超过一定大小( 例如,此Eclipse bug &…

android 磁场传感器 罗盘,HMC5883L电子指南针罗盘模块 GY-271三轴磁场传感器 的相关教程 带Arduino 51源代码...

//***************************************// HMC5883 51串口测试程序// 使用单片机STC89C51// 晶振:11.0592M// 显示:PC串口// 编译环境 Keil uVision2// 参考宏晶网站24c04通信程序// 时间:2011年3月1日//*******************************…

python如何实现人工智能应用锁_如何清除应用锁的数据库

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

C/C 代码规范注释有哪些讲究?

如果领导给你一个项目的源码让你阅读,并理解重构代码,但里面一句注释都没有,我想这肯定是之前同事“删库跑路”了。看一份源码什么很重要?除了各种代码规范之外,还有一个比较重要的就是注释。注释虽然写起来很痛苦, 但…

记忆化搜索 递归缓存_需要微缓存吗? 营救记忆

记忆化搜索 递归缓存缓存解决了各种各样的性能问题。 有很多方法可以将缓存集成到我们的应用程序中。 例如,当我们使用Spring时,可以轻松使用Cacheable支持。 非常简单,但我们仍然必须配置缓存管理器,缓存区域等。有时&#xff0c…