- 浏览: 247023 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
caleb_520:
aidecanlan88 写道我检查l了,没有空格,为什么还是 ...
关于Struts2中的struts.devMode -
aidecanlan88:
我检查l了,没有空格,为什么还是报错,为什么配置开发模式没反应 ...
关于Struts2中的struts.devMode -
luofengxin2012:
绘制JButton圆角效果 -
一个代码:
谢谢啊
利用iframe实现文件上传 -
妍然一笑2010:
...
JTabbedPane的事件监听
今天写一篇关于利用Ajax技术,通过客户端将请求参数放入XML文件,然后将XML发送给服务器端。最后,服务器端将请求的处理结果返回给客户端。
1、首先在做一个Ajax程序的时候,必须了解Ajax其运行原理(或是工作机制)
(1)创建XMLHTTPRequest对象
(2)向服务器端发出请求
(3)服务器端接受请求并做出处理
(4)服务器端返回请求结果给客户端
(5)利用ajax接收服务器端请求结果
(6)将请求结果显示给用户(或是客户端)
2、一个登录验证例子
技术要求:
(1)登录验证采用的技术Ajax+Spring+Servlet+JavaBean
(2)采用数据库SQL Server
(3)程序实现必须采用分层结构。(即表现层+控制层+业务逻辑层+数据持久层+数据库层)
(4)那么各个层采用的技术如下:
表现层:JSP+JavaScript+Ajax
控制层:Servlet
业务逻辑层:Spring的IOC容器
数据持久层:Spring中的JDBC
数据库层:由SQL Server提供支持
程序实现步骤:
(1)先从数据库持久层开始
(2)接着创建一个实现StudentDao接口的StudentDaoImpl类
(3)接着创建一个实现RowMapper接口的StudentRowMapper类
(4)业务逻辑层实现
(5)控制层实现
创建一个LoginXMLServlet类,该Servlet主要是处理客户端提交过来的请求
(6)表现层实现
(7)Spring的application.xml文件,该配置文件用的Spring 1.2版本的配置文件
1、首先在做一个Ajax程序的时候,必须了解Ajax其运行原理(或是工作机制)
(1)创建XMLHTTPRequest对象
(2)向服务器端发出请求
(3)服务器端接受请求并做出处理
(4)服务器端返回请求结果给客户端
(5)利用ajax接收服务器端请求结果
(6)将请求结果显示给用户(或是客户端)
2、一个登录验证例子
技术要求:
(1)登录验证采用的技术Ajax+Spring+Servlet+JavaBean
(2)采用数据库SQL Server
(3)程序实现必须采用分层结构。(即表现层+控制层+业务逻辑层+数据持久层+数据库层)
(4)那么各个层采用的技术如下:
表现层:JSP+JavaScript+Ajax
控制层:Servlet
业务逻辑层:Spring的IOC容器
数据持久层:Spring中的JDBC
数据库层:由SQL Server提供支持
程序实现步骤:
(1)先从数据库持久层开始
package com.gxa.edu.spring.dao; import java.util.List; import com.gxa.edu.spring.bean.Student; public interface StudentDao { List queryStudent(String stuId, String stuName); }
(2)接着创建一个实现StudentDao接口的StudentDaoImpl类
package com.gxa.edu.spring.dao.impl; import java.util.List; import org.springframework.core.io.Resource; import org.springframework.jdbc.core.support.JdbcDaoSupport; import com.gxa.edu.spring.bean.Student; import com.gxa.edu.spring.dao.StudentDao; import com.gxa.edu.spring.rowmapper.StudentRowMapper; /** * 该StudentDaoImpl是操作student表的StudentDao接口具体实现类 * 1、该类继承了Spring框架提供的JdbcDaoSupport类。 * 2、Spring框架中的JdbcDaoSupport类是一个对JDBC抽象封装的Dao * 3、继承JdbcDaoSupport类,必须设置DataSource、同时通过调用JdbcDaoSupport类的getJdbcTemplate()方法为其子类提供操作数据库的JdbcTemplate类 * 4、JdbcTemplate类是操作JDBC的核心类,并且提供了执行SQL,执行存储过程,避免操作异常功能。 * @author Administrator * */ public class StudentDaoImpl extends JdbcDaoSupport implements StudentDao{ public List queryStudent(String stuId, String stuName) { // TODO Auto-generated method stub String sql = "select stuId, stuName from student " + "where stuId = ? and stuName = ?"; Object[] obj = {stuId, stuName}; return getJdbcTemplate().query(sql, obj, new StudentRowMapper()); } }
(3)接着创建一个实现RowMapper接口的StudentRowMapper类
package com.gxa.edu.spring.rowmapper; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import com.gxa.edu.spring.bean.Student; public class StudentRowMapper implements RowMapper{ public Object mapRow(ResultSet arg0, int arg1) throws SQLException { // TODO Auto-generated method stub Student stu = new Student(); stu.setStuId(arg0.getString("stuId")); stu.setStuName(arg0.getString("stuName")); return stu; } }
(4)业务逻辑层实现
package com.gxa.edu.spring.logic; import java.util.List; import java.util.Map; import com.gxa.edu.spring.bean.Student; import com.gxa.edu.spring.dao.StudentDao; public class StudentLogic { private StudentDao dao; public void setDao(StudentDao dao) { this.dao = dao; } public List queryStudent(String stuId, String stuName) { return dao.queryStudent(stuId, stuName); } }
(5)控制层实现
创建一个LoginXMLServlet类,该Servlet主要是处理客户端提交过来的请求
package com.gxa.edu.servlet; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.gxa.edu.spring.logic.StudentLogic; public class LoginXMLServlet extends HttpServlet { /** * Constructor of the object. */ public LoginXMLServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); List list = getRoot(readXML(request.getInputStream())); String stuId = ""; String stuName = ""; for (int i = 0; i < list.size(); i++) { if (i > 0) { stuName = (String) list.get(i); } else { stuId = (String) list.get(i); } } System.out.println("stuId === " + stuId); System.out.println("stuName === " + stuName); WebApplicationContext wc = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); StudentLogic logic = (StudentLogic) wc.getBean("transactionStudent"); String info; if (logic.queryStudent(stuId, stuName).size() > 0) { info = "学生ID和姓名正确,验证通过"; } else { info = "学生ID和姓名不正确,验证不通过"; } PrintWriter out = response.getWriter(); out.println(info); out.close(); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init() throws ServletException { // Put your code here } private Document readXML(InputStream in) { Document document = null; SAXReader saxReader = new SAXReader(); try { document = saxReader.read(in); } catch (DocumentException e) { e.printStackTrace(); } return document; } private List getRoot(Document document) { Element root = document.getRootElement(); return disXML_3(root); } private List disXML_3(Element element) { Iterator iterator = element.elementIterator(); List list = null; //一个泛型的使用 List<String> list_str = new ArrayList<String>(); while (iterator.hasNext()) { Element node = (Element) iterator.next(); list = node.elements(); if (list != null && list.size() > 0) { System.out.print(node.getName()); int count = node.attributeCount(); for (int i = 0; i < count; i++) { Attribute attr = node.attribute(i); System.out.println("*****" + attr.getName() + " " + attr.getText()); } disXML_3(node); } else { //System.out.println(node.getName() + " " + node.getText()); list_str.add(node.getText()); } } return list_str; } }
(6)表现层实现
<%@ page language="java" pageEncoding="gb2312"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>利用XML来向服务器发送数据</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"> --> <script type="text/javascript"> var XMLHttpReq = false; var stuId; var stuName; //创建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 sendRequest() { createXMLHttpRequest(); var xml = createXML(); XMLHttpReq.open("POST", "LoginXMLServlet", true); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 XMLHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); XMLHttpReq.send(xml); } // 处理返回信息函数 function processResponse() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息 var res=XMLHttpReq.responseText; window.alert(res); } else { //页面不正常 window.alert("您所请求的页面有异常。"); } } } function userCheck() { stuId = document.form1.stuId.value; stuName = document.form1.stuName.value; sendRequest(); } //创建XML function createXML() { var xml = "<user>"; xml = xml + "<stuId>" +stuId + "<\/stuId>"; xml = xml + "<stuName>" + stuName + "<\/stuName>"; xml = xml + "<\/user>"; return xml; } </script> </head> <body> <form name="form1"> 学生ID: <input type="text" name="stuId"> <br> 学生姓名: <input type="text" name="stuName"> <br> <input type="button" value="登录" onclick="userCheck()"> </form> </body> </html>
(7)Spring的application.xml文件,该配置文件用的Spring 1.2版本的配置文件
<?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>12345</value> </property> </bean> <bean id="studentDao" class="com.gxa.edu.spring.dao.impl.StudentDaoImpl"> <!-- 为studentDao注入dataSource实例 --> <property name="dataSource"> <ref local="dataSource" /> </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> <!-- =====为一个操作数据库对象织入事务管理===== --> <bean id="transactionStudent" parent="basicTransactionProxy"> <property name="target"> <bean class="com.gxa.edu.spring.logic.StudentLogic"> <property name="dao"> <ref local="studentDao"/> </property> </bean> </property> </bean> </beans>
发表评论
-
jQuery选择器归纳
2011-02-12 10:55 1476总结一下jQuery的选择器使用。当然,这部分内容有些是通过网 ... -
JQuery事件
2010-06-12 17:22 959Events These methods are used ... -
利用Ext组件完成Form和Grid之间的数据传输
2009-11-01 16:40 1234四川国信安教育百杰培训:http://www.gxaedu.c ... -
利用DOM动态更新列表-(最终版源码Ajax+JSP+Servlet+Spring+SQL Server)
2009-07-27 16:40 1807大概有一段时间没有进入blog写些东西了。今天我将利用DOM动 ... -
利用DOM静态更新列表
2009-07-04 18:09 820今天发表一遍利用DOM静态更新列表,现在就直接给出代码。 ...
相关推荐
将JavaEE数据交换服务器作为中心星型结构,利用服务器实现客户数据交换的传递。另外,和物流数据交换系统特点相互结合,提出基于术对象的中间层数据转换。研究不同关系模式的相互转换规则,实现设计航空物流数据交换...
这是一个质的区别:网页将数据和显示混在一起,而XML则将数据和显示分开来。 我们看上面的例子,在myfile.htm中,我们只关心页面的显示方式,我们可以设计不同的界面,用不同的方式来排版页面,但数据是储存在...
1浏览器的同步 1.1说明 ... 4、如果用post请求向服务器发送数据,需要将”Content-type”的首部设置为”application/x-www-form-urlencoded”.它会告知服务器正在发送数据,并且数据已经符合url编码了。
基于Android系统的移动微博集成交互平台的设计与实现,用户通过手机或者PC来向微博开放平台服务器发送请求,微博服务器接收请求,并且返回XML格式或者JSON格式的数据给客户端。也就是说发送和接收都是基于字符流的,...
JSON客户端Encoding支持:利用该功能你就能够在客户端或服务器之间发送和接收经过JSON Encoding的数据。 网络断线保护:当服务器Down掉时My-BIC将帮助你删除请求并阻止产生更多的调用。 内置Submission队列:所有...
LoRa传输:温控器使用LoRa协议通过无线信道将封装后的数据发送到目标设备或服务器。LoRa的长距离传输能力使得温度数据可以跨越较远的距离传输。 数据接收和解析:目标设备或服务器上的LoRa接收模块接收到温度数据后...
3.2,用onreadystatechange来指定数据装载的方式.(onreadystatechange是一个异步响应事件,就是因为它,ajax才那么完美.onreadystatechange事件中可以接收到服务器传回来的数据,通过分析和利用这些数据从而完成...
利用gSOAP自带的Calc例子 仿写一个 网络中使用计算器 客户端发送需要操作的数据,服务端计算完之后,将结果返回给客户端 编写之后 我们的服务端可独立使用。像在安装了IIS或者用Apache配置的Web服务器。
第14章 在Java Servlet中利用XML 14. 1 XML概述 14. 1. 1 DOM和SAX 14. 1. 2 良构的XML文档及验证实例 14. 1. 3 有效的XML文档及验证实例 14. 2 XML语法 14. 2. 1 XML文档部分 14. 2. 2 DTD 14. 3 XML应用...
将存储过程用于命令:描述如何使用 Command 对象来调用存储过程,并提供有关发送和检索参数值的信息。 从数据库中获取单个值:描述如何使用 Command 从数据库查询中返回单个值。 从数据库中获取 BLOB 值:描述如何...
相信很多人都用过类似飞秋的软件,过去也做过很多局域网的数据传输应用,但要么就是基于TCP的,要么就是需要用户设置对方...通过发送XML,利用此类库开发的程序员可以根据自己的协议发送任意数据,包括udp文件传送等。
让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份下载 ... ... ... ...技术、报表与打印技术、网络通信技术、PHP与XML技术、安全技术、PHP高级应用技术以及综合应用等...实例253 利用having语句过滤分组数据 390 ...
1081 利用C#操作XML数据 653 1082 显示数据库记录 653 1083 如何扫描计算机端口号 653 1084 如何获得指定网页的源代码 654 1085 如何将指定URL数据下载到本地文件 654 1086 如何设置Internet浏览器外观 ...
130.如何解决表单发送数据小于100KB的问题 131.如何在表单中动态添加文本框 132.如何解决下拉列表出现选项重复的问题 133.如何实现在下拉列表中输入文字 134.如何实现级联下拉列表 135.如何根据用户的分辨率调整窗口...
4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。 5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上...