在web网站开发中,网页自动刷新的需求及功能已经屡见不鲜了,传统的用整体页面的刷新效果的实现对于网络速度受限的情况下显得就好些得不偿失了!
这里将介绍一种使用Ajax技术实现网页的局部刷新的功能,只更新局部数据,而非页面全部,详细的源代码请如下所示吧:
其中,本人使用mysql数据库,news表的表结构为:
size=large]
描述 名称 是否为空 是否主键
新闻编号 newsId Not Null P
新闻内容 newsName Not Null
备注 BZ Null [size]
首先:新建index.jsp如下:
<%@ page contentType="text/html; charset=gbk" language="java" %>
<html>
<HEAD><TITLE>用户登录页面</TITLE>
<script type="text/javascript">
var xmlHttp;
var id;
function trim(str)
{
var t = str.replace(/(^\s*)|(\s*$)/g, ""); // 用正则表达式将前后空格
return t.replace(/(^ *)|( *$)/g, ""); // 用空字符串替代。
}
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
function validate(){
createXMLHttpRequest();
var url="Del1.jsp";
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=callback;
xmlHttp.send(null);
}
function callback(){
if(xmlHttp.readyState==4){
show();
setTimeout("validate()",3600);
}
}
function show(){
var xmlDoc=xmlHttp.responseXML;
var yan=xmlDoc.getElementsByTagName("content");
var ta="";
for(var i=0;i<yan.length;i++){
var y=yan[i];
var name=y.childNodes[0].firstChild.data;
ta+="<tr><td WIDTH=100% height=20><table width=100% height=100% cellpadding=0 cellspacing=0 border=0><tr><td> "+name+"</td><td width=20% nowrap align=right></td></tr></table></td></tr>";
}
document.getElementById("res").innerHTML=ta;
}
function startmarquee(lh,speed,delay) {
validate();
var p=false;
var t;
var o=document.getElementById("res");
o.innerHTML+=o.innerHTML;
o.style.marginTop=0;
o.onmouseover=function(){p=true;}
o.onmouseout=function(){p=false;}
function start(){
t=setInterval(scrolling,speed);
if(!p) o.style.marginTop=parseInt(o.style.marginTop)-1+"px";
}
function scrolling(){
if(parseInt(o.style.marginTop)%lh!=0){
o.style.marginTop=parseInt(o.style.marginTop)-1+"px";
if(Math.abs(parseInt(o.style.marginTop))>=o.scrollHeight/2) o.style.marginTop=0;
}else{
clearInterval(t);
setTimeout(start,delay);
}
}
setTimeout(start,delay);
}
</script>
</head>
<BODY onLoad="startmarquee(90-18,40,0)">
<table height=44 cellSpacing=0 cellPadding=0 width=870 align=center bgColor=#ffffff border=0>
<tr>
<td vAlign=center align=middle>
<table height=33 cellSpacing=1 cellPadding=0 width=860 align=center border=0>
<tr>
<td vAlign=center >
<font color="red" >${loginmessage } </font><form name="logform" action="/login.do" method="post">
用户名:<Input style="FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #cc6600; FONT-FAMILY: Verdana; BACKGROUND-COLOR: #f9f9f9" tabIndex=1 size=13 name="username">
密码:<Input style="FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #cc6600; FONT-FAMILY: Verdana; BACKGROUND-COLOR: #f9f9f9" tabIndex=1 type=password size=13 value="" name="password">
<Input class="button2" type="submit" value=口令登录 name=B12 >
<Input class="button2" type="reset" value=重置 name=reset2 >
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div id="res"></div>
</BODY>
</html>
然后,新建Conn.jsp,用于每个页面调用:
<%@ page contentType="text/html; charset=utf-8" import="java.sql.*, javax.naming.Context, javax.naming.InitialContext"
errorPage=""%>
<%!Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public void jspInit() {
try {
//Class.forName("com.mysql.jdbc.Driver");
//建立连接
//conn = DriverManager.getConnection(
// "jdbc:mysql://localhost:3306/SKY5", "root", "123456");
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj = (Object) ctx.lookup("jdbc/javasky");
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource) obj;
conn = ds.getConnection();
stmt = conn.createStatement();
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
public void Exec(String sql) {
jspInit();
try {
stmt.executeUpdate(sql);
} catch (Exception e) {
System.out.print(e.toString());
}
}
public ResultSet getRs(String sql) throws SQLException {
jspInit();
try {
rs = stmt.executeQuery(sql);
return rs;
} catch (Exception e) {
System.out.print(e);
return null;
}
}
public ResultSet executeQuery(String sql) throws Exception {
jspInit();
try {
sql = new String(sql.getBytes("GBK"), "ISO8859_1");
stmt = conn.createStatement(
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.out.println("sql.executeQuery:" + ex.getMessage());
}
return rs;
}
public String getS(String Str) {
try {
byte b[] = Str.getBytes("ISO-8859-1");
Str = new String(b, "UTF-8");
} catch (Exception ee) {
ee.printStackTrace();
}
return Str;
}%>
其次,新建Del1.jsp如下:
<%@ page contentType="text/html; charset=utf-8" import="java.sql.*,java.util.*" errorPage="" %>
<%@ include file="Conn.jsp" %>
<%
try{
ResultSet rs=getRs("select * from news order by newsId desc");
StringBuffer content=new StringBuffer("");
response.setContentType("text/xml");
response.setHeader("Cache-Control","no-cache");
content.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
content.append("<contents>");
while(rs.next()){
String newsName=rs.getString("newsName");
content.append("<content>");
content.append("<name>"+ newsName +"</name>");
content.append("</content>");
}
content.append("</contents>");
out.print(content);
}
catch(Exception e){
e.printStackTrace();
}
%>
最后在web.xml配置文件中加入如下内容:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
这样就完成了自动刷新页面的功能,当访问index.jsp首页时,将自动显示news表中所有newsName的数据,当该数据表中新增数据时,首页面将自动将之显示给用户,这样也为用户提供了方便,不用再刷新整个页面!
分享到:
相关推荐
下面,我们将通过一个具体的例子,即使用Ajax与JSP从MySQL数据库中提取数据并实现自动刷新的页面,来详细说明实现步骤: #### 步骤一:设置数据库 首先,我们需要一个MySQL数据库,其中包含一个名为`news`的表,该...
这是一个基于JavaWeb技术实现的电子相册系统,它利用了Ajax、JSP、Servlet等核心技术,结合数据库存储用户上传的照片和相关信息,为用户提供一个在线查看、管理个人照片的平台。以下将详细介绍这些关键技术及其在...
Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它允许前端与后台服务器进行异步通信,提高了用户体验,使得用户在等待数据加载时仍可以操作页面其他部分。 ...
首先,Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术。在这个功能中,Ajax负责在用户输入时异步地向服务器发送请求,获取匹配的下拉提示数据,而...
- AJAX(Asynchronous JavaScript and XML):一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术,使得数据的获取和页面的更新更为平滑、快速。 - HTML/CSS/JavaScript基础:构建网页的基本技术,...
同时,考虑到用户体验,还需要进行前端优化,如使用AJAX实现异步提交,减少页面刷新。 总的来说,"JAVAWEB+Mysql数据库实现注册登录数据库"是一个涵盖后端编程、数据库设计、前端交互和安全策略等多个方面的综合...
本项目“ajax+servlet登陆”着重探讨如何利用这两种技术实现一个无需刷新整个页面即可完成用户登录验证的功能,提高用户体验。 首先,我们需要理解Ajax的核心概念。Ajax并非一种单一的技术,而是一种使用JavaScript...
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出以下IT知识点,主要聚焦于JSP(Java Server Pages)技术与数据库连接、Ajax异步请求等方面。 ### JSP技术概览 JSP是一种服务器端脚本语言,用于创建...
在IT行业中,Ajax(Asynchronous JavaScript and XML)技术是一种用于创建动态、交互性强的Web应用程序的方法,它使得页面无需刷新就能与服务器交换数据并局部更新。在这个“ajaxjsp登陆的例子”中,我们主要探讨...
AJAX技术可以用来实现实时刷新,无需每次发送消息都刷新整个页面。同时,数据库用于存储聊天历史,通常选择关系型数据库如MySQL或Oracle,以保证数据的持久化。 2. **网上论坛**: 论坛系统涉及到用户注册、登录、...
Ajax技术允许网页在不重新加载整个页面的情况下,从服务器请求并更新部分网页内容,从而提升了用户体验。而Servlet作为Java Web开发的核心组件之一,负责处理来自客户端的请求,并生成相应的响应。 #### 一、Ajax与...
4. **搜索与分类**:博客系统通常包含文章搜索和分类浏览功能,这需要Servlet处理查询请求,从数据库中提取相关数据,并通过JSP展示结果。 5. **个人主页**:每个用户有自己的个人主页,展示他们的文章和收到的评论...
这里我们探讨的是一个基于JSP的文件上传示例,以及如何通过AJAX技术实现实时刷新,从数据库获取并返回JSON数据到前端页面。 首先,文件上传是Web应用中常见的一种用户交互方式,允许用户将本地的文件(例如图片)...
同时,系统可能还采用了AJAX(异步JavaScript和XML)技术,以提高用户体验,实现页面的无刷新更新。 论文的撰写注重理论与实践的结合,详细解释了相关技术和设计理念,并结合实际操作进行说明。这不仅有助于读者...
在这个“jsp关于分页显示的案例”中,我们将探讨如何使用Java的JSP(JavaServer Pages)、Servlet以及AJAX(Asynchronous JavaScript and XML)技术来实现这一功能,并与MySQL数据库进行交互。 首先,我们需要理解...
1. AJAX技术:AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。使用AJAX技术可以提高用户界面的交互性、速度、效率和可用性。 2. 数据库验证:本文讲述了...
在实际开发中,为了提高性能和用户体验,通常会采用Ajax(Asynchronous JavaScript and XML)技术,使页面无需刷新即可获取新的地址数据。JavaScript可以使用XMLHttpRequest或更现代的fetch API发送异步请求到服务器...
项目中的"jsp-ajax的三级联动(省市区mysql数据库表)_1612557016"很可能是一个包含了源码和数据库脚本的压缩文件,它可以帮助开发者理解并实现类似的三级联动功能。通过解压并运行这些文件,你可以看到实际的运行效果...
Ajax(异步JavaScript和XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。Ajax的核心是利用JavaScript来创建XMLHttpRequest对象,该...
AJAX(Asynchronous JavaScript and XML)技术则是Web开发中的一个重要工具,它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。当我们谈论"Java编程字典AJAX聊天"时,这意味着我们将探讨...