
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欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)