在 Internet众多网站中,基于Web数据库的动态网站应用相当广泛。基于Web网络数据库的动态网站由一个Web浏览器作为客户端界面,一个数据库服务器用做信息存储和一个连接两者的 Web应用服务器组成。原有开发动态网站的CGI技术,随着Web应用程序的客户端技术不断地发展,逐渐被Java Applet、ActiveX控件、DHTML和JavaScript所取代。这些技术极大地改善了用户界面,但当它们尝试做一些深入的工作时,开始遇到客户端浏览器不兼容、服务器负担过重、访问速度下降以及安全性等问题。JSP技术就是解决这些问题的一把金钥匙,本文主要讨论在使用JSP技术构建动态网站的过程中的一些技术问题。
JSP技术
JSP是基于Java Servlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网站。在传统的网页HTML文件中加入Java程序片段和JSP标记,就构成了JSP网页。Web服务器接收到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 E-mail 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求很低。如图1所示,在用户连接JSP网站时,用户请求网页,JSP页面独自响应请求,将用户对网页的请求转化为对数据的请求,通过JavaBean处理请求并将返回的数据封装成HTML页面返回给用户。
JSP有许多优势:
1. 程序写一次,到处可以运行。JSP在设计时,充分考虑到应用平台的无关性。依赖于Java的可移植性,JSP得到目前许多流行操作平台的支持,可在Apache、NetScape、IIS等服务器上执行。
2. 执行速度快。JSP页面只需编译一次转化为Java字节代码,其后一直驻留于服务器内存中,加快了对JSP页面的响应速度。若不考虑JSP页面第一次编译所花的时间,则JSP的响应速度要比ASP快得多。
3. Java的优势。JSP技术是用Java语言作为脚本语言的。跨平台、成熟、健壮、易扩充的Java技术使得开发人员的工作在其他方面也变得容易和简单。在Windows系统被怀疑可能会崩溃时,Java能有效地防止系统崩溃。Java语言通过提供防止内存泄漏的方法,在内存管理方面大显身手。加之,JSP为应用程序提供了更为健壮的意外事件处理机制,充分发挥了Java的优势。
JSP技术难点
1. 连接数据库
数据库连接对动态网站来说是最为重要的部分,在与后端数据库连接时可以采用ODBC或JDBC技术。虽然ODBC作为传统的连接数据库的手段是一种选择,但是ODBC有以下致命缺陷,从而使它无法胜任JSP的请求:
(1) ODBC是C语言实现的API,从Java程序调用本地的C程序会带来一系列类似安全性、完整性、健壮性方面的问题。
(2) 其次,完全精确地实现从C代码ODBC到Java API 翻译的ODBC不会令人满意,因为在Java中没有指针,而ODBC中大量地使用了指针,包括极易出错的空指针“void *”。
(3) 考虑到平台移植性,在开发JSP程序中使用ODBC会带来负面影响,使得代码不适合于移植。
为了使程序在具有安全性、完整性、健壮性的同时, 可以方便地移植,采用JDBC连接数据库更合适一些。JDBC是一种可用于执行SQL语句的Java API,它由一些Java语言写的类、界面组成,使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC,可以很方便地将SQL语句传送到几乎任何一种数据库。也就是说,可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQL Server。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统。
在本地数据库程序使用Microsoft的Access等数据库时,可以使用Sun公司开发的JDBC-ODBC桥,借用此技术JSP程序就可以访问带有ODBC驱动程序的数据库。这样既保留JDBC的优点,又可以使用Microsoft提供的ODBC数据源与Access连接。不管对方是何种数据库,只要有ODBC接口就可以直接使用JDBC-ODBC桥与数据库连接,而无需因为后端数据库的改变而改动相应的程序代码,实现了应用层与数据库层的完美分离。如果需要变后端数据库为MySQL,只需在ODBC数据源中安装MySQL的驱动程序之后,就可以直接使用MySQL数据库了。
2. 内建的组件
在实现网站的时候,由于客观需要,为了方便区分本地局域网用户与远端连上来的用户,并提供相应的权限,可以采用内建的组件Request来捕获每一个连到服务器上的用户的IP地址,通过比较之后给出相应的权限。这样做到本局域网内用户可以使用网站内所有公开的和不对外公开的资源。还可以将现有的方法加以改进,将各种IP地址输入到数据库中并且赋予不同的IP地址不同的权限,以完整地控制用户使用网站资源。
会话状态维持是Web应用开发者必须面对的问题。为了了解用户是否还在线,使用内建的Session组件,通过给每个登录用户一个Session变量,可以在用户非正常离开网站之后,关闭该用户使用的资源,达到节省内存,提高服务器性能的目的。
在JSP中还提供了Cookie类,其构造器有两个参数,分别代表Cookie的名称和值。Cookie类中提供了各种方法设置Cookie的属性,如通过setMaxAge方法可以设置Cookie的生存时间。若生存时间为负值,代表浏览器关闭Cookie,即消失; 生存时间为0,代表删除Cookie; 生存时间为正数,代表Cookie存在多少秒。可以用Cookie临时保存用户的账号和口令,JSP可随时读取,验证用户的合法性。可以将用户的浏览状态保存在Cookie中,下次用户再访问网页时,由JSP向浏览器显示个性化页面。
3. 转换Unicode编码
在许多JSP页面的调试过程中都碰到过由于汉字编码与Unicode编码转换引起的问题,如在浏览器中看到的JSP页面中的汉字都是乱码、JSP页面无法正常显示汉字、JSP不能接收表单提交的汉字、JSP数据库读写无法获得正确的内容等等,这是因为现在大部分具有国际化特征的软件核心字符处理都是以Unicode为基础的,在软件运行时根据当时“Locale/Lang/Codepage”设置确定相应的本地字符编码设置,并依此处理本地字符,所以应该在处理过程中实现Unicode和本地字符集的相互转换,甚至以Unicode为中介的两个不同本地字符集的相互转换。这种方式在网络环境下被进一步延伸,任何网络两端的字符信息也需要根据字符集的设置转换成可接受的内容。
由于IE默认字符集为GB2312,然而Windows默认为GBK,Java则默认为Unicode,所以如果不通过一定的转换,直接在GB2312字符集上显示从GBK或Unicode得到的页面将是一片乱码。Java 语言采用Unicode处理字符,但从另一个角度来说,在Java程序中也可以采用非Unicode,重要的是保证程序入口和出口的汉字信息不失真。如完全采用ISO-8859-1来处理汉字也能达到正确的结果,经过转换之后并将网页字符集强制设为GB2312字符集显示,就能够正常显示汉字了。
分享到:
相关推荐
**JSP实践要点详解** JavaServer Pages(JSP)是一种基于Java技术的动态网页开发工具,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现动态网页的创建。本篇文章将深入探讨JSP实践中的关键知识点,帮助开发者...
通过上述知识点的介绍,我们可以看出《JSP与Servlet程序设计实践教程》主要围绕着JSP和Servlet这两种核心技术展开,不仅覆盖了基本概念和技术要点,还深入探讨了它们在实际项目中的应用技巧及注意事项。这对于学习...
JSP 实践教学平台系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为 Mysql5.0,数据库文件名是jspskcsjpt.sql,...
**正文** JSP(JavaServer Pages)是一种动态网页技术,由Sun ...通过学习和实践JSP博客源码,开发者可以深入理解JSP的原理,同时掌握Web开发中的许多关键概念和技术,为构建更复杂的Web应用程序打下基础。
3. **安全性**:注意JSP中的安全问题,如SQL注入、跨站脚本攻击等,采取适当的安全措施。 4. **性能优化**:合理使用缓存、减少不必要的数据库查询,优化JSP页面的加载速度。 5. **可扩展性**:设计时考虑系统的可...
8. **性能优化**:如何减少不必要的JSP渲染,利用缓存,避免在JSP中进行大量计算,以及使用高效的数据库查询等策略。 9. **部署和配置**:在不同的服务器环境中配置JSP应用,包括web.xml文件的编写,服务器的设置等...
最后,要注意防止SQL注入攻击,对用户输入进行过滤或转义。还可以考虑使用预编译的SQL语句(PreparedStatement),这不仅可以提高性能,还能有效避免SQL注入。 通过以上步骤,你可以构建一个基本的JSP留言板系统。...
在开发过程中,要注意配置Web应用的部署描述符(web.xml),定义Servlet映射,以及设置JSP的编译和错误处理。 对于初学者来说,理解JSP的工作原理和生命周期是至关重要的。JSP的生命周期包括加载、初始化、服务、...
首先,要实现在线预览,我们需要理解JSP的基础工作原理。JSP是由Java代码和HTML组成的,当用户请求一个JSP页面时,服务器会将JSP转化为Servlet,然后执行Java代码,生成HTML响应,最后将HTML发送回客户端浏览器进行...
JSP页面可以包含表单元素让用户选择要上传的文件,而Servlet接收这些请求,处理文件并返回响应。为了使代码更简洁和可维护,可以将文件操作封装到单独的服务层或者DAO中。 在项目的`upload`子目录中,可能包含了...
但要注意管理好session的有效期,避免过多的会话占用服务器资源。 8. **异常处理** - 实现全局异常处理器,捕获并适当地处理JSP页面可能抛出的异常,提供统一的错误页面,同时记录日志以便调试。 9. **代码复用**...
" 这个标题揭示了我们要讨论的是一个基于JSP(JavaServer Pages)技术开发的趣味应用,它的主要功能是让用户进行数字猜测游戏。JSP是一种动态网页开发技术,允许开发者在HTML、XML或其他标记语言中嵌入Java代码,以...
此外,为了保持良好的编程实践,通常会将业务逻辑和视图分离,这可以通过使用Servlet或控制器类来实现,而JSP仅用于渲染视图。 总的来说,`jsp:forward`在JSP中提供了一种方便的页面跳转方式,特别适用于需要在...
本项目旨在展示如何使用纯JSP构建一个简单的购物网站,为初学者提供实践平台。 在JSP中,我们通常结合HTML、CSS和JavaScript来处理用户界面,同时利用JSP内置对象(如request、response、session和application)...
在JSP中嵌入FLV视频播放器:深入解析与实践 标题:“在jsp中嵌入flv视频播放器” 描述:“在jsp中嵌入FLV视频播放器,可以模拟视频播放网站。” 本文将深入探讨如何在JSP(JavaServer Pages)页面中嵌入FLV格式的...
但也要注意避免过度使用,防止会话劫持和会话固定攻击。 9. **异常处理**:JSP支持异常处理,可以使用`errorpage`指令定义错误页面,或者在JSP中捕获并处理异常,保证程序的健壮性。 10. **国际化与本地化**:JSP...
4. **优化性能**:合理使用缓存,避免不必要的数据库查询,使用高效的JSP指令。 5. **遵循Java EE规范**:确保代码符合Java Servlet和JSP规范,以便于部署和扩展。 通过深入学习和实践,你将能够熟练掌握JSP,创建...
综上所述,JSP登录界面的实现涉及HTML、JSP、JDBC以及一些基础的安全实践。它为用户提供了验证身份的入口,是构建Web应用的基础模块。了解和掌握这些知识对于任何想要从事Web开发的IT专业人员来说都是必要的。
在实际操作中,使用JSP探针应遵循最佳实践: 1. **限制访问**:将探针页面置于受保护的区域,仅允许内部网络或特定用户访问。 2. **日志记录**:记录探针的使用,以便跟踪和审计。 3. **安全编码**:编写探针时,应...
**JSP(Java Server Pages)** 是一...这些是JSP技术的核心概念和实践要点,对于进行JSP毕业设计或者任何Web应用开发都是非常重要的基础。了解和掌握这些知识点,可以帮助开发者创建高效、安全、可扩展的JSP应用程序。