JavaEE-stuts2返回json数据简单实现

CSDN的ASK频道,看到关于struts2返回json数据的问题,整理了下struts2的简单demo,完成JSON数据的展示。

Action定义

public class ValidateAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private String username;
	public Map<String, Object> result = new HashMap<String, Object>();

	public Map<String, Object> getResult() {
		return result;
	}

	public String execute() throws Exception {
		if ("zhangsan".equals(username)) {
			result.put("message", "success结果");
			return Action.SUCCESS;
		}else {
			System.out.println("error结果");
			result.put("message", "error结果");
			return Action.ERROR;
		}
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
}

配置Action

<?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>
    <package name="default" extends="json-default">
        <action name="validate" class="ValidateAction">
			 <result type="json" />
			 <result name="error" type="json"></result>
		</action>
    </package>
</struts>  

页面访问json

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!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>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
	<title>Welcome to BoadVedio</title>
	<script type='text/javascript' src="<%=basePath%>resource/js/jquery-1.8.3.js"></script>
	<script type="text/javascript">
			var basePath = '<%=basePath%>';
	 		function validate(){
			    var username = document.getElementById("username").value;
			    $.ajax({
			        url:basePath+"validate.action",
			        type:"post",
			        dataType:"json",
			        data:{username:username},
			        success:function(data){
			        	var message = data.result.message;
			            $('#message').html(message);
			        },
			        error : function(XMLHttpRequest, textStatus, errorThrown) {
						alert("error when insert.");
					}
			    });
	 		}
	</script>
  </head>
  <body>
    <input type="text" name="username" id="username"/>
    <input type="button" value="提交" onclick="validate();"/>
    <div id="message"></div>
  </body>
</html>

测试基本功能没有问题。只是对于Action的返回值是SUCCESS还是ERROR,对页面是有影响的。上述配置,action配置中的success和error类型都是JSON,这样不管Action走入的是return SUCCESS还是ERROR分支,都会把成员变量result对象转化成JSON返回给页面的,ajax请求都是走入success分支中的。但是如果把error类型配置成一个jsp,那么,此时ajax的请求返回时是进入了error分支了

<struts>
    <package name="default" extends="json-default">
        <action name="validate" class="ValidateAction">
			 <result type="json" />
			 <result name="error" >/error.jsp</result>
		</action>
    </package>
</struts>

而且浏览器并没有自动跳转到error.jsp页面去。那么问题来了:为什么配置error为error.jsp的时候,ajax请求走入了error分支呢?这个应该是ajax请求的dataType类型设置成了json,如果此时Action返回了error.jsp,那么ajax会视为异常。

时间: 2024-10-19 10:39:24

JavaEE-stuts2返回json数据简单实现的相关文章

idea+springmvc+spring+mybatis+maven整合返回json数据webapi

首先看一张目录结构图: : 创建步骤: 1.创建maven  webapp工程, 创建完后的目录结构为: 2.添加项目依赖(添加jar包) 需要的jar包: spring-webmvc, spring-test, spring-orm, commons-dbcp, mybatis, mybatis-spring, mysql-connector-java, commons-fileupload, jstl,jackson-core, jackson-databind, jackson-mappe

android-async-http开源项目对服务器端返回JSON数据的处理

一.在JavaEE项目中搭建环境 1. 导入相关jar包 2. 搭建相关的包和类 3.类中的方法简单实现 User: 声明以下属性,并实现无参构造器和有参构造器,以及各自的get和set方法 UserDao: UserDaoImpl: JsonServlet: <span style="white-space:pre"> </span>protected void doGet(HttpServletRequest request, HttpServletResp

【Struts2】SSH如何返回JSON数据

  在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就是平常的配置 第一种方法是使用com.google.gson.Gson 将对象转化为Json字符串  (gson-1.6.jar) 主要的代码如下 1 package com.javen.tool; 2 3 import java.io.IOException; 4 import java.io.P

CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言 本文说明如何使用node-coap返回JSON数据包.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议文档--The Constrained Application Protocol (CoAP)] [CoAP协议学习--CoAP基础] [CoAP学习

PHP-------ajax返回值 返回JSON 数据

ajax返回值  返回JSON  数据 ajax返回值 有text   JSON ajax返回值  返回JSON  数据 1 <title>无标题文档</title> 2 <script src="../jquery-1.11.2.min.js"> 3 </script> 4 5 <!--ajax返回值 有text JSON--> 6 <!--ajax返回值 返回JSON 数据--> 7 8 9 10 11 <

返回json数据乱码

原因:在springMVC controller 中返回json数据出现乱码问题,因为没有进行编码,只需要简单的注解就可以了. 解决方案:在@RequestMapping中加入produces="text/html;charset=UTF-8" 属性. @RequestMapping(value="/search",produces = "text/json;charset=UTF-8") 解决后:

jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

ON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用.请接着往下看教程. XHTML  <ul id="userlist">    <li><a href="#" rel="1">张三</a></li>    <li><a href=&quo

Spring MVC3返回JSON数据中文乱码问题解决

Spring MVC3返回JSON数据中文乱码问题解决 查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题. Spring版本:3.2.2.RELEASE Jackson JSON版本:2.1.3 解决思路:Controller的方法中直接通过response向网络流写入String类型的json数据. 使用 Jackson 的 ObjectMapper 将Java对象转换为String类型的JSON数据. 为了避免中文乱码,需要设置字符编码格式,例如:UTF

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-