zoukankan      html  css  js  c++  java
  • struts2下通过ajax返回json的两种方式

          本实例主要是解释在struts2下通过jquery的ajax从后台获取json数据,返回前台进行显示,记录学习的脚步!

    前台 index.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%>">
        
        <title>My JSP 'index.jsp' starting page</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">
    	<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
    	
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    	
    	<script type="text/javascript">
    	<!--
    		$(function(){
    		
    			//使用response直接返回json数据		
    			$("#send1").on("click",function(){
    				console.log("按钮的单击事件");
    				console.log("开始ajax");
    				$.ajax({
    					url:"json_test/json_jsonStream",
    					type:"get",
    					dataType:"json",
    					success:function(data){
    					console.log(data);
    					},
    					error:function(){
    						console.log("ajax出错");
    					}
    				});
    			});
    			
    			//使用json插件返回,即设置result的type="json"
    			$("#send2").on("click",function(){
    				console.log("按钮2的单击事件");
    				console.log("开始ajax");
    				$.ajax({
    					url:"json_test/json_jsonStreamResult",
    					type:"get",
    					dataType:"json",
    					success:function(data){
    						console.log(data);
    					},
    					error:function(){
    						console.log("ajax出错");
    					}
    				});
    			});
    		});
    	
    	//-->
    	</script>
    	
      </head>
      
      <body>
        <div id="disContent">
        	显示未发起ajax的信息
        </div>
        <input type="button" value="发起ajax1" id="send1" /><br/>
        <input type="button" value="发起ajax2" id="send2" /><br/>
      </body>
    </html>
    

    很简单 只是两个按钮 分别绑定单击事件 发起两个ajax


    配置文件 struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
       
      <!-- 	 打开开发者模式 -->
     	<constant name="struts.devMode" value="true"></constant>
    	<constant name="struts.configuration.xml.reload" value="true"></constant>
    
    
    	<!-- 本实例用于测试struts2通过ajax返回json的两种方式 -->
    	<package name="json" namespace="/json_test" extends="struts-default,json-default">
    		<action name="json_*" class="com.undergrowth.action.JsonTest" method="{1}">
    		  <result type="json">
    		   <param name="root">returnJsonString</param>
    		  </result>
    		</action>
    	</package>
    </struts>    
    

    中间的Action  JsonTest.java

    package com.undergrowth.action;
    
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONObject;
    
    import org.apache.struts2.ServletActionContext;
    
    public class JsonTest {
    	
    	//用于使用json插件来返回的值
    	private String returnJsonString;
    	
    	
    	public String getReturnJsonString() {
    		return returnJsonString;
    	}
    
    	public void setReturnJsonString(String returnJsonString) {
    		this.returnJsonString = returnJsonString;
    	}
    
    	//ͨ通过response的输出流来返回json数据
    	public  void jsonStream()
    	{
    		try {
    			//获取响应response
    			HttpServletResponse response=ServletActionContext.getResponse();
    			//设置响应的内容类型
    			response.setContentType("application/json;charset=utf-8");
    			//获取输出流
    			PrintWriter pw=response.getWriter();
    			String jsonString = fillJsonData();
    			
    			pw.write(jsonString);
    			pw.flush();
    			pw.close();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    	
    	//通过使用json插件来返回json
    	public String jsonStreamResult()
    	{
    		returnJsonString=fillJsonData();
    		return "success";
    	}
    	
    	
    	//填充json的数据
    	private String fillJsonData() {
    		Map<String, Object> jsonMap=new HashMap<String, Object>();
    		jsonMap.put("姓名", "李彦宏");
    		jsonMap.put("薪水", "20k");
    		JSONObject jsonObject=JSONObject.fromObject(jsonMap);
    		String jsonString=jsonObject.toString();
    		return jsonString;
    	}
    	
    }	
    

    2.测试 



  • 相关阅读:
    .NET Interop 工具集
    关于正弦波的算法
    Windows Phone 系列 本地数据存储
    Xaml cannot create an instance of “X”
    Windows Phone 系列 使用 MVVM绑定时无法获取当前值
    Windows Phone 系列 应用程序图标无法显示
    Windows Phone 系列 WPConnect无法上网的问题
    Windows Phone 系列 使用 Windows Phone 保存铃声任务
    WP7.5提交应用
    Windows Phone 系列 动态删除ObservableCollection
  • 原文地址:https://www.cnblogs.com/liangxinzhi/p/4275582.html
Copyright © 2011-2022 走看看