J2EE课程设计《项目开发指导》——第7章 提高Web应用系统的响应性能(第2部分)

合集下载

Java的性能优化提升应用响应速度的技巧

Java的性能优化提升应用响应速度的技巧

Java的性能优化提升应用响应速度的技巧Java作为一种高级编程语言,广泛应用于各种领域的软件开发中。

然而,由于Java的特性和运行环境的复杂性,开发人员经常面临着提升应用程序性能并提高响应速度的挑战。

本文将介绍一些Java性能优化的技巧,帮助开发人员有效地提升应用的响应速度。

一、使用高效的数据结构和算法选择适当的数据结构和算法是提升Java应用性能的关键。

对于特定的问题,应根据其特性选择最适合的数据结构和算法。

例如,对于需要频繁插入和删除操作的场景,使用链表而不是数组可以更高效地处理数据。

此外,通过合理地使用哈希表、堆栈和队列等数据结构,可以有效地提高Java应用的性能。

二、避免过度使用锁Java中的锁机制是一种保护共享资源的有效手段,但过度使用锁会导致应用程序出现性能问题。

在高并发的场景下,过多的锁竞争可能会导致线程阻塞和上下文切换,进而降低应用的响应速度。

因此,开发人员应该避免过度使用锁,尽量使用无锁数据结构或者使用细粒度锁来提高并发性能。

三、合理使用线程池线程池是Java中处理并发任务的重要工具,合理使用线程池可以提高应用的并发性能。

开发人员应该根据应用场景和硬件资源的情况来配置线程池的大小。

如果线程池的大小超过了系统的处理能力,会导致线程竞争和上下文切换的增加,从而降低应用的响应速度。

另外,使用线程池可以避免线程的创建和销毁的开销,进一步提高应用的性能。

四、合理使用缓存缓存是提高Java应用性能的重要技术手段之一。

通过合理地使用缓存,可以避免频繁的IO操作和计算,从而有效地提高应用的响应速度。

开发人员应该根据应用的特点和需求,选择合适的缓存策略和数据结构。

常见的缓存技术包括本地缓存、分布式缓存和CDN等,在使用缓存时需要注意缓存的一致性和更新策略,以免引入脏数据和缓存穿透等问题。

五、优化数据库操作数据库是很多Java应用的核心存储和处理组件。

合理优化数据库操作可以明显提高应用的响应速度。

如何提高Web服务器性能

如何提高Web服务器性能

如何提高Web服务器性能在各种网站的正常运营中,由于用户需求的多样性,直接导致了主机应用的复杂性,诸如,Client/Server模式、Web/Server模式、三层应用服务系统迅速普及,服务器作为网络信息发布、处理的关键性节点,比以往要承载更多的流量负载。

也许服务器的性能表现会不尽如人意,这就需要分析具体的服务器性能瓶颈并找到解决办法。

本文对影响Web服务器性能的各方面做了分析,提出了缓解Web服务器性能瓶颈效应的方法。

各种Web平台技术性能分析实际上,目前的web站点能够采用各种技术,包括静态HTML、内嵌或服务器解析的HTML (inline/server-parsed HTML)和CGI(Common Gateway Interface,公共网关接口),并以ODBC(Open Database Connectivity,开放式数据库互接)实现数据库的互连。

每一种数据源均以其独特的方式在web服务中发挥着作用。

静态HTML静态HTML是互联网上任何站点最基本的一种构成“元素”。

几乎所有的站点均不同程度地采用了这种“元素”。

静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成。

这意味着,对一个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。

从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。

为了提高静态HTML的访问效率,主要可以从以下几个方面进行优化:网络带宽、磁盘I/O以及cache(高速缓冲存储器)。

服务器解析的HTML依靠服务器解析的HTML页面包括两部分的代码:一部分是标准的HTML代码,另一部分是服务器端运行的代码(由第三方的处理程序或web服务器自己在页面传输到客户端前对其进行解释)。

这种HTML页面是CGI程序的升级版本(因为它的执行效率更高)。

目前,内嵌的服务器端扩展集,比如ASP、PHP是普通的服务器端支持的扩展集,已得到了非常普遍的使用。

Java Web应用系统性能优化指南

Java Web应用系统性能优化指南

Java Web应用系统性能优化指南随着互联网的不断发展,Web应用系统正在成为企业级应用系统的主要形式。

而Java作为Web应用系统开发的主要语言,其高可靠性和开发效率带来的便利,正被越来越多的企业所接受。

但是,Java Web应用系统的性能问题也越来越受到开发人员和运维人员的关注。

因此,本文将从多个角度探讨Java Web应用系统的性能优化,帮助开发人员和运维人员更好地解决性能问题。

1. 优化数据库数据库是Web应用系统中最常用的组件之一,也是性能瓶颈所在之一。

因此,通过对数据库进行优化,可以大大提高整个系统的性能。

1.1 数据库读写分离在数据库中,读操作和写操作所消耗的资源是不一样的,为了提高数据库的性能,通常需要将读写操作分离。

即通过主从复制的方式,将读操作分配到从库上,将写操作分配到主库上。

这样可以避免读写操作之间的竞争,提高系统的并发处理能力。

1.2 使用索引索引是数据库优化的重要手段之一,通过建立适当的索引,可以加快数据查询的速度。

但是,在使用索引时需要注意,适当的索引可以提高查询速度,但是过多的索引会增加数据库的维护成本,并且会降低更新操作的效率。

1.3 数据库连接池数据库的连接是比较耗费系统资源的,为了避免频繁建立和关闭数据库连接,通常使用连接池来管理数据库连接。

连接池会维护一定数量的数据库连接,并且在需要时分配给请求方使用,请求完成后将连接释放回连接池。

使用连接池可以避免频繁地连接和关闭数据库,提高系统的性能。

2. 优化代码代码问题也是影响Web应用系统性能的一个关键因素。

通过对代码进行优化,可以提高系统的稳定性和性能。

2.1 避免双重循环在编写代码时,需要注意避免双重循环。

双重循环是比较消耗系统资源的,会导致系统的响应速度变慢。

因此,在处理大量数据时,应该尽量避免使用双重循环。

2.2 使用缓存使用缓存可以减轻数据库的负担,提高系统的响应速度。

缓存是一种内存数据存储技术,可以将常用的数据存储在内存中,提高系统访问速度。

提升Web应用系统性能研究

提升Web应用系统性能研究

量, 从而使 sve 和 JP页面响应更快 , tl r t S 扩展性更

强。 中, 其 某些调优技术是 在编程 中实现的 , 而另一 些技术是与应用服务器的配置相关的。在本文 中,
p vt aa. 1 aaorets S nl i r aejvxs . tSuc et = ul qD D ;
随着用户数量 的增加 , b应用 系统负载会呈 We
Suc, or 使得下一次 S L调用时仍 然可 以继续 利用 e Q
现 出平滑上长 的趋 势… 本文探讨 如何使 基于 Jp 。 s/ 它 : Sn e 的 WE e rt l B应 用 程序 能承受 1益增 加 的访 问 F bl cas Co tolr eve e tnd HtpS r lt 3 i ls nrl S r lt xe s u c e t eve
Ab ta tAln t h n rme to h cin u ni ,t e la e p l ain s se ma rs n sr c : o g wi te ic e n fte l t q a t y h o d o W b a p i t y tm y p e e t a h e t f c o
维普资讯
第 2 卷第 1 6 期
V0 .6 No 1 1 2 .
企 业 技 术 开 发
T CHN0L E 0GI AL DE E OP C N L MEN NT RP E T OF E E RI S
20 0 7年 1 月
Jn2 0 a .o 7
T ANG Jn p n , ILn -i i— e g L ig l n
(e a t e t o n o m t o a a e e t u a o m n c t o o y e h i , h n s a u a 10 4 C ia Dp r m n f I fr a in M n gm n ,H n n C m u ia in P lt c n cC a g h ,H n n 4 0 0 ,h n )

j2ee课程设计

j2ee课程设计

j2ee 课程设计一、课程目标知识目标:1. 学生能理解J2EE的基本概念、架构和核心组件。

2. 学生能掌握Java Web编程基础,包括Servlet、JSP和JavaBean的使用。

3. 学生能了解J2EE常用的开发框架,如Spring、Hibernate等,并掌握其基本原理和应用。

技能目标:1. 学生能够运用J2EE技术独立设计和实现简单的Web应用。

2. 学生能够运用开发工具(如Eclipse)进行J2EE项目的创建、调试和部署。

3. 学生能够通过阅读和分析J2EE源代码,提高问题解决和编程能力。

情感态度价值观目标:1. 学生培养对编程和J2EE技术学习的兴趣,提高主动学习和探究的精神。

2. 学生养成团队协作和沟通的良好习惯,增强项目开发和团队合作的意识。

3. 学生能够认识到J2EE技术在企业级应用开发中的重要性,提高职业素养。

课程性质分析:本课程为高年级计算机专业课程,旨在帮助学生掌握J2EE技术,提高企业级应用开发能力。

学生特点分析:学生已具备一定的Java基础,具有较强的学习能力和动手能力,对新技术充满好奇。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的学习积极性,提高学生的实践能力和创新能力。

在教学过程中,关注学生的个体差异,因材施教,确保课程目标的实现。

通过课程学习,使学生能够达到上述具体的学习成果。

二、教学内容1. J2EE基本概念与架构:介绍J2EE的概念、发展历程、体系架构及其在企业级应用中的优势。

- 教材章节:第一章 J2EE概述- 内容列举:J2EE平台架构、核心组件、J2EE技术规范。

2. Java Web编程基础:讲解Servlet、JSP和JavaBean的基本原理、生命周期、编程方法及其在实际项目中的应用。

- 教材章节:第二章至第四章 Java Web编程基础- 内容列举:Servlet编程、JSP技术、JavaBean组件、MVC设计模式。

3. J2EE常用开发框架:分析Spring、Hibernate等常用框架的原理、特点和用法,并举例说明。

前端开发实训案例利用WebAssembly提升网页性能

前端开发实训案例利用WebAssembly提升网页性能

前端开发实训案例利用WebAssembly提升网页性能本文探讨了前端开发实训案例中如何利用WebAssembly来提升网页性能。

WebAssembly是一种新兴的技术,可以将高级语言编译为底层机器码,使得其在浏览器中能够更高效地执行。

通过将一些性能密集型的任务交给WebAssembly处理,我们可以显著提高网页的加载速度和响应能力。

一、介绍WebAssembly是一种低级的编程语言,它可以在主流浏览器中运行。

它采用了类似于机器码的二进制格式,能够提供接近本地代码的执行性能。

通过将WebAssembly与JavaScript结合使用,我们可以在网页中实现更高效的计算和数据处理,从而提升用户体验。

二、WebAssembly的优势1. 高性能:WebAssembly可以将代码编译为底层机器码,与JavaScript相比,具有更高的执行速度和更低的内存消耗。

2. 跨平台:WebAssembly可以在所有现代浏览器上运行,无论是桌面还是移动设备,在不同操作系统和硬件上都能得到充分支持。

3. 扩展性:WebAssembly可以与JavaScript和其他Web技术相互配合,共同构建复杂的应用程序,为开发者提供更多灵活性和可能性。

三、实例一:图像处理假设我们正在开发一个图片编辑应用,用户可以在网页上上传照片并进行各种编辑操作。

由于图片处理是一个计算密集型的任务,传统的JavaScript可能会导致网页加载缓慢和卡顿。

这时候,我们可以使用WebAssembly来加速图像处理的过程。

通过将图像处理算法使用C或C++编写,并将其编译为WebAssembly模块,然后在网页中调用这些模块,我们可以以接近本地代码的效率进行图像处理。

这样一来,用户上传的照片可以快速加载和编辑,大大提高了用户体验。

四、实例二:数据计算在一些数据密集型的应用中,网页需要对大量数据进行计算和分析,例如图表生成、数据可视化等。

由于JavaScript是一种解释性语言,对于这些大规模数据的处理效率并不高,可能导致页面的卡顿和响应迟缓。

j2ee课程设计指导

j2ee课程设计指导一、课程目标知识目标:1. 理解J2EE的基本概念、体系结构和开发流程;2. 掌握J2EE的核心技术,包括Servlet、JSP、JavaBean和EJB;3. 学会使用主流的J2EE开发工具和框架,如Eclipse、Struts、Hibernate和Spring;4. 了解J2EE在大型企业级应用开发中的应用场景和优势。

技能目标:1. 能够独立搭建J2EE开发环境;2. 掌握基本的Servlet编程,实现客户端与服务器端的交互;3. 掌握JSP页面开发,实现动态网页的生成;4. 学会运用JavaBean和EJB进行业务逻辑处理;5. 熟练使用主流开发框架,提高开发效率。

情感态度价值观目标:1. 培养学生对J2EE技术的兴趣和热情,激发学习动力;2. 培养学生良好的编程习惯,注重代码规范和团队协作;3. 增强学生的企业级应用开发意识,为将来从事相关工作打下基础。

课程性质分析:本课程为高年级计算机专业课程,旨在使学生掌握J2EE技术,提高大型企业级应用开发能力。

学生特点分析:学生已具备一定的Java基础,但对企业级应用开发尚缺乏了解,需要通过本课程的学习,逐步掌握J2EE技术。

教学要求:1. 结合实际案例,使学生充分了解J2EE技术的应用场景;2. 采用项目驱动教学法,让学生在实践中掌握J2EE技术的各项技能;3. 注重理论与实践相结合,提高学生的实际动手能力。

二、教学内容1. J2EE概述- 了解J2EE的历史背景、体系结构和开发模式;- 掌握J2EE的核心组件及其作用。

2. 开发环境搭建- 学习如何安装和配置JDK、Tomcat、Eclipse等开发工具;- 熟悉Eclipse集成开发环境,掌握基本操作。

3. Servlet编程- 掌握Servlet的生命周期、请求和响应处理;- 学会使用Servlet实现会话管理、文件上传下载等功能。

4. JSP技术- 学习JSP的基本语法、内置对象和标签库;- 掌握JSP与JavaBean、Servlet的交互方法。

性能优化提升Web应用程序性能的最佳实践

性能优化提升Web应用程序性能的最佳实践简介:Web应用程序的性能优化是提高用户体验和增加用户满意度的关键。

通过合理的性能优化策略,可以显著降低页面加载时间、提高请求响应速度和提升整体系统性能。

本文将介绍一些最佳实践,帮助开发者有效地提升Web应用程序的性能。

1. 压缩和缓存静态资源静态资源(如CSS、JavaScript和图片等)是Web应用程序中占据大部分加载时间的元素。

为了减少网络传输的开销,使用压缩算法对静态资源进行压缩可以显著降低文件大小,并且提高加载速度。

此外,使用浏览器缓存机制,可以使静态资源在用户再次访问时直接从本地缓存加载,减少了请求服务器的次数。

2. 减少HTTP请求每个HTTP请求都需要额外的时间和资源来进行处理和传输。

因此,减少HTTP请求的次数是提高Web应用性能的重要策略之一。

通过合并CSS和JavaScript文件、使用CSS Sprites技术将多个图片合并为一个大图,并使用懒加载技术等方式,可以减少HTTP请求次数,提高页面加载速度。

3. 优化数据库查询数据库是Web应用程序中常用的存储数据的方式,因此,优化数据库查询是提高性能的关键。

使用索引、优化查询语句、避免不必要的连接查询和减少数据返回量等方式,可以降低数据库的负载,提高查询速度。

4. 避免重定向重定向是指当用户访问一个URL时,服务器将用户重定向到另一个URL的过程。

虽然在某些情况下重定向是必要的,但过多的重定向会增加请求次数和延迟。

因此,尽量避免不必要的重定向,可以提高Web应用程序的性能。

5. 使用CDN加速内容分发网络(CDN)是一种将静态资源缓存到离用户最近的服务器上,以提高资源传输速度的技术。

使用CDN可以减少网络的延迟,加快静态资源的加载速度,从而提升Web应用程序的性能。

将静态资源托管到CDN上,并使用CDN链接来加载这些资源,可以有效地提高页面的加载速度。

6. 压缩和优化图片图片是Web应用中常见的资源,但过大的图片文件会增加页面的加载时间。

Web性能优化技巧提升网站加载速度与响应性

Web性能优化技巧提升网站加载速度与响应性随着互联网的普及和发展,网站已经成为人们获取信息和进行交流的重要工具之一。

然而,用户对网站的要求也越来越高,他们希望能够在最短的时间内加载完整的网页并获得良好的用户体验。

因此,改善网站的性能成为了开发人员急需解决的问题之一。

本文将介绍一些Web性能优化技巧,帮助您提升网站的加载速度和响应性。

一、压缩文件网站中的大多数资源,例如CSS、JavaScript和图片等,都可以进行压缩来减小文件大小。

压缩文件可以减少服务器与客户端之间传输的数据量,从而提高网站的加载速度。

可以使用各种压缩工具来压缩文件,例如Gzip和Minify等工具。

二、合并文件在网站开发中,通常会将CSS和JavaScript文件分开存放,这样有助于代码的维护和管理。

然而,过多的文件会增加页面的请求次数,导致加载时间延长。

因此,合并CSS和JavaScript文件可以有效减少请求次数,提升网站的加载速度。

三、使用缓存缓存是指将一些经常使用的文件存储在客户端或者服务器中,以便下次请求时可以直接获取,而无需重新加载。

使用缓存能够减少网络请求,提高网站的响应速度和加载速度。

可以通过设置合适的缓存策略,例如使用ETag、Expires和Cache-Control等头信息,来控制文件的缓存机制。

四、优化图片图片是网站中占据大量空间的资源之一,优化图片可以有效减小网页的大小,提高加载速度。

可以通过以下几种方式对图片进行优化:1. 图片压缩:使用专业的图片压缩工具,如PhotoShop或在线工具,压缩图片的文件大小,但同时保持图片的清晰度。

2. 使用合适的图片格式:不同的图片格式适用于不同的图片类型。

例如,使用JPEG格式的照片可以在保持较好质量的同时减小文件大小;而对于图标和简单的图形,使用PNG格式能够提供更好的清晰度。

3. 图片懒加载:将页面上的图片进行懒加载,即当图片进入用户的可视区域时再进行加载。

提高web服务器性能的方法

提高web服务器性能的方法
1、优化Web服务器配置:保持最新版本,控制web服务器资源的
使用,避免大并发时出现超负荷运行或死机;
2、实时监控服务器状态:实时监控服务器的CPU、内存、磁盘等资源
的使用情况,以及各种网络流量的状态,及时发现问题,以及及时处
理问题,可以让系统性能得到提升;
3、缩小HTTP头:将HTTP Header的大小减少,可以减少网络通信中
的浪费,这对于高负载服务器来说,是一个很大的改进;
4、优化网络数据交换:利用网络优化器可以使网络通信更加高效,减
少网络装不必要的数据传输;
5、降低DNS查询时间:使用较快的DNS服务器,提高DNS查询的速度,以减少访问某一网站的耗时;
6、使用缓存技术:使用缓存技术,如memcache、redis等,可以将经
常使用的静态内容缓存起来,从而减少服务器压力,从而提升服务器
性能。

7、优化数据库:在实际工作中,可以考虑根据实际情况,优化数据库
表结构,添加索引等,提升数据库查询性能;
8、代码优化:在Web应用开发过程中,有时候可能会出现比较拙劣的
代码,可以把这些代码进行重构,使其能够更好的实现特定的功能,
从而提高处理效率;
9、配置静态文件服务器:使用Nginx或Apache等静态文件服务器来
提供静态内容,可以有效改善性能;
10、采用CDN加速技术:使用CDN加速技术,可以把网站的热门资源
分发到各地的服务节点,大大提升网络用户的体验,从而提升网站的
综合性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章提高Web应用系统的响应性能(第2/3部分)1.1应用FreeMarker静态模板框架技术1.1.1FreeMarker静态模板框架技术概述1、FreeMarker是目前比较流行的静态模板框架FreeMarker是一种基于Java技术实现的静态模板框架,它允许表示层的开发人员通过使用简单而强大的模板语言来引用在Java程序代码中所定义的对象;FreeMarker也允许将Web应用的表示层设计和开发实现同应用系统的业务逻辑功能实现的代码相互分离;FreeMarker模板使用运行在Servet容器中的Servlet程序所提供的各种模型数据动态地生成HTML页面文件内容、并在浏览器中显示输出。

由于模板语言具有简单高效和编译处理速度快,并且其输出的速度接近于静态HTML 页面的速度。

因此,利用FreeMarker静态模板框架能够大大地提高页面显示的性能。

2、为什么要应用FreeMarker静态模板框架在Web应用系统的表示层开发实现中,不仅需要达到将表现逻辑与业务逻辑相分离的设计目标,也还希望能够获得较好的系统响应性能和较快的页面显示效果。

而常规的JSP 页面文件由于在第一次被请求加载时,需要被编译为*.class的类代码文件,所以会出现很明显的响应延迟现象。

而由于FreeMarker静态模板文件无需编译、并且FreeMarker与J2EE Servlet容器无关——因为它并不需要关联与Http或Servlet等有关的信息,因此在技术实现中能够达到将Web应用系统中的表现逻辑与业务逻辑相互分离的效果;另外,也能够分离Web应用系统中的表示层开发人员和业务处理层开发人员各自的工作职责——页面美工只需专注关心Web应用系统中的各个页面模板的设计和开发实现,而系统业务逻辑处理功能的Java程序员则也只需要专注于自身的业务逻辑的功能实现代码。

3、FreeMarker静态模板适合作为Web应用系统中的一个组件读者可以通过下图7.8所示的FreeMarker官方网站下载FreeMarker静态模板的系统包文件,下载完FreeMarker系统包文件后再进行解压缩该系统包文件,就能够获得FreeMarker 的系统JAR包freemarker-2.3.8.jar文件;最后再将freemarker-2.3.8.jar文件加入到Web应用系统的WEB-INF/lib目录中。

图7.8 FreeMarker官方网站信息的局部截图4、将FreeMarker静态模板集成到Eclipse开发工具中目前在网站中还提供有将FreeMarker静态模板集成到Eclipse开发工具中的Eclipse插件,读者可以根据下图7.9所示的Eclipse插件下载信息的网站截图下载该Eclipse插件。

这个插件可以帮助开发人员直接在Eclipse开发工具中编辑FreeMarker的模板文件,并提供有语法高亮显示、语法错误提示、大纲视图等有助于模板文件编辑的各种开发方面的功能支持。

图7.9 下载Eclipse开发工具中的Eclipse插件的局部截图当然,读者也可以直接在Eclipse开发工具中打开主菜单条中的【Help】菜单内的【Software updates】子菜单;然后再进一步选择下一级的【Find and install】菜单项目,并弹出一个对话框;在该对话框中选中单选项【Search for new features to install 】,并点击【New Remote Site】项目;最后可以输入“FreeMarker”作为名字以及输入更新的网站地址"/eclipse/update" 作为更新的网络地址——请见下图7.10所示,点击【Next】下一步按钮或【完成】按钮开始下载该插件、并自动地安装到Eclipse开发工具中,完成插件的安装。

图7.10 更新Eclipse开发工具的远程访问信息5、FreeMarker静态模板工作的基本原理基于FreeMarker静态模板的页面(*.ftl)在被请求处理时,首先由FreeMarker引擎程序将在由Java Servlet 等程序(*.java)所提供的各种模型数据组合在一起,共同构成最终的输出页面内容,最后向浏览器响应输出。

请求者在浏览器端最终看到的是标准的HTML 页面文件的内容。

FreeMarker静态模板工作的基本原理示图请见下图7.11中的图示。

图7.11 体现FreeMarker静态模板工作的基本原理截图6、FreeMarker静态模板中的数据模型在FreeMarker静态模板文件中可以使用Java程序中的Map集合、String字符串等类型的对象。

在FreeMarker静态模板框架中使用的数据模型其实是实现了freemarker.template.TemplateModel 接口的类对象,但开发人员也可以使用集合对象作为FreeMarker的数据模型对象、并包装系统中的自定义的类型的对象。

因为FreeMarker中使用的数据模型通常会被FreeMarker静态模板程序在内部自动地转换为TemplateModel 类型的对象——也就是对象包装功能(Object Wrapping)。

它可以透明地把任意类型的Java对象转化成TemplateModel 接口类型的对象实例。

1.1.2在基于标准Web技术的程序中应用FreeMarker模板1、在项目中添加与FreeMarker有关的系统JAR包文件在项目中首先需要添加与FreeMarker有关的系统JAR包文件到Web应用系统中的WEB-INF/lib目录中——请见下图7.12中所示的freemarker-2.3.8.jar文件。

2、在项目中添加一个JSP页面文件在项目的userManage目录下添加一个名称为fmtWebUserLogin.jsp的JSP页面文件。

该页面文件作为本示例的请求页面、并设计该页面的内容,请见【例7–1】所示的页面内容示例——在该页面中添加有一个实现登陆功能的表单,该表单向系统中的某个名称为fmtServletAction的Servlet组件发送请求——请见其中的黑体部分标识的代码。

【例7–1】包含有实现登陆功能表单的页面示例<%@ page language="java" pageEncoding="GB18030"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'fmtUserLogin.jsp' starting page</title></head><body><form action="/Struts2Web/fmtServletAction" method="post" >您的名称:<input type="text" name="userName" /> <br />您的密码:<input type="password" name="userPassWord" /> <br /><input type="submit" value="提交" name="submitButton"onclick="this.value='正在提交请求,请稍候'"/> <input type="reset" value="取消" /></form></body></html>2、在项目中添加一个响应用户登陆请求的Servlet组件在Web应用系统中使用FreeMarker静态模板时,应该要由Servlet组件将模板和数据相互合并。

因此在这样的Servlet组件中需要负责创建Configuration类的对象实例。

该Servlet 组件的最终的代码请见【例7–2】所示,并将其请求模式(URL-Pattern)设计为/fmtServletAction——与【例7–1】中的请求页面表单中的action属性所表示的请求地址保持一致。

【例7–2】响应用户登陆请求的Servlet组件的代码示例package com.px1987.struts2.servlet;import java.io.*;import java.util.*;import javax.servlet.ServletException;import javax.servlet.http.*;import freemarker.template.*;public class FMTServletAction extends HttpServlet {private Configuration oneConfiguration=null;public FMTServletAction() {super();} //在init方法中初始化FreeMarker的配置、并创建出一个Configuration类的对象实例public void init() throws ServletException {oneConfiguration = new Configuration();ServletContext servletContext=getServletContext();//设置FreeMarker的模版文件位置,第二个参数是模板文件的路径oneConfiguration.setServletContextForTemplateLoading(servletContext,"userManage"); }public void destroy() {super.destroy();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { String resultMessage=null;String userName=request.getParameter("userName");String userPassWord=request.getParameter("userPassWord");boolean returnResult=userName.equals("yang") &&userPassWord.equals("1234");if(returnResult){resultMessage =userName+"您登录成功!";}else{resultMessage =userName+"您的身份信息无效!";}Map oneHashMap = new HashMap();oneHashMap.put("showResultInfo", resultMessage);Template oneTemplate= //取得模版文件oneConfiguration.getTemplate("showInfoFMTTemplate.ftl");response.setContentType("text/html; charset=gb2312");Writer out = response.getWriter();try{ //结果必须输出到HttpServletResponse中,才能被浏览器加载oneTemplate.process(oneHashMap,out);}catch (TemplateException e){throw new ServletException("加载FreeMarker的模板文件时出现了错误", e);}}}在该Servlet的doPost方法中首先获得页面表单的请求参数(本示例为userName和userPassWord),然后再识别请求参数的正确性(本示例要求userName的取值为“yang”、并且userPassWord的取值为“1234”)——为了简化本示例的功能实现,没有通过查询数据库表中的数据来识别userName和userPassWord的请求输入是否正确,而是直接在代码中判断所输入的请求数据是否正确。

相关文档
最新文档