引言
布局和空间控制是 JSP 中的关键方面,它决定了最终呈现的网页的外观和感觉。通过掌握这些技巧,可以创建美观且用户友好的网页,从而提升用户体验。
布局技术
1. 内容面板(Panel)
内容面板是一种占页面大部分区域的容器组件,用于容纳主要内容。它可以垂直或水平排列,并可以通过 `jsp:useBean` 或 `jsp:setProperty` 设置属性。
2. 布局标签库
布局标签库提供了用于创建复杂布局的预定义标签。这些标签库通常由第三方提供,可用于实现诸如栅格和流布局之类的布局。
3. HTML5 布局元素
HTML5 引入了新的布局元素,例如 `
提高JSP应用程序的几个方法
本文讲述了调整JSP和servlet的一些非常实用的方法 它可使你的servlet和JSP页面响应更快 扩展性更强 而且在用户数增加的情况下 系统负载会呈现出平滑上长的趋势 在本文中 我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升 其中 某些调优技术是在你的编程工作中实现的 而另一些技术是与应用服务器的配置相关的 在本文中 我们将详细地描述怎样通过调整 servlet和JSP页面 来提高你的应用程序的总体性能 在阅读本文之前 假设你有基本的servlet和JSP的知识 方法 在servlet的init()方法中缓存数据当应用服务器初始化servlet实例之后 为客户端请求提供服务之前 它会调用这个servlet的init()方法 在一个servlet的生命周期中 init()方法只会被调用一次 通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的 耗时的操作 就可大大地提高系统性能 例如 通过在init()方法中建立一个JDBC连接池是一个最佳例子 假设我们是用jdbc 的DataSource接口来取得数据库连接 在通常的情况下 我们需要通过JNDI来取得具体的数据源 我们可以想象在一个具体的应用中 如果每次SQL请求都要执行一次JNDI查询的话 那系统性能将会急剧下降 解决方法是如下代码 它通过缓存DataSource 使得下一次SQL调用时仍然可以继续利用它
public class ControllerServlet extends HttpServlet{ private javax sql DataSource testDS = null;public void init(ServletConfig config) throws ServletException {super init(config); Context ctx = null;try{ctx = new InitialContext(); testDS = (javax sql DataSource)ctx lookup( jdbc/testDS );}catch(NamingException ne){ ne printStackTrace(); }catch(Exception e){ e printStackTrace();} } public javax sql DataSource getTestDS() {return testDS; }}
方法 :禁止servlet和JSP 自动重载(auto reloading)Servlet/JSP提供了一个实用的技术 即自动重载技术 它为开发人员提供了一个好的开发环境 当你改变servlet和JSP页面后而不必重启应用服务器 然而 这种技术在产品运行阶段对系统的资源是一个极大的损耗 因为它会给JSP引擎的类装载器(classloader)带来极大的负担 因此关闭自动重载功能对系统性能的提升是一个极大的帮助 ( lian )方法 : 不要滥用HttpSession 在很多应用中 我们的程序需要保持客户端的状态 以便页面之间可以相互联系 但不幸的是由于HTTP具有天生无状态性 从而无法保存客户端的状态 因此一般的应用服务器都提供了session来保存客户的状态 在JSP应用服务器中 是通过HttpSession对像来实现session的功能的 但在方便的同时 它也给系统带来了不小的负担 因为每当你获得或更新session时 系统者要对它进行费时的序列化操作 你可以通过对 HttpSession的以下几种处理方式来提升系统的性能如果没有必要 就应该关闭JSP页面中对HttpSession的缺省设置 如果你没有明确指定的话 每个JSP页面都会缺省地创建一个HttpSession 如果你的JSP中不需要使用session的话 那可以通过如下的JSP页面指示符来禁止它
<%@ page session= false %>
不要在HttpSession中存放大的数据对像 如果你在HttpSession中存放大的数据对像的话 每当对它进行读写时 应用服务器都将对其进行序列化 从而增加了系统的额外负担 你在HttpSession中存放的数据对像越大 那系统的性能就下降得越快 当你不需要HttpSession时 尽快地释放它 当你不再需要session时 你可以通过调用HttpSession invalidate()方法来释放它 尽量将session的超时时间设得短一点 在JSP应用服务器中 有一个缺省的session的超时时间 当客户在这个时间之后没有进行任何操作的话 系统会将相关的session自动从内存中释放 超时时间设得越大 系统的性能就会越低 因此最好的方法就是尽量使得它的值保持在一个较低的水平
方法 : 将页面输出进行压缩压缩是解决数据冗余的一个好的方法 特别是在网络带宽不够发达的今天 有的浏览器支持gzip(GNU zip)进行来对HTML文件进行压缩 这种方法可以戏剧性地减少HTML文件的下载时间 因此 如果你将servlet或JSP页面生成的HTML页面进行压缩的话 那用户就会觉得页面浏览速度会非常快 但不幸的是 不是所有的浏览器都支持gzip压缩 但你可以通过在你的程序中检查客户的浏览器是否支持它 下面就是关于这种方法实现的一个代码片段
public void doGet(HttpServletRequest request HttpServletResponse response)throws IOException ServletException { OutputStream out = null String encoding = request getHeader( Accept Encoding );if (encoding != null && encoding indexOf( gzip ) != ) {request setHeader( Content Encoding gzip );out = new GZIPOutputStream(request getOutputStream()); } else if (encoding != null && encoding indexOf( press ) != ) {request setHeader( Content Encoding press );out = new ZIPOutputStream(request getOutputStream()); }else {out = request getOutputStream(); }}
方法 : 使用线程池应用服务器缺省地为每个不同的客户端请求创建一个线程进行处理 并为它们分派service()方法 当service()方法调用完成后 与之相应的线程也随之撤消 由于创建和撤消线程会耗费一定的系统资源 这种缺省模式降低了系统的性能 但所幸的是我们可以通过创建一个线程池来改变这种状况 另外 我们还要为这个线程池设置一个最小线程数和一个最大线程数 在应用服务器启动时 它会创建数量等于最小线程数的一个线程池 当客户有请求时 相应地从池从取出一个线程来进行处理 当处理完成后 再将线程重新放入到池中 如果池中的线程不够地话 系统会自动地增加池中线程的数量 但总量不能超过最大线程数 通过使用线程池 当客户端请求急剧增加时 系统的负载就会呈现的平滑的上升曲线 从而提高的系统的可伸缩性 方法 : 选择正确的页面包含机制在JSP中有两种方法可以用来包含另一个页面 使用include指示符(<%@ includee file= test jsp %>) 使用jsp指示符(<jsp:includee page= test jsp flush= true />) 在实际中我发现 如果使用第一种方法的话 可以使得系统性能更高 方法 :正确地确定javabean的生命周期JSP的一个强大的地方就是对javabean的支持 通过在JSP页面中使用<jsp:useBean>标签 可以将javabean直接插入到一个JSP页面中 它的使用方法如下
<jsp:useBean id= name scope= page|request|session|application class= package className type= typeName ></jsp:useBean> lishixinzhi/Article/program/Java/JSP//
JSP技术有什么特征?
1.2JSP技术特征\x0d\x0a\x0d\x0aJSP技术所开发的Web应用程序是基于Java的,它拥有Java语言跨平台的特性,以及业务代码分离、组件重用、基础Java Servlet功能和预编译等特征。
\x0d\x0a\x0d\x0a1.2.1跨平台\x0d\x0a\x0d\x0a既然JSP是基于Java语言的,那么它就可以使用Java API,所以它也是跨平台的,可以应用在不同的系统中,如Windows、Linux、Mac和Solaris等。
这同时也拓宽了JSP可以使用的Web服务器的范围。
另外,应用于不同操作系统的数据库也可以为JSP服务,JSP使用JDBC技术操作数据库,从而避免了代码移植导致更换数据库时的代码修改问题。
\x0d\x0a\x0d\x0a正是因为跨平台的特性,使得采用JSP技术开发的项目可以不加修改地应用到任何不同的平台上,这也应验了Java语言的一次编写,到处运行的特点。
\x0d\x0a\x0d\x0a1.2.2业务代码分离\x0d\x0a\x0d\x0a采用JSP技术开发的项目,通常使用HTML语言来设计和格式化静态页面的内容,而使用JSP标签和Java代码片段来实现动态部分。
程序开发人员可以将业务处理代码全部放到JavaBean中,或者把业务处理代码交给Servlet、Struts等其他业务控制层来处理,从而实现业务代码从视图层分离。
这样JSP页面只负责显示数据即可,当需要修改业务代码时,不会影响JSP页面的代码。
\x0d\x0a\x0d\x0a1.2.3组件重用\x0d\x0a\x0d\x0aJSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者作为一个数据存储模型,在JSP页面甚至整个项目中都可以重复使用这个JavaBean。
JavaBean也可以应用到其他Java应用程序中,包括桌面应用程序。
\x0d\x0a\x0d\x0a1.2.4继承Java Servlet功能\x0d\x0a\x0d\x0aServlet是JSP出现之前的主要Java Web处理技术。
它接受用户请求,在Servlet类中编写所有Java和HTML代码,然后通过输出流把结果页面返回给浏览器。
其缺点是:在类中编写HTML代码非常不便,也不利于阅读。
使用JSP技术之后,开发Web应用便变得相对简单快捷多了,并且JSP最终要编译成Servlet才能处理用户请求,因此我们说JSP拥有Servlet的所有功能和特性。
\x0d\x0a\x0d\x0a1.2.5预编译\x0d\x0a\x0d\x0a预编译就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。
编译好的代码将被保存,在用户下一次访问时,直接执行编译好的代码。
这样不仅节约了服务器的CPU资源,还大大提升了客户端的访问速度。
jsp是什么 初探jsp技术?
JSP(Java Server Pages)是一种用于开发动态Web应用程序的Java技术。
简而言之,JSP技术允许开发人员在HTML页面中嵌入Java代码,以实现动态生成内容的功能。
1. 基本语法:了解JSP的基本语法和标签,比如<% %>用于嵌入Java代码,<%= %>用于输出Java表达式的结果,<%@ %>用于导入包或引用标签库等。
2. Servlet与JSP:理解JSP底层是以Servlet形式运行的,了解JSP与Servlet之间的关系,以及如何在JSP中调用Servlet。
3. 表单处理:学习如何使用JSP处理表单数据,包括接收用户输入、验证数据、进行数据库操作等。
4. JSP内置对象:熟悉JSP提供的内置对象(比如request、response、session等),以及它们的作用和用法。
5. JSP标签库:了解JSP标签库的概念和用法,如何使用标签库来简化和增强JSP页面的开发。
6. JSP与前端技术:掌握如何在JSP中使用HTML、CSS和JavaScript等前端技术,以便实现丰富的用户界面和交互效果。
通过初探JSP技术,你可以开始了解和使用JSP来构建动态Web应用程序,并且可以进一步深入学习和应用更多高级的JSP开发技巧和技术。