wchd842564177 发表于 2013-1-29 10:31:15

AJAX和JSON Web开发前后台交互

 
工具:myeclipse6.0
环境:支持Struts1.x的Javaweb动态工程
简介:ajax前后台的数据交互实现依赖于XMLHttpRequest对象;
         json实现将后台业务逻辑处理过的数据封装送给前台。
 
实例1:
前台JSP页面--pages/ajax.jsp
 
 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>    <base href="<%=basePath%>">    <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">--> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">      <title>ajax样例</title>      <style type="text/css">      td {width: 100px;}      </style>      <script type="text/javascript" src="/ajax/pages/json2.js"></script>      <script type="text/javascript">          function getXHR()          {            try            {                   return new XMLHttpRequest();            }            catch(e)            {                  try                  {                      return new ActiveXObject("Microsoft.XMLHTTP");                  }                  catch(e)                  {                      return new ActiveXObject("Msxml2.XMLHTTP");                  }            }          }                  function getInfo()          {            var xhr = getXHR();            xhr.open("POST", "/ajax/emp.do?method=getInfo", true);            xhr.onreadystatechange = function()               {                  if (xhr.readyState == 4)                   {                     var empInfo = JSON.parse(xhr.responseText);                      document.getElementById("id").value = empInfo.id;                      document.getElementById("name").value = empInfo.name;                      document.getElementById("age").value = empInfo.age;                      document.getElementById("sal").value = empInfo.sal;                     document.getElementById("desc").value = empInfo.desc;                     var sexRadios = document.getElementsByName("sex");                      for(var i=0;i<sexRadios.length;i++)                      {                        if(sexRadios.value == empInfo.sex)                              sexRadios.checked = true;                      }                  }            }            xhr.send();          }      </script></head>    <body>    <fieldset style="width: 300px">         <legend>人员信息</legend>         <table width="100%">               <tr><td>ID</td><td><input type="text" id="id" /></td></tr>               <tr><td>姓名</td><td><input type="text" id="name" /></td></tr>               <tr><td>年龄</td><td><input type="text" id="age" /></td></tr>               <tr><td>性别</td><td><input type="radio" value="0" name="sex" />男<input type="radio" value="1" name="sex" />女</td></tr>               <tr><td>薪资</td><td><input type="text" id="sal" /></td></tr>               <tr><td colspan="2">备注</td></tr>               <tr><td colspan="2"><textarea rows="5" id="desc" style="width: 100%"></textarea></td></tr>         </table>       </fieldset>       <input type="button" value="获取数据" /></body></html> 
配置Struts1.2支持--/ajax/WebRoot/WEB-INF/struts-config.xml:
 
 
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"          "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>    <action-mappings>      <action type="com.neusoft.ajax.EmpAction" scope="request" parameter="method" path="/emp" />    </action-mappings></struts-config> 
后台数据包装后发送到前台处理--/ajax/src/com/neusoft/ajax/EmpAction.java
 
 
package com.neusoft.ajax;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.json.JSONException;import org.json.JSONObject;public class EmpAction extends DispatchAction{    public ActionForward getInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,            HttpServletResponse response) throws IOException, JSONException    {      JSONObject obj = new JSONObject();      obj.put("id", 1001);      obj.put("name", "Will");      obj.put("age", 28);      obj.put("sex", 0);      obj.put("sal", 2000);      obj.put("desc", "some infomation");      response.getWriter().write(obj.toString());      return null;    }      public ActionForward getMsg(ActionMapping mapping, ActionForm form, HttpServletRequest request,            HttpServletResponse response) throws IOException, JSONException    {      response.getWriter().write("Hello,AlvinKing , A message from server");      return null;    }} 
实例2:
 
共用实例1的后台处理类,前台页面--/ajax/WebRoot/pages/ajax1.jsp
 
 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>    <base href="<%=basePath%>">    <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">--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ajax样例</title><style type="text/css"></style><script type="text/javascript">function getXHR(){try{   return new XMLHttpRequest();}catch(e){try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){return new ActiveXObject("Msxml2.XMLHTTP");}}}    function getMsg(){var xhr = getXHR();xhr.open("POST", "/ajax/emp.do?method=getMsg", true);xhr.onreadystatechange = function()   {if (xhr.readyState == 4)   {   document.getElementById("msg").value = xhr.responseText;}}xhr.send();}</script></head>    <body>   <textarea rows="5" cols="100" id="msg"></textarea>   <input type="button" value="获取数据" /></body></html> 最后配置工程启动xml,--/ajax/WebRoot/WEB-INF/web.xml
 
 
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"><web-app><display-name>ajax</display-name>    <!-- Standard Action Servlet Configuration --><servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>      <param-name>config</param-name>      <param-value>/WEB-INF/struts-config.xml</param-value>    </init-param>    <load-on-startup>2</load-on-startup> </servlet><!-- Standard Action Servlet Mapping --><servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>*.do</url-pattern></servlet-mapping><!-- The Usual Welcome File List --><welcome-file-list>    <welcome-file>pages/ajax.jsp</welcome-file></welcome-file-list></web-app>
页: [1]
查看完整版本: AJAX和JSON Web开发前后台交互