- 浏览: 251319 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
caleb_520:
aidecanlan88 写道我检查l了,没有空格,为什么还是 ...
关于Struts2中的struts.devMode -
aidecanlan88:
我检查l了,没有空格,为什么还是报错,为什么配置开发模式没反应 ...
关于Struts2中的struts.devMode -
luofengxin2012:
绘制JButton圆角效果 -
一个代码:
谢谢啊
利用iframe实现文件上传 -
妍然一笑2010:
...
JTabbedPane的事件监听
大概有一段时间没有进入blog写些东西了。今天我将利用DOM动态更新列表-(最终版源码Ajax+JSP+Servlet+Spring+SQL Server),奉献给大家。当然,还是那个宗旨喜欢就看看吧。
1、首先给出这个程序设计的流程
表现层:JSP+JavaScript+Ajax
控制层:Servlet
业务逻辑层:Spring的IOC容器
数据持久层:Spring中的JDBC
数据库层:由SQL Server提供支持
上面给出了程序设计的流程,那么我在程序设计的时候就是通过上述流程来实现的。
2、实现步骤如下
整个程序设计的步骤由数据持久层向表现层实现
第一:数据持久层
DAO接口实现代码:
实现DAO接口的类代码:
编写完上面的接口和类,那么就需要在Spring的配置文件中配置相应的信息
实现Spring的RowMapper接口的类:
实现Shopping JavaBean的代码:
第二:业务逻辑层
业务逻辑类在Spring中配置信息
第三:控制层的实现
第四:表现层的实现
表现层中创建一个dynamicShopping.jsp页面,在该页面里面编写了Ajax代码
最后,给出整个Spring的配置文件applicationContext.xml的代码
3、总结
上面的代码其实在我们开发和运用肯定是微乎其微,但是在我们平时刚开始学习的时候,这段代码确实我们进步的基础。
要给大家说一下的是Spring框架的版本是1.2的。在applicationContext.xml文件加入了1.2版本的事务管理。Spring1.2版本的事务管理和高版本的有比较大的区别。当然,大家对Spring比较了解的可以使用高一些的版本,如Spring2.0或是Spring2.5.
1、首先给出这个程序设计的流程
表现层:JSP+JavaScript+Ajax
控制层:Servlet
业务逻辑层:Spring的IOC容器
数据持久层:Spring中的JDBC
数据库层:由SQL Server提供支持
上面给出了程序设计的流程,那么我在程序设计的时候就是通过上述流程来实现的。
2、实现步骤如下
整个程序设计的步骤由数据持久层向表现层实现
第一:数据持久层
DAO接口实现代码:
package com.gxa.edu.spring.dao; /** *@author 国信安百杰 */ import java.util.List; import com.gxa.edu.spring.bean.Shopping; public interface ShoppingDao { int insertShopping(Shopping shopping); int deleteShopping(Shopping shopping); List queryShopping(); int queryMaxShoppingId(); }
实现DAO接口的类代码:
package com.gxa.edu.spring.dao.impl; /** *@author 国信安百杰 */ import java.util.List; import org.springframework.jdbc.core.support.JdbcDaoSupport; import com.gxa.edu.spring.bean.Shopping; import com.gxa.edu.spring.dao.ShoppingDao; import com.gxa.edu.spring.rowmapper.ShoppingRowMapper; public class ShoppingDaoImpl extends JdbcDaoSupport implements ShoppingDao{ public int deleteShopping(Shopping shopping) { // TODO Auto-generated method stub String sql = "delete from shopping where shoppingName = ?"; Object[] obj = {shopping.getShoppingName()}; return getJdbcTemplate().update(sql, obj); } public int insertShopping(Shopping shopping) { // TODO Auto-generated method stub String sql = "insert into shopping values(?,?)"; Object[] obj = {shopping.getShoppingId(), shopping.getShoppingName()}; return getJdbcTemplate().update(sql, obj); } public List queryShopping() { // TODO Auto-generated method stub String sql = "select * from shopping"; return getJdbcTemplate().query(sql, new ShoppingRowMapper()); } public int queryMaxShoppingId() { // TODO Auto-generated method stub String sql = "select max(shoppingId) from shopping"; return getJdbcTemplate().queryForInt(sql); } }
编写完上面的接口和类,那么就需要在Spring的配置文件中配置相应的信息
<bean id="shoppingDao" class="com.gxa.edu.spring.dao.impl.ShoppingDaoImpl"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean>
实现Spring的RowMapper接口的类:
package com.gxa.edu.spring.rowmapper; /** *RowMapper接口主要是通过Spring对JDBC的封装将数据封装给一个JavaBean *@author 国信安百杰 */ import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import com.gxa.edu.spring.bean.Shopping; public class ShoppingRowMapper implements RowMapper{ public Object mapRow(ResultSet arg0, int arg1) throws SQLException { // TODO Auto-generated method stub Shopping shopping = new Shopping(); shopping.setShoppingId(arg0.getInt("shoppingId")); shopping.setShoppingName(arg0.getString("shoppingName")); return shopping; } }
实现Shopping JavaBean的代码:
package com.gxa.edu.spring.bean; /** *@author 国信安百杰 */ public class Shopping { private int shoppingId; private String shoppingName; public int getShoppingId() { return shoppingId; } public void setShoppingId(int shoppingId) { this.shoppingId = shoppingId; } public String getShoppingName() { return shoppingName; } public void setShoppingName(String shoppingName) { this.shoppingName = shoppingName; } }
第二:业务逻辑层
package com.gxa.edu.spring.logic; /** *@author 国信安百杰 */ import java.util.List; import com.gxa.edu.spring.bean.Shopping; import com.gxa.edu.spring.dao.ShoppingDao; public class ShoppingLogic { private ShoppingDao dao; public void setDao(ShoppingDao dao) { this.dao = dao; } public List queryShopping() { return dao.queryShopping(); } public int deleteShopping (Shopping shopping) { return dao.deleteShopping(shopping); } public int insertShopping(Shopping shopping) { return dao.insertShopping(shopping); } public int queryMaxShoppingId() { return dao.queryMaxShoppingId(); } }
业务逻辑类在Spring中配置信息
<bean id="shoppingLogic" class="com.gxa.edu.spring.logic.ShoppingLogic"> <property name="dao"> <ref local="shoppingDao"/> </property> </bean>
第三:控制层的实现
package com.gxa.edu.servlet; /** *@author 国信安百杰 */ import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.gxa.edu.spring.bean.Shopping; import com.gxa.edu.spring.logic.ShoppingLogic; public class ShoppingServlet extends HttpServlet { /** * Constructor of the object. */ public ShoppingServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/xml; charset=UTF-8"); String name = request.getParameter("name"); String action = request.getParameter("action"); System.out.println("name===" + name); System.out.println("action===" + action); PrintWriter out = response.getWriter(); WebApplicationContext wc = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); ShoppingLogic logic = (ShoppingLogic) wc.getBean("shoppingLogic"); if ("add".equals(action)) { int i = logic.queryMaxShoppingId(); System.out.println(i); Shopping shopping = new Shopping(); shopping.setShoppingId(i + 1); shopping.setShoppingName(name); if (logic.insertShopping(shopping) > 0) { out.println("添加商品成功"); } else { out.println("添加商品失败"); } } if ("del".equals(action)) { Shopping shopping = new Shopping(); shopping.setShoppingName(name); if (logic.deleteShopping(shopping) > 0) { out.println("删除商品成功"); } else { out.println("删除商品失败"); } } out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init() throws ServletException { // Put your code here } }
第四:表现层的实现
表现层中创建一个dynamicShopping.jsp页面,在该页面里面编写了Ajax代码
<%@ page language="java" import = "java.util.*" pageEncoding="gb2312"%> <%@ page import = "org.springframework.web.context.WebApplicationContext" %> <%@ page import = "org.springframework.web.context.support.WebApplicationContextUtils" %> <%@ page import = "com.gxa.edu.spring.logic.*" %> <%@ page import = "com.gxa.edu.spring.bean.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>实现Web页面局部动态更新品牌信息</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <link rel="stylesheet" type="text/css" href="images/css.css"> <script type="text/javascript"> var XMLHttpReq = false; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } //添加商品的相应函数 function addSortProcessResponse() { if (XMLHttpReq.readyState == 4) {//和服务器端交互完毕 if (XMLHttpReq.status == 200) {//返回成功信息 addSortList(); } } } //确认按钮出发事件函数 function addSort() { var name = document.getElementById("name").value; if (name == "") { return; } var url = "ShoppingServlet?action=add" + "&name=" + name; createXMLHttpRequest(); XMLHttpReq.open("GET", url, true);//建立服务器端连接 XMLHttpReq.onreadystatechange = addSortProcessResponse;//指定添加商品的相应函数 XMLHttpReq.send(null); } //一旦添加商品信息进入后台数据库,就执行此函数将信息打印到页面 function addSortList() { var name = document.getElementById("name").value; if (name == "") { return; } var row = document.createElement("tr"); row.setAttribute("id", name); var cell = document.createElement("td"); cell.appendChild(document.createTextNode(name)); row.appendChild(cell); //添加删除按钮 var deleteButton = document.createElement("input"); deleteButton.setAttribute("type", "button"); deleteButton.setAttribute("value", "删除"); deleteButton.onclick = function () {deleteSort(name)}; cell = document.createElement("td"); cell.appendChild(deleteButton); row.appendChild(cell); //将设置好的元素动态添加到tbody里面 document.getElementById("sortList").appendChild(row); //添加完品牌后就清空输入框 document.getElementById("name").value=""; } //删除品牌信息相应函数 function deleteSortProcessResponse() { if (XMLHttpReq.readyState == 4) {//和服务器端交互完毕 if (XMLHttpReq.status == 200) {//返回成功信息 window.alert("删除成功"); } } } //删除品牌信息 function deleteSort(id) { if (id != null) { //var row = document.getElementById(id); //var sorlist = document.getElementById("sortlist"); //sorlist.removeChild(row); var url = "ShoppingServlet?action=del" + "&name=" + id; createXMLHttpRequest(); XMLHttpReq.open("GET", url, true);//建立服务器端连接 XMLHttpReq.onreadystatechange = deleteSortProcessResponse;//指定添加商品的相应函数 XMLHttpReq.send(null); clearSort(id);//清空表格中信息 } } //清空表格中信息 function clearSort(id) { if (id != null) { var row = document.getElementById(id); var sorlist = document.getElementById("sortlist"); sorlist.removeChild(row); } } </script> </head> <% WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext()); ShoppingLogic logic = (ShoppingLogic) ctx.getBean("shoppingLogic"); List list = logic.queryShopping(); %> <body> <table style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="0" cellpadding="2" width="400" bgcolor="#f5efe7" border="0"> <tr> <td align="middle" height="4" colspan="3"> <img height="4" src="images/promo_list_top.gif" width="100%" border="0" alt=""> </td> </tr> <tr> <td align="middle" bgcolor="#dbc2b0" height="19" colspan="3"> <b>品牌信息管理</b> </td> </tr> <tr> <td height="20"> 增加新品牌: </td> <td height="20"> <input id="name" type="text" size="15"> </td> <td height="20"> <img src="images/ok.gif" onclick="addSort();" alt=""> </td> </tr> <tr> <td height="20"> 品牌信息管理: </td> </tr> <table border="1" width="400"> <tr> <td height="20" valign="top" align="center"> 品牌名称: </td> <td id="pos_1" height="20"> 操作 </td> </tr> <tbody id="sortList"> <% for (int i = 0; i < list.size(); i++) { Shopping shopping = (Shopping) list.get(i);%> <tr id="<%=shopping.getShoppingName() %>"> <td><%=shopping.getShoppingName() %></td> <td><input type="button" value="删除" onclick="deleteSort('<%=shopping.getShoppingName() %>')"></input></td> </tr> <%}%> </tbody> </table> </table> </body> </html>
最后,给出整个Spring的配置文件applicationContext.xml的代码
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置SQL Server数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </property> <property name="url"> <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=stu</value> </property> <property name="username"> <value>sa</value> </property> <property name="password"> <value>123456</value> </property> </bean> <!-- =====DataSourceTransactionManager来对数据源进行事务管理===== --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource" /> </property> </bean> <!-- =====TransactionProxyFactoryBean一个事务管理代理工厂bean,它是我们Spring中一个拦截器====== --> <bean id="basicTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager"> <ref local="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> </props> </property> <!-- <property name="proxyTargetClass" value="true"></property> --> </bean> <!-- ====配置ShoppingDao===== --> <bean id="shoppingLogic" class="com.gxa.edu.spring.logic.ShoppingLogic"> <property name="dao"> <ref local="shoppingDao"/> </property> </bean> <bean id="shoppingDao" class="com.gxa.edu.spring.dao.impl.ShoppingDaoImpl"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> </beans>
3、总结
上面的代码其实在我们开发和运用肯定是微乎其微,但是在我们平时刚开始学习的时候,这段代码确实我们进步的基础。
要给大家说一下的是Spring框架的版本是1.2的。在applicationContext.xml文件加入了1.2版本的事务管理。Spring1.2版本的事务管理和高版本的有比较大的区别。当然,大家对Spring比较了解的可以使用高一些的版本,如Spring2.0或是Spring2.5.
- 利用DOM动态更新列表-_最终版源码Ajax_JSP_Servlet_Spring_SQL_Server_.rar (1.7 MB)
- 下载次数: 123
发表评论
-
jQuery选择器归纳
2011-02-12 10:55 1515总结一下jQuery的选择器使用。当然,这部分内容有些是通过网 ... -
JQuery事件
2010-06-12 17:22 1004Events These methods are used ... -
利用Ext组件完成Form和Grid之间的数据传输
2009-11-01 16:40 1278四川国信安教育百杰培训:http://www.gxaedu.c ... -
利用DOM静态更新列表
2009-07-04 18:09 869今天发表一遍利用DOM静态更新列表,现在就直接给出代码。 ... -
利用XML来向服务器发送数据
2009-06-27 13:31 1436今天写一篇关于利用Ajax技术,通过客户端将请求参数放入XML ...
相关推荐
- Java EE(Servlet、JSP) - Spring框架 - MyBatis持久层框架 - MySQL数据库 - Maven项目管理工具 - **前端技术**: - HTML/CSS/JavaScript - Bootstrap前端框架 - JQuery库 - Ajax异步通信技术 2. **...
7. **JSP/Servlet**:在前端展示部分,可能会使用JSP(JavaServer Pages)和Servlet技术。JSP用于生成动态网页,Servlet则处理HTTP请求。 8. **JavaScript/jQuery**:在客户端,JavaScript和jQuery用于实现页面交互...
Ajax通过XMLHttpRequest对象与服务器进行通信,结合JavaScript处理数据和更新DOM,实现页面的动态更新。 这个"0Java.Web开发"教程包含了上述技术的深入讲解,通过6个exe文件(01.exe到06.exe),很可能是视频或交互...
- JSP(JavaServer Pages)是Java Web开发中的重要组成部分,主要用于创建动态网页。它允许开发者将HTML代码和Java代码混合编写,从而实现页面动态生成。 - Java Servlet是服务器端的Java应用程序,用于处理HTTP...
分别介绍了JSP基础、环境搭建和开发工具、Java语言基础、JSP语法、JSP内建对象、JavaBean技术、Servlet技术、JSP经典设计模式、数据库的安装与创建、数据库访问技术、SQL语句在JSP中的应用、高性能数据处理技术、...
对于初学者,理解DOM(文档对象模型)和AJAX(异步JavaScript和XML)技术,能有效提升用户体验,使用户在无需刷新整个页面的情况下获取更新信息。 在这个项目中,开题报告和论文将阐述系统的需求分析、设计思路、...
- **Servlet与JSP**:作为Java Web开发的基础,Servlet负责处理HTTP请求,而JSP则用于生成动态网页内容。在这个项目中,Servlet通常用于接收用户请求,处理业务逻辑,然后通过JSP将结果返回给用户。 - **MVC模式**...
**Ajax Store**是一个基于Web的项目,利用Ajax技术实现了动态数据加载和页面无刷新更新,提高了用户交互体验。该项目的核心是使用JavaScript与服务器进行异步通信,减少对整个页面的刷新,提高应用性能。博客链接...
《零基础学JAVAWEB源码》是针对初学者设计的一套教学资源,它包含了JAVAWEB开发中的核心概念和技术。通过这份源码,你可以深入理解如何使用Java语言进行Web应用程序的开发,了解各个章节的核心知识点。下面将详细...
**JSP基于SSM汽车出租管理系统设计源码案例解析** 本案例主要介绍了一款使用Java技术栈,基于SSM(Spring、SpringMVC、MyBatis)框架开发的汽车出租管理系统。SSM框架是Java Web开发中常用的一种组合,它能够帮助...
【基于jsp的酒店管理系统源码数据库】是一个典型的Java Web项目,用于实现酒店日常运营的自动化管理。这个系统采用Java语言进行后端开发,JavaScript进行前端交互,而JSP(JavaServer Pages)作为视图层技术,结合...
SSM框架,全称Spring、SpringMVC和MyBatis,是Java开发中常用的一种集成框架,用于构建高效、灵活的Web应用。本项目旨在帮助初学者通过实践掌握基于SSM实现简单登录注册功能的基本步骤和技巧。 首先,`Spring`作为...
- **Servlet与JSP**:Java后端处理用户请求,通常通过Servlet来实现,而JSP用于生成动态网页内容。两者结合,可以构建MVC(模型-视图-控制器)架构。 - **JDBC**:Java数据库连接,用于与数据库进行交互,包括连接...
【物资管理系统项目源码解析】 本项目是一个基于JavaWeb技术的物资管理系统,旨在提供一套完整的物资采购、存储、分配及追踪的解决方案。该项目的核心目标是提高企业内部物资管理的效率和准确性,降低运营成本,...
- **JSP/Servlet**:后端处理请求并返回数据,JSP用于展示部分动态内容。 4. **界面设计** - **Bootstrap**:快速构建响应式布局,确保系统在不同设备上的良好显示效果。 - **jQuery**:简化DOM操作,提高前端...
12. **Servlet与JSP**:理解Web服务器如何处理请求和响应,学习编写Servlet和使用JSP进行动态页面渲染。 13. **JavaScript与jQuery**:在前端开发部分,会涉及到JavaScript的基本语法和DOM操作,以及jQuery库的使用...
- **JSP/Servlet**:Java服务器页面和Servlet用于动态生成HTML,处理HTTP请求。 - **Bootstrap**:前端框架,提供响应式布局和组件,使得界面在不同设备上具有良好的用户体验。 - **jQuery**:JavaScript库,简化...
- jQuery:简化JavaScript操作的库,处理DOM操作和Ajax请求。 5. **用户认证与授权**: - 可能使用Spring Security进行权限控制,实现登录验证、角色分配和访问权限控制。 6. **支付集成**: - 如果包含在线...
【JavaWeb物资管理系统项目源码】是一个典型的JavaWeb应用程序,用于管理和跟踪组织内部的物资流动。这个项目的核心目标是提供一个高效、用户友好的界面,以便于库存控制、采购、领用、退库等操作。下面我们将深入...
- **jQuery**:一个流行的JavaScript库,简化DOM操作和AJAX请求。 - **Bootstrap**:快速开发响应式网页的前端框架,提供预设的样式和组件。 6. **版本控制**: - **Git**:可能在项目开发过程中用于版本管理和...