zoukankan      html  css  js  c++  java
  • Struts2+JSON+JQUERY DEMO

    看到别人用了Struts2和JSON,自己也想练练手。记录下练习过程中遇到的问题,以便参考。

    使用Maven新建项目:

    先挂上pom.xml

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <groupId>com.sk</groupId>
     5     <artifactId>struts</artifactId>
     6     <packaging>war</packaging>
     7     <version>0.0.1-SNAPSHOT</version>
     8     <name>struts Maven Webapp</name>
     9     <url>http://maven.apache.org</url>
    10     <dependencies>
    11         <dependency>
    12             <groupId>junit</groupId>
    13             <artifactId>junit</artifactId>
    14             <version>3.8.1</version>
    15             <scope>test</scope>
    16         </dependency>
    17         <!-- Log -->
    18         <dependency>
    19             <groupId>org.apache.logging.log4j</groupId>
    20             <artifactId>log4j-api</artifactId>
    21             <version>2.0-beta7</version>
    22         </dependency>
    23         <dependency>
    24             <groupId>org.apache.logging.log4j</groupId>
    25             <artifactId>log4j-core</artifactId>
    26             <version>2.0-beta7</version>
    27         </dependency>
    28 
    29         <!-- Struts2 -->
    30         <dependency>
    31             <groupId>org.apache.struts</groupId>
    32             <artifactId>struts2-core</artifactId>
    33             <version>2.3.1.2</version>
    34         </dependency>
    35         <dependency>
    36             <groupId>org.apache.struts</groupId>
    37             <artifactId>struts-taglib</artifactId>
    38             <version>1.3.10</version>
    39         </dependency>
    40 
    41         <!-- servlet -->
    42         <dependency>
    43             <groupId>javax.servlet</groupId>
    44             <artifactId>servlet-api</artifactId>
    45             <version>2.5</version>
    46         </dependency>
    47 
    48         <!-- JSON LIB -->
    49         <dependency>
    50             <groupId>net.sf.json-lib</groupId>
    51             <artifactId>json-lib</artifactId>
    52             <version>2.2.3</version>
    53             <classifier>jdk15</classifier>
    54         </dependency>
    55         <!-- 如果缺少这个插件的话机会报: Unable to find parent packages json-default 这个错误折磨了我大半天,后来自己仔细看看tomcate启动日志发现了这个错误,经查询,是缺少了 
    56             struts2-json-plugin-2.1.8.1.jar 这个包,因为struts2默认是以插件形式进行加载的,所以是少加载的json处理的包。加入这个包运行正常。如果没有这个包的话。 
    57             运行时会报There is no Action mapped for namespace·······所有的Action都不能运行。 -->
    58         <dependency>
    59             <groupId>org.apache.struts</groupId>
    60             <artifactId>struts2-json-plugin</artifactId>
    61             <version>2.3.15</version>
    62         </dependency>
    63 
    64 
    65 
    66 
    67     </dependencies>
    68     <build>
    69         <plugins>
    70             <plugin>
    71                 <groupId>org.apache.maven.plugins</groupId>
    72                 <artifactId>maven-compiler-plugin</artifactId>
    73                 <version>3.0</version>
    74                 <configuration>
    75                     <source>1.7</source>
    76                     <target>1.7</target>
    77                 </configuration>
    78             </plugin>
    79         </plugins>
    80     </build>
    81 
    82 </project>

    再整个VO:User.java

     1 package com.sk.struts2.bean;
     2 
     3 import java.io.Serializable;
     4 
     5 public class User implements Serializable {
     6 
     7     private String id;
     8     private String username;
     9     private String pwd;
    10         // 省略setter和getter
    11 }

    然后是action:JSONAction.java

     1 package com.sk.struts2.action;
     2 
     3 import net.sf.json.JSONObject;
     4 
     5 import com.opensymphony.xwork2.ActionSupport;
     6 import com.sk.struts2.bean.User;
     7 
     8 public class JSONAction extends ActionSupport {
     9 
    10     private static final long serialVersionUID = -795596058695827298L;
    11     
    12     private User user;
    13     private String jsonString;
    14 
    15     @Override
    16     public String execute() throws Exception {
    17         JSONObject jsonObject = null;
    18         if(user != null){
    19             jsonObject = JSONObject.fromObject(user);
    20             jsonString = jsonObject.toString();
    21             System.out.println(jsonString);
    22         }
    23         return SUCCESS;
    24     }
    25 
    26     public User getUser() {
    27         return user;
    28     }
    29 
    30     public void setUser(User user) {
    31         this.user = user;
    32     }
    33 
    34     public String getJsonString() {
    35         return jsonString;
    36     }
    37 
    38     public void setJsonString(String jsonString) {
    39         this.jsonString = jsonString;
    40     }
    41     
    42 }

    接着是View:json.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="ISO-8859-1"%>
     3 <%@ taglib prefix="s" uri="/struts-tags" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>Hello World!</title>
     9 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    10 <script type="text/javascript" src="<%= request.getContextPath() %>/resources/js/json.js"></script>
    11 </head>
    12 <body>
    13     <form> 
    14         ID:<input type="text" name="user.id"/><br />
    15         username:<input type="text" name="user.username"/><br />
    16         pwd:<input type="text" name="user.pwd"/>
    17         
    18         <input id="btn" type="button" value="submit" />
    19     </form> 
    20     
    21     <h2>Here is result:</h2>
    22     <div id="result"></div>
    23 </body>
    24 </html>

    还有JS:json.js

     1 $(function(){
     2     $('#btn').click(function(){
     3         var params=$("input").serialize();
     4         var actionPath = getRootPath() + "/jsonTest/jsonAction";
     5         
     6         $.ajax({
     7             url: actionPath,
     8             // 数据发送方式
     9             type: "post",
    10             // 接受数据格式
    11             dataType : "json",
    12             // 要传递的数据
    13             data : params,
    14             // 回调函数,接受服务器端返回给客户端的值,即result值
    15             success : show   
    16         }).always(function(){alert('done');});
    17     });
    18 });
    19 
    20 function show(result){
    21     //测试result是否从服务器端返回给客户端
    22     //alert(result);
    23     //解析json对象
    24     var json = eval("("+result+")");
    25     var obj = "编号: "+json.id+"  用户名: "+json.username+"  密码: "+json.pwd;
    26     $("#result").html(obj);
    27 }
    28 
    29 //js获取项目根路径,如: http://localhost:8083/uimcardprj
    30 function getRootPath(){
    31     //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
    32     var curWwwPath=window.document.location.href;
    33     //获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
    34     var pathName=window.document.location.pathname;
    35     var pos=curWwwPath.indexOf(pathName);
    36     //获取主机地址,如: http://localhost:8083
    37     var localhostPaht=curWwwPath.substring(0,pos);
    38     //获取带"/"的项目名,如:/uimcardprj
    39     var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
    40     return(localhostPaht+projectName);
    41 }

    最后奉上:struts.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7 
     8     <constant name="struts.devMode" value="true" />
     9     
    10     <package name="test" namespace="/jsonTest" extends="json-default">
    11         <action name="jsonAction" class="com.sk.struts2.action.JSONAction">
    12             <result type="json">
    13                 <!-- 此处将reslut的值返回给客户端,root的值对应要返回的值的属性result.注意:root为固定写法,否则不会把result的值返回给客户端 -->
    14                 <param name="root">jsonString</param>
    15             </result>
    16         </action>
    17     </package>
    18 
    19 </struts>

    ok,all done.下面测试哈:

    最后给个目录结构:

    OK.Enjoy!

  • 相关阅读:
    用c写一个小的聊天室程序
    socket相关的开机初始化分析
    HTML——CSS3学习
    iOS--OCR图片识别
    iOS学习——Socket
    iOS学习——数据加密
    iOS学习——并发编程GCD
    iOS学习——weak的应用场景
    iOS学习——RUNLOOP、NSTimer
    iOS学习——锁
  • 原文地址:https://www.cnblogs.com/JavaTechLover/p/Struts2-JSON-JQUERY.html
Copyright © 2011-2022 走看看