`

使用JSP模板文件加载页面数据

    博客分类:
  • JSP
阅读更多

进行页面展示时,通过有两种方式:

一种为传统的action,从action中查找数据再传到JSP页面上用JSTL进行展示;

第二种使用ajax从action中获取数据,再到页面上用JS拼接HTML或者在后台拼接完成了通过ajax返回到前台。

两种方法的缺点都比较明显:

第一种不适合于局部刷新,更也不适合于频繁刷新,也就是ajax的优点。

第二种可以局部刷新,但是需要拼接HTML,无论在后台还是在js中拼接HTML都比较麻烦。

 

所以呢,可以将以上两行方法结合起来使用:

直接调转到页面,通过ajax加载数据,将action中返回的数据传递到另一个模板JSP文件中进行加载,加载完成的数据会自动返回到ajax的回调函数中。

 

1、展示页面(index.jsp):也就是直接请求的页面,在这个页面上显示数据。页面结构很简单,就一个div用来包装数据。

<body style="overflow:auto;">
	<h2>使用JSP模板文件加载页面数据</h2>
	<div id="tableDiv"></div>
</body>

 然后添加一个ajax方式用来请求数据:

$(function(){
	$.ajax({
		type:"post",
		async:false, 
		data:{"time":new Date().getTime()},
		dataType:"html",
		url:"tools!loadData.action",
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			 //alert(XMLHttpRequest.status);
			 //alert(XMLHttpRequest.readyState);
			 //alert(textStatus);
			 alert("加载错误,错误原因:\n"+errorThrown);
		},
		success:function(data){
			//alert(data);
			var data2 = data.toString();
			if((data2+"").indexOf("fail")>-1){//说明是错误信息
				data2 = data2.replace("fail","");
			}else{
				$("#tableDiv").html(data);
			}
		}
   });
});

 这里有个注意点:就是ajax的dataType类型必须为html,写成text或者json或者xml都会报错。

 

2、模板页面(template.jsp):数据加载的页面,加载完成后将数据返回到index.jsp。页面结构可以随便定义。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table cellspacing="0" cellpadding="0" border="0" width="100%" align="center" id="infoTable">
	<tr class="firstTr">
		<td>序号</td>
		<td>内容1</td>
		<td>内容2</td>
		<td>内容3</td>
		<td>内容4</td>
	</tr>    
    <c:forEach items="${table1List }" var="table1" varStatus="order">
    	<tr>
    		<td>${order.index+1}</td>
    		<td>${table1.field1 }</td>
    		<td>${table1.field2 }</td>
    		<td>${table1.field3 }</td>
    		<td>${table1.field4 }</td>
    	</tr>
    </c:forEach>
</table>

注意点: 页面中除了添加需要的page、tablib等指令,其他的都不要添加,连HTML的基本标签如html、body等都不需要添加了,要是添加了就等于在index.jsp的tableDiv中添加了一个信息页面。

 

3、action主要代码:

List<Table1> table1List = t1dao.findAll();
if(table1List!=null && table1List.size()>0){
	request.setAttribute("table1List", table1List);
	request.getRequestDispatcher("/template.jsp").forward(request, response);
}

关键代码是这句: request.getRequestDispatcher("/template.jsp").forward(request, response);

这句大家都很熟悉,就是页面跳转,没错就是让跳转到模板jsp页面中让它加载数据。

当然对于ajax,大家都知道一定会有一句response.getWriter().write(result);用来告知结果。在这种跳转的情况下result中的值也会被带到页面上,但是回调函数success方法返回的结果中却没有它。通过firebug的网络模式看到的“响应”结果却只有这个result还没有页面数据,这究竟是为啥我就不琢磨了。

 

至此,使用jsp模板文件加载数据的流程就完成了。用过之后会觉得ajax原来还有这么个怪脾气,JSP原来这么强大的!

分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    前端HTML模板解析引擎domTemplate.js.zip

    美工设计好静态HTML文件,交给后端工程师,需要转换成Jsp、Freemarker、Velocity等动态模板文件。这种模式有几个缺点 1、动态模板文件不能被浏览器解释、必须要运行在服务器中才能显示出效果 2、动态效果和静态...

    FreeMarker模板引擎-其他

    插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等 你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器 2、强大的模板语言 所有常用的指令:include、if/...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    Spring.3.x企业应用开发实战(完整版).part2

    2.5.3 JSP视图页面 2.6 运行Web应用 2.7 小结 第2篇 IoC和AOP 第3章 IoC容器概述 3.1 IoC概述 3.1.1 通过实例理解IoC的概念 3.1.2 IoC的类型 3.1.3 通过容器完成依赖关系的注入 3.2 相关Java基础知识 3.2.1 简单...

    Spring3.x企业应用开发实战(完整版) part1

    2.5.3 JSP视图页面 2.6 运行Web应用 2.7 小结 第2篇 IoC和AOP 第3章 IoC容器概述 3.1 IoC概述 3.1.1 通过实例理解IoC的概念 3.1.2 IoC的类型 3.1.3 通过容器完成依赖关系的注入 3.2 相关Java基础知识 3.2.1 简单...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    赣极建站系统 v2.0.rar

    3、生成真实html页面显示数据,html页面也可以动态加载系统数据显示调用或交互,纯html页面实现与后台数据库中的数据交互功能,可以按照所需,在html页面中显示特定分类或模块的内容,或检索出需要的数据。...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    1、将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计页面显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网页上的动态内容; 2、能够跨平台:JSP支持绝大部分平台,包括现在...

    WSTMall 开源多用户O2O商城V1.1.0_150707

    高质量的模板引擎:WSTMall 1.0基于XML的编译型模板引擎,支持两种类型的模板标签,融合了Smarty和JSP标签库的思想,支持标签库扩展。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 ...15.6.4 使用Tiles控制器准备网页内容 331 15.7 小结 332

    Spring Boot中文文档.rar

    使用触发器文件 20.2.6.自定义重新启动类加载器 20.2.7.已知限制 20.3.LiveReload 20.4.全局设置 20.5.远程应用 20.5.1.运行远程客户端应用程序 20.5.2.远程更新 21.包装您的生产应用程序 ...

    springboot参考指南

    使用一个高级别的数据迁移工具 i. 68.5.1. 启动时执行Flyway数据库迁移 ii. 68.5.2. 启动时执行Liquibase数据库迁移 viii. 69. 批处理应用 i. 69.1. 在启动时执行Spring Batch作业 ix. 70. 执行器(Actuator) i. ...

Global site tag (gtag.js) - Google Analytics