struts-2-json

来源:互联网 发布:精灵香水淘宝店铺证吗 编辑:程序博客网 时间:2024/06/06 13:57

环境:

  eclipse+jdk8+tomcat+struts-2.3.32-min-lib.zip

对应的xml:

struts.xml中:

<!-- package 6 --><!-- 1.使用域对象字段驱动方式的数据传递 2.json数据返回到页面和到ajaxstrutscxk/login.jsp进行测试--><include file="jsonandvaluegetset.xml"></include> 

jsonandvaluegetset.xml中:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC   "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="getsetValue" extends="struts-default,json-default"><!-- 使用域对象字段驱动方式的数据传递 --><action name="cxk_*" method="{1}" class="com.core.UserAction"><result>success.jsp</result></action><action name="modeltest" class="com.core.ModelUserGetSetValueAction"><result>success.jsp</result></action><!-- 返回json数据 --><action name="json_*" method="{1}" class="com.core.UserAction"><!-- 当点击form表单时url:http://localhost:8080/studyStruts01/strutscxk/json_tojson进入UserAction对应的tojson方法将user对象序列化付给result返回"myajax" 对应下面result的name下面param中的location是对应返回的页面将user对象序列化付给result赋给<param name="result"在页面上便可以取到result --><result name="myajax"><param name="location">success.jsp</param><param name="result">result</param></result></action> <!-- 利用ajax访问在success中得到json数据1.包需要这样做:package name="getsetValue" extends="struts-default,json-default"2.在result中设置type="json"3.应为不用返回页面(如果返回页面可以做模板技术),所以直接设置需要返回的值将com.core.UserAction的ajaxgetjson中序列化user的得到result返回书写的方法如下 --><action name="getmy_*" method="{1}"  class="com.core.UserAction"><result type="json" name="ajaxvalue"><param name="result">result</param></result></action></package></struts>


UserAction类:

package com.core;import org.apache.struts2.json.JSONException;import org.apache.struts2.json.JSONUtil;import com.entity.User;import com.opensymphony.xwork2.ActionSupport;public class UserAction {public String gsvalue(){System.out.println("获取的值=========username:"+user.getUsername()+"===password:"+user.getPassword()+"=="+sex);return "success";}public String tojson(){try {result = JSONUtil.serialize(user);} catch (JSONException e) {e.printStackTrace();}return "myajax";}public String ajaxgetjson(){System.out.println("===jin");System.out.println("========"+user.getUsername());try {result = JSONUtil.serialize(user);} catch (JSONException e) {e.printStackTrace();}return "ajaxvalue";}/** * 直接使用与对象作为属性驱动 * 1.定义一个类如User * 2.在Action中定义User user * 3.生成get/set方法 * 4.在页面传值用user.username 具体参见strutscxk/login.jsp页面 *  * 也可以直接在action中定义页面传递过来变量的值,并生成get/set方法 */private User user;//并且生成get set方法private String sex;private String result;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getResult() {return result;}public void setResult(String result) {this.result = result;}}

ModelUserGetSetValueAction类:

package com.core;import com.entity.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ModelDriven;/** * 模型驱动注入值 * 创建人:曹雪坤 * 时间:2016年12月23日-下午4:25:27  * @version 1.0.0 * */public class ModelUserGetSetValueAction implements ModelDriven<User>{private User user = new User();@Overridepublic User getModel() {return user;}//上面是模型驱动注入值必须的public String execute(){System.out.println("===jin"+user.getUsername());return Action.SUCCESS;}}

对应的jsp页面:

login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML><html>  <head>    <title>My JSP 'login.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">  </head>    <body>  属性驱动注入值得方法:<br>  <form action="cxk_gsvalue" method="post">  用户:<input  type="text" name=user.username ><br>  <br>  密码:<input  type="password" name="user.password"><br>  <br>  性别:<input type="text" name="sex"/><br>  <br>  <input type="submit" value="登陆"></form><br><br><br><pre>public class ModelUserGetSetValueAction implements ModelDriven<User>{private User user = new User();@Overridepublic User getModel() {return user;}//上面是模型驱动注入值必须的</pre>模型驱动注入值:<br>  <form action="modeltest" method="post">  用户:<input  type="text" name=username ><br>  <br>  密码:<input  type="password" name="password"><br>  <br>  年龄:<input type="text" name="age"/><br>  <br>  <input type="submit" value="登陆"></form><br><br><br>json:<br><form action="json_tojson" method="post">  用户:<input  type="text" name=user.username ><br>  <br>  密码:<input  type="password" name="user.password"><br>  <br>  <input type="submit" value="登陆"></form><br><br><br>ajax方法得到ajax:<br><span id="clickme" style="cursor:pointer;color:red;font-weight:900">点击我利用ajax获取数据</span>   <br><br><br><br><br><br><script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script><script type="text/javascript">var clickme = document.getElementById("clickme");clickme.onclick = function(){var username = "ajax测试哦";var password = "你猜";var age = 3;var param = "备用参数ajax";$.ajax({type:"post",url:"getmy_ajaxgetjson",data:{"user.username":username,"user.password":password,"user.age":age,"user.param":param},success:function(data){var tojson = JSON.stringify(data);alert(tojson);}}); }/* var username = "ajax测试哦";var password = "你猜";var age = 3;var param = "备用参数ajax";$.ajax({type:"post",url:"../json_tojson",data:{"user.username":username,"user.password":password,"user.age":age,"user.param":param},success:function(data){alert(data);}}); */</script>  </body></html>

success.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML><html>  <head>    <title>My JSP 'success.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">  </head>    <body>   属性驱动注入值方式取值:用户名:${user.username}====密码:${user.password}==年龄:${user.age }++++性别${sex}   <br/>   json数据格式的string:${result}<br />   模型驱动注入值方式取值:用户名${username}==密码:${password}==年龄${age}  </body></html>










原创粉丝点击