`
_Yggd
  • 浏览: 89208 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于ajax 调用数据库局部更新页面数据

    博客分类:
  • ajax
阅读更多
首先前端页面的触发事件引发ajax事件:
起那段页面如下:
<%@page language="java" import="java.util.*" pageEncoding="gb2312"%>
<META http-equiv=Content-Type content="text/xml;charset = gbk" pageEncoding = "gbk">
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/sm/";
%>
<html>
    <head>
<base href="<%=basePath%>">
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>商品类别管理</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<link href="../resources/css/hottest.css" rel="stylesheet" type="text/css" />
<style type="text/css">
    <!--
    body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
    }
    .STYLE1 {font-size: 12px}
    .STYLE4 {
font-size: 12px;
color: #1F4A65;
font-weight: bold;
font-family:"宋体";
    }
    a:link {
font-size: 12px;
color: #06482a;
text-decoration: none;
    }
    a:visited {
font-size: 12px;
color: #06482a;
text-decoration: none;
    }
    a:hover {
font-size: 12px;
color: #FF0000;
text-decoration: underline;
    }
    a:active {
font-size: 12px;
color: #FF0000;
text-decoration: none;
    }
    .bt_01{
width:71px;
height:25px;
border:0px;
background: url(../resources/images/htdl.gif) no-repeat;
color:#fff;
font-size:12px;
    }
    -->
</style>
<script type="text/javascript">
    function checkName(){
var x=document.getElementById("categoryName");
if(x.value==""){
    document.getElementById("nameErr").innerHTML="<img src='../resources/images/no.gif' width='16' height='16' />商品名不能为空!";
    return false;
}
else{
    document.getElementById("nameErr").innerHTML="<img src='../resources/images/yes.gif' width='16' height='16' />";
    return true;
}
    }
    function checkT(stateVal){
var url = "${pageContext.request.contextPath}/CategoryajaxServlet.do?tlevel="+document.getElementById("tlevel").value;
if(document.getElementById("tlevel").value.toString()=="3"){
    var a=document.getElementById("parentCategory");
    document.getElementById("parentCategory").removeChild(a.options[0]);
    if (window.XMLHttpRequest)
    {
req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(req)
    {
//true:异步模式
req.open("GET",url,true);
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.onreadystatechange = complete;
req.send(null);
//  document.getElementById("tlevelErr").innerText="请稍后,正在!";
    }
}
else{
    document.getElementById("parentCategory").innerHTML="<option value=所有商品>所有商品</option>";
}
    }
    function complete()
    {
var parentCategory=document.getElementById("parentCategory");

if (req.readyState == 4)
{
    if (req.status == 200)
    {
document.getElementById("parentCategory").innerHTML= req.responseText;
    }
}

    }
</script>
    </head>
    <body>
<form action="<%=path%>/AddCategoryServlet.do" method="post">
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="30"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="30"><img src="../resources/images/tab_03.gif" width="15" height="30" /></td>
<td background="../resources/images/tab_05.gif" align="left"><img src="../resources/images/311.gif" width="16" height="16" /> <span class="STYLE4">商品类别添加</span></td>
<td width="14"><img src="../resources/images/tab_07.gif" width="14" height="30" /></td>
</tr>
    </table></td>
    </tr>
    <tr>
    <td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="15" style="background:url(../resources/images/tab_12.gif) repeat-y left #d3e7fc; "></td>
    <td width="97%" bgcolor="#FFFFFF" height="500" valign="top" align="center" style="padding-top:20px;">
<table width="505px" border="0" cellspacing="0" cellpadding="0">
    <tr style="width:100%;height:20px;background:url(../resources/images/htbg1.gif);">
    <td></td>
    </tr>
    <tr style="width:100%; height:250px; background: url(../resources/images/htbg3.gif) repeat-y; text-align:center;">
    <td>
<table width="80%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="20%" height="40" align="right" class="STYLE4">类别名称:</td>
    <td align="left"><input type="text" name="categoryName" id="categoryName" onblur="checkName()"/><span id="nameErr"></span></td>
    </tr>
    <tr>
    <td height="40" align="right" class="STYLE4">类别层次:</td>
    <td height="30" align="left">
<select name="tlevel" id="tlevel" onblur="checkT()">
    <option value="2">2</option>
    <option value="3">3</option>
</select>
    <span id="tlevelErr"></span>
    </td>
    </tr>
    <tr>
    <td height="40" align="right" class="STYLE4">父&nbsp;&nbsp;&nbsp;&nbsp;类:</td>
    <td height="30" align="left">
<select name="parentCategory" id="parentCategory" >
    <option value="所有商品">所有商品</option>
</select>
    </td>
    </tr>
    <tr>
    <td height="40" align="right" class="STYLE4">状&nbsp;&nbsp;&nbsp;&nbsp;态:</td>
    <td height="30" align="left">
<select name="status"> <option value="激活">激活</option><option value="冻结">冻结</option></select></td>
    </tr>
    <tr>
    <td height="40" colspan="2" align="center">
<input type="submit" value="确定"  class="bt_01"/>&nbsp;
<input type="reset" value="取消"  class="bt_01"/></td>
    </tr>
    <tr><td height="40" colspan="2" align="center" class="STYLE4"><span id="prompt">${result}</spen></td>
</tr>
</table>
    </td>
</tr>
<tr style="width:100%; height:17px; background: url(../resources/images/htbg2.gif) no-repeat;">
<td>&nbsp;</td>
</tr>
</table>
</td>
<td width="14"  style="background:url(../resources/images/tab_16.gif) repeat-y right #d3e7fc; ">&nbsp;</td>
</tr>

</table>

</td>
</tr>
<tr>
<td height="29"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
        <td width="15" height="29"><img src="../resources/images/tab_20.gif" width="15" height="29" /></td>
        <td background="../resources/images/tab_21.gif"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="21%" height="14">&nbsp;</td>
<td width="79%" class="STYLE1" align="right">&nbsp;</td>
</tr>
    </table></td>
        <td width="14"><img src="../resources/images/tab_22.gif" width="14" height="29" /></td>
</tr>
    </table></td>
</tr>
</table>
</form>
</body>
</html>

根据select的变化局部更新<option>的内容

后台ajax的读取数据的代码如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.fyz.servlet.ajax;

import com.fyz.factory.DAOFactory;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*
* @author RDGFT
*/
@WebServlet(name = "CategoryajaxServlet", urlPatterns = {"/CategoryajaxServlet"})
public class CategoryajaxServlet extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
StringBuffer string = new StringBuffer();
String s=null;
try {
    /* TODO output your page here. You may use following sample code. */
    List list = DAOFactory.getCategoryDAOIMP().queryCategory_name(2);
    Iterator it = list.iterator();
    while (it.hasNext()) {
s=(String) it.next();
string.append("<option value="+s+">"+s+"</option>");
    }
    out.write(string.toString());
} finally {
    out.close();
}
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
processRequest(request, response);
    }

 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
processRequest(request, response);
    }

 
    public String getServletInfo() {
return "Short description";
    }
}


提交表单的数据代码如下;


package com.fyz.servlet_sm;

import com.fyz.vo.CategoryVO;
import com.fyz.factory.DAOFactory;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;

public class AddCategoryServlet extends HttpServlet {
    //doGet

    Random random;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
CategoryVO cvo = new CategoryVO();
//从前台表单获得数据并存入VO类中
cvo.setCate_name(request.getParameter("categoryName"));
cvo.setCate_layer(request.getParameter("tlevel"));
cvo.setCate_father(request.getParameter("parentCategory"));
cvo.setStatus(request.getParameter("status"));
//添加相应数据到数据库
if (DAOFactory.getCategoryDAOIMP().addCategory(cvo)) {
    request.setAttribute("result", "添加商品分类成功!");
} else {
    request.setAttribute("result", "添加商品分类失败!");
}
//页面跳转
RequestDispatcher rd = request.getRequestDispatcher("sm/addCategory.jsp");
rd.forward(request, response);
    }

    //doPost()
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
doGet(request, response);
    }
}


调用数据库部分代码如下:

public boolean addCategory(CategoryVO cvo) {
boolean result = false;
Connection conn = null;
PreparedStatement ps = null;
CallableStatement csmt = null;
ResultSet rs = null;
try {
    conn = DBUtil.getInstance().getConn();
    csmt = conn.prepareCall("{call add_category(?,?,?,?)}");

    System.out.println(cvo.getCate_name());
    System.out.println(cvo.getCate_layer());
    System.out.println(cvo.getCate_father());
    System.out.println(cvo.getStatus());
   
    csmt.setString(1, cvo.getCate_name());
    csmt.setInt(2, Integer.parseInt(cvo.getCate_layer()));
    csmt.setString(3, cvo.getCate_father());
    csmt.setString(4, cvo.getStatus());
    int i=csmt.executeUpdate();
    if (i>=0) {
result = true;
    }
} catch (Exception ex) {
    Logger.getLogger(CategoryDAOIMP.class.getName()).log(Level.SEVERE, null, ex);
} finally {
    DBUtil.dbClose(ps, conn);
}

return result;
    }



希望能给你带来收获

分享到:
评论

相关推荐

    ajax与php利用json传输数据,实现局部刷新

    7. **示例中的`ajax.html`和`demo.php`**:`ajax.html`很可能是包含JavaScript代码的HTML文件,用于创建Ajax请求并处理返回的数据,更新页面内容。`demo.php`是PHP脚本,它接收Ajax请求,处理数据,然后返回JSON格式...

    asp.net中使用ajax向数据库中插入数据

    该页面处理请求并将数据插入数据库,然后返回响应给Ajax调用者。调用者根据响应进行后续操作。 #### 三、示例代码分析 1. **Default.aspx**:主页面,包含用户输入表单及Ajax调用逻辑。 ```html 无标题页 ...

    ajax+jsp局部页面刷新

    #### 步骤五:更新页面内容 `show()`函数将解析服务器返回的XML文档,提取所需数据,并将其格式化为HTML,然后插入到页面的特定元素中。这一步实现了页面局部内容的更新。 #### 步骤六:自动刷新机制 通过设置...

    ajax 弹出信息框(取数据库资源)及登陆

    **Ajax技术详解与实际应用** ...批量处理数据,避免频繁的Ajax调用。 综上,Ajax是现代Web开发中不可或缺的一部分,它极大地提升了用户体验。通过掌握Ajax的基本原理和实践,开发者可以构建更高效、更互动的Web应用。

    ssh框架下用ajax动态从数据库查询的菜单

    在SSH(Spring、Struts和Hibernate)框架下,利用AJAX动态从数据库查询并加载菜单是一种常见的需求,尤其是在开发Web应用程序时,为了提供用户友好的交互体验。下面将详细讲解如何实现这一功能。 首先,我们需要...

    基于iBatis,ajax从数据库取数的无刷新级联

    标题中的“基于iBatis,ajax从数据库取数的无刷新级联”指的是在Web开发中,使用iBatis作为持久层框架,结合Ajax技术,实现动态从数据库获取数据并更新视图,而无需页面整体刷新,从而提高用户体验。这里涉及的主要...

    使用Ajax实现页面表格添删改查的异步刷新操作

    在页面表格的添删改查场景中,当用户执行这些操作时,AJAX会向后台发送相应的HTTP请求,处理完成后,服务器返回更新的数据,然后JavaScript更新表格局部,实现页面的动态刷新。 在添操作中,用户可能输入新数据后...

    Ajax调用一般处理程序

    Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,...前端则通过Ajax调用这个处理程序,动态更新检查结果或其他相关信息。

    ajax实现局部刷新

    例如,我们可能有一个评论区,每当有新评论提交时,通过Ajax调用后台服务,获取新评论,然后将其插入到评论列表中。 ```html function refreshComments() { var xhr = new XMLHttpRequest(); xhr....

    ASP和Ajax结合,实现无刷新操作数据库

    5. **更新DOM**:在客户端,接收到服务器响应后,JavaScript会根据返回的数据更新DOM(文档对象模型),从而实现页面的无刷新更新。可以使用DOM操作方法,如innerHTML、appendChild等,或者使用jQuery等库简化操作。...

    C#调用WebService实现的Ajax电子相册

    它允许在不重新加载整个网页的情况下,与服务器交换数据并局部更新页面。这里,我们利用Ajax调用WebService,获取照片数据,然后在客户端进行处理,达到无刷新的效果,提升用户体验。Jquery库简化了Ajax操作,提供了...

    Ajax局部刷新c#源码

    Ajax局部刷新技术是一种在网页不进行整个页面刷新的情况下,通过后台与服务器异步交换数据并局部更新页面的技术。这种技术极大地提升了用户体验,因为它允许用户在交互时无需等待整个页面加载,仅更新必要的部分。C#...

    php ajax 实现局部刷新简单例子(超简单化)

    它允许网页在不重新加载整个页面的情况下,通过JavaScript异步地从服务器获取并更新数据。这样,用户可以在页面上进行操作时,感受到更加流畅和即时的响应,增强了用户体验。 ### 实现局部刷新的步骤 接下来,我们...

    Ajax的加载,跳转页面

    它的核心在于利用JavaScript异步地与服务器交换数据并更新页面的局部内容,从而提升了用户体验,使得网页更具交互性。 首先,我们需要理解Ajax的工作原理。Ajax通过创建XMLHttpRequest对象(在现代浏览器中,这个...

    NET方式下AJax和定时实时刷新技术两种方式实现

    在.NET开发环境中,实现网页实时数据更新有两种常见技术:AJAX(Asynchronous JavaScript and XML)和定时刷新。本文将深入探讨这两种技术,并结合.NET框架,分析它们如何与数据库交互,实现实时页面刷新。 首先,...

    AJAX数据库实例.pdf

    AJAX(Asynchronous JavaScript and XML)是一种在无需刷新...总之,AJAX技术在网页应用中扮演着关键角色,它能够实现页面的局部刷新,提高用户体验,并允许在用户界面无明显中断的情况下与后端数据库进行高效互动。

    Ajax 操作实例 ASP.NET实例

    由于我们在UpdatePanel中,这些操作不会导致整个页面刷新,而是通过Ajax调用完成局部更新。 同时,我们可能还需要在客户端进行一些JavaScript处理,例如验证用户输入或提供反馈。可以通过在GridView控件上添加...

    Ajax异步刷新的实现 带数据库

    在“Ajax异步刷新的实现 带数据库”的主题中,我们将探讨如何利用Ajax技术配合SSH(Spring、Struts2、Hibernate)框架来实现在不刷新整个页面的情况下与数据库进行交互,更新页面内容。SSH框架是Java Web开发中常用...

Global site tag (gtag.js) - Google Analytics