- 浏览: 250829 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 1509总结一下jQuery的选择器使用。当然,这部分内容有些是通过网 ... -
JQuery事件
2010-06-12 17:22 994Events These methods are used ... -
利用Ext组件完成Form和Grid之间的数据传输
2009-11-01 16:40 1274四川国信安教育百杰培训:http://www.gxaedu.c ... -
利用DOM动态更新列表-(最终版源码Ajax+JSP+Servlet+Spring+SQL Server)
2009-07-27 16:40 1894大概有一段时间没有进入blog写些东西了。今天我将利用DOM动 ... -
利用DOM静态更新列表
2009-07-04 18:09 861今天发表一遍利用DOM静态更新列表,现在就直接给出代码。 ...
相关推荐
// 表示向服务器写入数据 ``` 3. **发送XML报文** 写入XML字符串到HTTP连接: ```java try(OutputStream os = connection.getOutputStream()) { os.write(xmlString.getBytes(StandardCharsets.UTF_8)); } ...
描述提到“PPC通过GPRS调用服务器WebService向服务器发送数据”,这表明具体的通信方式是利用GPRS网络连接,调用Web服务接口(WebService)。WebService是一种基于XML和HTTP的协议,允许不同平台的应用程序之间交换...
`open`方法用于初始化请求,`send`方法则用于发送数据。 然而,如果受到只能使用FORM提交的约束,可以通过创建多个隐藏的INPUT元素来分块发送XML数据,每一块不超过服务器允许的最大长度。例如,如果最大长度是90,...
设置`setDoOutput(true)`表示将有输出流,即向服务器发送数据;`setRequestMethod("POST")`设置请求方法为POST。 - **发送数据**:将之前构建的XML字符串转换为字节数组,并通过`DataOutputStream`写入到连接的输出...
连接建立后,通过Socket的InputStream接收服务器发送的字节流,并将其还原为XML文本。 3. **XML读写**:在Java中,我们可以使用如JAXB(Java Architecture for XML Binding)或者DOM、SAX、StAX等API来读取和写入...
这两个项目可以作为学习和理解winHttp与XML结合使用的实例,通过阅读和运行代码,可以深入理解如何利用winHttp发送XML数据,以及如何处理响应。 总的来说,这个主题涵盖了网络编程基础,HTTP协议,Windows API使用...
HTTP POST请求通常用于向服务器发送数据,比如用户填写表单后提交信息。在C++中,我们可以利用WinInet API来创建这种请求。WinInet是Microsoft提供的一个库,它提供了基本的Internet客户端功能,包括HTTP、HTTPS和...
"DataFetchPort"可能包含了与服务器通信的代码,包括创建XML文档、建立网络连接和发送数据的函数。 XML数据的创建可以通过`TXMLDocument`类来实现,它允许我们动态地构建XML树,然后将其保存为字符串或直接写入流。...
本文将深入探讨如何利用AJAX技术来修改服务器端的XML文件,并在客户端访问这些修改后的数据。 首先,我们需要理解XML(Extensible Markup Language)。XML是一种用于存储和传输结构化数据的标准格式,它独立于软件...
在“使用JSON向服务器发送数据——ajax基础笔记”这个主题中,我们首先会了解如何创建一个XMLHttpRequest对象。在JavaScript中,你可以通过`new XMLHttpRequest()`来实例化一个对象,然后利用它的方法如`open()`、`...
本话题将深入探讨如何利用XML自动调用数据库数据来填写表单,以及与jQuery的结合应用。 一、XML基础 1. XML结构:XML文档由元素、属性、文本和注释组成。每个XML文档都有一个根元素,子元素嵌套在根元素内,形成...
本篇将深入探讨如何利用C#来调用Servlet并发送XML数据,这对于跨语言通信和系统集成具有重要意义。 首先,理解C#调用Servlet的过程。Servlet是Java Web应用的一部分,它运行在服务器端,处理来自客户端(如浏览器)...
Flex是Adobe开发的一种富互联网应用程序(RIA...这种方式允许开发者充分利用XML的结构化特性,构建复杂的数据交换场景。在实际开发中,还需考虑错误处理、安全性以及性能优化等多方面问题,以提供稳定、高效的Web服务。
"XML的数据源对象(数据岛)源代码"指的是利用XML数据岛技术构建的程序源代码。 XML数据岛的核心思想是将XML数据作为HTML页面的一部分,通过JavaScript或者微软的服务器端技术(如ASP.NET)来处理和显示这些数据。...
使用C#处理XML文件,我们可以利用System.Xml命名空间中的类,如XmlDocument、XmlNode和XmlElement等来解析和操作XML数据。 2. 邮件API:C#提供了System.Net.Mail命名空间,其中包含SmtpClient和MailMessage类,用于...
在本示例中,我们关注的是如何利用Ajax从服务器获取以XML(Extensible Markup Language)格式的数据,然后将这些数据绑定到前端的下拉框中,以及实现下拉框之间的联动效果。下面我们将详细探讨这一过程。 首先,XML...
4. **上传数据**:当需要向服务器上传数据时,通常包括文件上传和表单数据提交。文件上传涉及Multipart请求,可以使用RequestBody、OkHttp的RequestBody.create方法来创建。表单数据可以通过POST请求的RequestBody...
总之,这个项目展示了如何在Spring Cloud微服务架构中,利用Feign进行服务间通信,并且将数据以XML格式传输。通过结合Eureka服务发现、Feign声明式调用以及Jackson的XML支持,我们可以实现高效、灵活的服务间交互。
1. **获取OutputStream**:通过Socket实例,我们可以获取到OutputStream,用于向服务器发送数据: ```java OutputStream outputStream = socket.getOutputStream(); ``` 2. **写入数据**:使用DataOutputStream...