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.测试 



  • 相关阅读:
    MonoRail学习Component
    Eclipse中用户库的使用
    ASP.Net2.0中自定义控件在page中的注册
    WF学习Console Workflow Application
    Which Style of Workflow When?[转]
    使用UserControl时,在Page中定义方式
    参数类型异常
    GridView使用一些记录
    在使用Mybatis进行测试时出现报错:Caused by: java.lang.ClassNotFoundException: Cannot find class: Student
    递归反向输出字符串
  • 原文地址:https://www.cnblogs.com/liangxinzhi/p/4275582.html
Copyright © 2011-2022 走看看