Struts+Jquery+Ajax+Json应用实例

来源:互联网 发布:超级基因优化液txt 编辑:程序博客网 时间:2024/05/22 01:29
一、开发环境

Eclipse

1、JAR包:Struts的最小JAR包,JSON插件(这些包都可以在struts的示例工程中找到)。

下面的commons-lang-2.4.jar、commons-lang3-3.2.jar包都需要,缺少commons-lang-2.4.jar包会报错。应该是json-lib-2.3-jdk15.jar所依赖的低版本的包。


2、jquery文件:https://code.jquery.com/jquery-1.12.4.min.js

二、配置文件

1、在web.xml中添加代码

  <filter>    <filter-name>struts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern>    <url-pattern>*.action</url-pattern>    <url-pattern>*.do</url-pattern>  </filter-mapping>

2、struts.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>    <constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="true" /><constant name="struts.action.extension" value="action,do" /><!-- 同时支持*.do, *.action两种后缀名的请求 --><constant name="struts.i18n.encoding" value="UTF-8"></constant><!--解决乱码    -->    <package name="default" namespace="/" extends="struts-default,json-default">        <default-action-ref name="index" />        <global-results>            <result name="error">/error.jsp</result>        </global-results>        <global-exception-mappings>            <exception-mapping exception="java.lang.Exception" result="error"/>        </global-exception-mappings>        <action name="*AjaxAction" method="{1}" class="demo.action.AjaxAction">            <result type="json">            <param name="root">result</param>            </result>            <result name="showme" type="dispatcher">/jsondemo.jsp</result>        </action>        <action name="*" class="demo.action.BaseAction">        <result>/{1}.jsp</result>        </action>    </package>    <!-- Add packages here --></struts>

三、添加Action代码

1、User.java

package demo.domain;public class User {private String  name;private Integer age;    private String  position;public User() {super();}public User(String name, Integer age, String position) {super();this.name = name;this.age = age;this.position = position;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getPosition() {return position;}public void setPosition(String position) {this.position = position;}@Overridepublic String toString() {StringBuilder builder = new StringBuilder();builder.append("User [name=");builder.append(name);builder.append(", age=");builder.append(age);builder.append(", position=");builder.append(position);builder.append("]");return builder.toString();}}

1、BaseAction.java

package demo.action;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport {private static final long serialVersionUID = 1864699266509075017L;public static final Log log = LogFactory.getLog(BaseAction.class);}

2、AjaxAction.java

package demo.action;import net.sf.json.JSONObject;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import demo.domain.User;public class AjaxAction extends BaseAction {private static final long serialVersionUID = 557651715559513817L;public static Log log = LogFactory.getLog(AjaxAction.class);private String  name;private Integer age;    private String  position;private String result;public String execute() throws Exception{User user = new User(name,age,position);log.info(user);result = JSONObject.fromObject(user).toString();log.info(result);return SUCCESS;}public String do1(){User user = new User(name,age,position);log.info(user);result = JSONObject.fromObject(user).toString();log.info(result);return SUCCESS;}public String getResult() {return result;}public void setResult(String result) {this.result = result;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getPosition() {return position;}public void setPosition(String position) {this.position = position;}}

四、添加JSP页面

1、index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>error</title></head><body><H1>Welcome to struts ajax</H1><div><a href="jsondemo.jsp">示例1(测试struts+jquery+ajax+json)</a></div><div><a href="jsondemo2.jsp">示例2(测试struts+jquery+ajax+json)</a></div><div><a href="jquerydemo.jsp">示例3(主要测试jquery)</a></div></body></html>

2、jquerydemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!doctype html><html><head>    <meta charset="utf-8">    <title>Demo</title></head><body>阻止正常链接点击事件    <a href="jsondemo.jsp">jsondemo</a>    <script src="js/jquery-1.12.4.min.js"></script>    <script>     $( document ).ready(function() {        $( "a" ).click(function( event ) {            alert( "The link will no longer take you to jsondemo" );            event.preventDefault();        });    });     </script></body></html>

3、jsondemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>struts ajax demo</title> <link href="css/style.css" rel="stylesheet" type="text/css" media="screen"/></head><body> <script type="text/javascript">  //alert('hello'); </script>  <div>  <h5>录入数据</h5>        <br />        <form action="#" method="post">            <label for="name">姓名:</label><input type="text" name="name" />            <label for="age">年龄:</label><input type="text" name="age" />            <label for="position">职务:</label><input type="text" name="position" />            <input id="btnsubmit" type="button" class="btn" value="提交结果"/>        </form>        <br /> </div> <div>     <h5>显示结果</h5>     <br />        <ul>            <li>姓名:<span id="s_name">赞无数据</span></li>            <li class="li_layout">年龄:<span id="s_age">暂无数据</span></li>            <li class="li_layout">职务:<span id="s_position">暂无数据</span></li>        </ul> </div> <script  type="text/javascript" src="js/jquery-1.12.4.min.js"></script> <script type="text/javascript">  //$("#btnsubmit").on("click",function(event){  $("#btnsubmit").click(function(event){   $.ajax({    type:"post",    url: "AjaxAction.action",    data:{     name:$("input[name=name]").val(),     age:$("input[name=age]").val(),     position:$("input[name=position]").val()    },    dataType:"json",//设置返回数据类型为json    success: function( data ) {     var d = eval("("+data+")");//将数据转换成json类型,具体查看javascript eval()函数功能     $("#s_name").text(""+d.name+"");     $("#s_age").text(""+d.age+"");     $("#s_position").text(""+d.position+"");    },    error:function(){     alert("系统异常,请核对输入参数设置是否正确!");    }   });  }); </script></body></html>

4、jsondemo2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>struts ajax demo</title><link href="css/style.css" rel="stylesheet" type="text/css" media="screen"/><script  type="text/javascript" src="js/jquery-1.12.4.min.js"></script></head><body><div><h5>录入数据</h5>        <br />        <form action="#" method="post">            <label for="name">姓名:</label><input type="text" name="name" />            <label for="age">年龄:</label><input type="text" name="age" />            <label for="position">职务:</label><input type="text" name="position" />            <input id="btnsubmit" type="button" class="btn" value="提交结果"/>        </form>        <br /></div><div>    <h5>显示结果</h5>    <br />        <ul>            <li>姓名:<span id="s_name">赞无数据</span></li>            <li class="li_layout">年龄:<span id="s_age">暂无数据</span></li>            <li class="li_layout">职务:<span id="s_position">暂无数据</span></li>        </ul></div><script type="text/javascript">/* 页面加载完成,绑定事件 */$(document).ready(function(){console.log('loading...');//$("#btnsubmit").on("click",function(event){//$("#btnsubmit").bind("click",function(event){$("#btnsubmit").click(function(event){$.ajax({type:"post",url: "AjaxAction.action",data:{name:$("input[name=name]").val(),age:$("input[name=age]").val(),position:$("input[name=position]").val()},dataType:"json",//设置需要返回的数据类型success: function( data ) {//eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。//如果s语句执行结果是一个值,则返回此值,否则返回undefined。////需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号()括起来才会返回值var d = eval("("+data+")");//将数据转换成json类型//得到的d是一个形如{"key":"value","key1":"value1"}的数据类型,然后取值出来$("#s_name").text(""+d.name+"");$("#s_age").text(""+d.age+"");$("#s_position").text(""+d.position+"");},error:function(){alert("系统异常,请核对输入参数设置是否正确!");}});});});</script></body></html>

五、测试运行


六、完整包
完整eclipse工程包下载

七、参考文档
略




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为照片不见了怎么办 电话卡暂停服务怎么办 电脑屏幕居中了怎么办 冰箱霜太多怎么办 qq账号忘了怎么办没有邮箱怎么办 车祸赔不起怎么办对方天天闹怎么办 专家解读有口臭怎么办口气重怎么办 油锅起火时应该怎么办或者怎么办 淘宝买了东西想改地址怎么办怎么办 手机显示程序异常这是怎么办怎么办 钢笔笔尖坏了怎么办 陶瓷刀钝了怎么办 地下城fps低怎么办 床头只能朝西怎么办 钢笔笔尖歪了怎么办 钢笔笔尖漏墨怎么办 被蜈蚣咬了怎么办 信用卡被盗刷了怎么办 练太极拳膝盖痛怎么办 僵尸毛毛虫咬了怎么办 迅雷下载速度慢怎么办 驾驶证换证过期怎么办 发生地震时该怎么办 尿常规潜血十3怎么办 尿酮体弱阳性怎么办 蔡英文当选大陆怎么办 维基百科打不开怎么办 陶瓷刀不快了怎么办 豆浆机刀片钝了怎么办 床头只能向西怎么办 施耐德钢笔漏墨怎么办 被人肉搜索了怎么办 智齿牙龈肿了怎么办 长智齿牙龈肿痛怎么办 长智齿好痛怎么办 耳朵发炎出脓怎么办 怎么办加油卡最划算 家里有小蜈蚣怎么办 家里经常有蜈蚣怎么办 孕妇被蜈蚣咬伤怎么办 小痰盂跑焦怎么办