struts类型实现发送JSON格式数据到客户端的关键步骤

struts类型实现发送JSON格式数据到客户端的关键步骤,第1张

首先需要的包(struts核心包和json需要的包):

struts核心包:

json需要的包:

commons-logging-*.jar在导入struts核心包的时候就导入了,所以导入json包的时候可以去掉这个包

页面效果:

json_demo.jsp页面(该页面引用了jquery文件,我用的版本是jquery-1.8.2.js,如果使用版本不同,请自行修改):

01<%@ page language="java" contentType="text/htmlcharset=UTF-8"

02pageEncoding="UTF-8"%>

03<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

04<html>

05<head>

06<meta http-equiv="Content-Type" content="text/htmlcharset=UTF-8">

07<title>Simpleton Demo | struts+ajax返回json类型数据</title>

08

09<link rel="shortcut icon" type="image/x-icon" href="images/Icon.png" />

10<link rel="stylesheet" type="text/css" href="styles/base.css" />

11

12</head>

13<body background="images/bg.gif">

14

15<div id="div_json">

16<h5>录入数据</h5>

17<br />

18<form action="#" method="post">

19<label for="name">姓名:</label><input type="text" name="name" />

20<label for="age">年龄:</label><input type="text" name="age" />

21<label for="position">职务:</label><input type="text" name="position" />

22<input type="button" class="btn" value="提交结果"/>

23</form>

24<br />

25<h5>显示结果</h5>

26<br />

27<ul>

28<li>姓名:<span id="s_name">赞无数据</span></li>

29<li class="li_layout">年龄:<span id="s_age">暂无数据</span></li>

30<li class="li_layout">职务:<span id="s_position">暂无数据</span></li>

31</ul>

32</div>

33

34<div id="authorgraph"><img alt="" src="images/autograph.gif"></div>

35

36<script type="text/javascript" src="scripts/jquery-1.8.2.js"></script>

37<script type="text/javascript">

38

39/* 提交结果,执行ajax */

40function btn(){

41

42var $btn = $("input.btn")//获取按钮元素

43//给按钮绑定点击事件

44$btn.bind("click",function(){

45

46$.ajax({

47type:"post",

48url:"excuteAjaxJsonAction",//需要用来处理ajax请求的action,excuteAjax为处理的方法名,JsonAction为action名

49data:{//设置数据源

50name:$("input[name=name]").val(),

51age:$("input[name=age]").val(),

52position:$("input[name=position]").val()//这里不要加"," 不然会报错,而且根本不会提示错误地方

53},

54dataType:"json",//设置需要返回的数据类型

55success:function(data){

56var d = eval("("+data+")")//将数据转换成json类型,可以把data用alert()输出出来看看到底是什么样的结构

57//得到的d是一个形如{"key":"value","key1":"value1"}的数据类型,然后取值出来

58

59$("#s_name").text(""+d.name+"")

60$("#s_age").text(""+d.age+"")

61$("#s_position").text(""+d.position+"")

62

63},

64error:function(){

65alert("系统异常,请稍后重试!")

66}//这里不要加","

67})

68})

69}

70

71/* 页面加载完成,绑定事件 */

72$(document).ready(function(){

73btn()//点击提交,执行ajax

74})

75</script>

76</body>

77</html>

JsonAction.java代码

01package com.simpleton.demo.action

02

03import java.util.HashMap

04import java.util.Map

05

06import javax.servlet.http.HttpServletRequest

07

08import net.sf.json.JSONObject

09

10import org.apache.struts2.interceptor.ServletRequestAware

11

12import com.opensymphony.xwork2.ActionSupport

13

14public class JsonAction extends ActionSupport implements ServletRequestAware{

15private static final long serialVersionUID = 1L

16

17private HttpServletRequest request

18private String result

19

20public void setServletRequest(HttpServletRequest arg0) {

21this.request = arg0

22}

23public String getResult() {

24return result

25}

26public void setResult(String result) {

27this.result = result

28}

29

30/**

31 * 处理ajax请求

32 * @return SUCCESS

33 */

34public String excuteAjax(){

35

36try {

37//获取数据

38String name = request.getParameter("name")

39int age = Integer.parseInt(request.getParameter("age"))

40String position = request.getParameter("position")

41

42//将数据存储在map里,再转换成json类型数据,也可以自己手动构造json类型数据

43Map<String,Object>map = new HashMap<String,Object>()

44map.put("name", name)

45map.put("age",age)

46map.put("position", position)

47

48JSONObject json = JSONObject.fromObject(map)//将map对象转换成json类型数据

49result = json.toString()//给result赋值,传递给页面

50} catch (Exception e) {

51e.printStackTrace()

52}

53return SUCCESS

54}

55

56

57

58}

struts.xml中

01<?xml version="1.0" encoding="UTF-8"?>

02<!DOCTYPE struts PUBLIC

03"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

04"http://struts.apache.org/dtds/struts-2.0.dtd">

05<struts>

06

07<!--解决乱码-->

08<constant name="struts.i18n.encoding" value="UTF-8"></constant>

09

10<package name="simpleton" extends="struts-default,json-default">

11

12<action name="*JsonAction" method="{1}"class="com.simpleton.demo.action.JsonAction">

13<result name="fail"></result>

14<!-- 返回json类型数据 -->

15<result type="json">

16<param name="root">result<!-- result是action中设置的变量名,也是页面需要返回的数据,该变量必须有setter和getter方法 --></param>

17</result>

18</action>

19

20</package>

21

22</struts>

这样就可以完成一个简单json数据类型传递的demo了。

提交的话用post get 都可以啊 ajax也行

$.ajax({url:'xxxx.action',type:'post',dataType:'json',data:{x:1,y:2},success:function(result){alert(result)}})

你要是提交到页面 为什么用struts2呢? 应该提交到action吧 action把数据转发到另一个页面

xxx.json文件 ? 没有这样的吧,只能返回JSON数据格式的字符串或者JSON,返回文件都成下载了。如果返回JSON的话,你的action就不用返回SUCCESS了 返回NULL就行,response.gerWriter.printl(json) 就可以了,你的请求返回的数据就的这个action


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10655710.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存