第十九講:ExtJS與服務器交互

一、向服務器發送請求。

1.通過Ext.Ajax.request向服務器發送請求。

2.通過url屬性來指定發送請求的地址。

3.通過params屬性來設置請求參數。(參數的格式是核心)

4.callback屬性來指定回調函數。

示例一:發送請求。//這個格式就非常的簡單了,但是實際中這樣用的並不多

Ext.Ajax.request({

url:"loginServer.jsp",

params:{

username:"lifengxing",

password:"123"

},

callback:function(options,success,response){

if(success){

alert(response.responseText)

}

}

})

請求頁面loginServet.jsp。

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%

String username = request.getParameter("username");

String password = request.getParameter("password");

String msg = "";

if(username.equals("lifengxing") && password.equals("123")){

msg = "登陸成功";

}else{

msg = "登陸失敗";

}

response.getWriter().write(msg);

%>

示例二:異步提交表單。(參數相當於是一個表單了)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

  <head>

    <title>Request</title>

  <script type="text/javascript" src="../Ext/adapter/ext/ext-base.js"></script>

     <script type="text/javascript" src="../Ext/ext-all-debug.js"></script>

     <link rel="stylesheet" type="text/css" href="../Ext/resources/css/ext-all.css"></link>

     <script type="text/javascript" src="TestRequest2.js"></script>

  </head>

  

  <body>

   <form id="loginForm">

   用戶名:<input type="text" name="username"/><br />

   密碼:<input type="password" name="password"/><br />

   <input type="button" value="登陸" onclick="login()" />

   </form>

  </body>

</html>

 

function login() {

Ext.Ajax.request({

url:"loginServer.jsp",

form:"loginForm",

callback:function(options,success,response){

if(success){

alert(response.responseText)

}

}

})

}

 

二、向服務器發送XML數據。

function login() {

Ext.Ajax.request({

url:"loginServerXML.jsp",

xmlData:createXML(),

callback:function(options,success,response){

if(success){

alert(response.responseText)

}

}

})

}

 

function createXML(){

//獲得表單值

var uname = document.forms["loginForm"].username.value;

var pw = document.forms["loginForm"].password.value;

//創建XML文檔對象

var dom = new ActiveXObject("msxml2.DOMDocument");

//頭部聲明

var header = dom.createProcessingInstruction("xml", "version='1.0'");

dom.appendChild(header);

var root = dom.createElement("userinfo");

var username = dom.createElement("username");

username.text = uname;

var password = dom.createElement("password");

password.text = pw;

root.appendChild(username);

root.appendChild(password);

dom.appendChild(root);

return dom;

}

 

服務器解析XML數據。

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%@ page import="org.dom4j.*"%>

<%@ page import="org.dom4j.io.*"%>

<%

SAXReader sax = new SAXReader();

Document document = sax.read(request.getInputStream());

Element root = document.getRootElement();

String username = root.element("username").getStringValue();

String password = root.element("password").getStringValue();

String msg = "";

if(username.equals("lifengxing") && password.equals("123")){

msg = "登陸成功";

}else{

msg = "登陸失敗";

}

response.getWriter().write(msg);

%>

注意:需要導入dom4j這個JAR包

三、向服務器發送Json數據。

function login() {

Ext.Ajax.request({

url:"loginServerJson.jsp",

jsonData:createJson(),

callback:function(options,success,response){

if(success){

alert(response.responseText)

}

}

})

}

 

function createJson() {

var uname = document.forms["loginForm"].username.value;

var pw = document.forms["loginForm"].password.value;

var jsonObject = {

username : uname,

password : pw

}

return jsonObject;

}

服務器解析Json數據。

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%@ page import="net.sf.json.*"%>

<%@page import="java.io.BufferedReader;"%>

<%

BufferedReader in = request.getReader();

StringBuffer jsonStr = new StringBuffer();

String str = "";

while((str = in.readLine()) != null) {

jsonStr.append(str);

}

 

JSONObject jsonObject = JSONObject.fromObject(jsonStr.toString());

 

String username = jsonObject.getString("username");

String password = jsonObject.getString("password");

String msg = "";

if(username.equals("lifengxing") && password.equals("123")){

msg = "登陸成功";

}else{

msg = "登陸失敗";

}

response.getWriter().write(msg);

%>

注意:需要導入如下幾個JAR包。

commons-beanutils.jar

commons-lang.jar

ezmorph-1.0.6.jar

json-lib-1.1-jdk15.jar

commons-logging-1.1.jar

commons-collections-3.1.jar

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章