zoukankan      html  css  js  c++  java
  • struts 2 中AJAX的使用及Struts 2 JSON的使用

      这两天不看到不少人在Struts 2中使用AJAX的方法都是错的(或者说是过时的),所以想起写这么一片博客,来告诉大家Struts 2中的AJAX是怎么用的。

      如果大家对Struts 2的文档很了解,并且有一定的英文文档阅读能力,推荐大家去参考Struts 2的官方文档。

      官方文档相关内容:

      如果不会阅读Struts 2的文档,或者英文阅读能力有限,可以参考我下面的内容(当然,这里所介绍的只是最简单的使用方法)。

    1. Struts 2中使用AJAX

        Struts 1和Struts 2都能使用如下代码实现AJAX的使用:

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("Hello World! This is an AJAX response from a Struts Action.");
    out.flush();
    return null;

        然而这是一种过时的方法,不是不能用,而是不推荐(并且这里面经常会出现一些字符编码问题,所以并不推荐使用)。

        Struts 2中可以使用InputStream实现:

    Action类:

    package actions;

    import java.io.InputStream;
    import java.io.StringBufferInputStream;
    import com.opensymphony.xwork2.ActionSupport;

    public class TextResult extends ActionSupport {
    private InputStream inputStream;
    public InputStream getInputStream() {
    return inputStream;
    }

    public String execute() throws Exception {
    inputStream = new StringBufferInputStream("Hello World! This is a text string response from a Struts 2 Action.");
    return SUCCESS;
    }
    }

    配置文件struts.xml:

    <action name="text-result" class="actions.TextResult">
    <result type="stream">
    <param name="contentType">text/html</param>
    <param name="inputName">inputStream</param>
    </result>
    </action>

      这样,我们只需要更改Action类中的inputStream值,就能够实现AJAX输出啦。

    2. Struts 2中使用JSON

      首先,请Struts 2.1.7+的用户引入下载的Struts 2包集合中的struts2-json-plugin.jar

      Struts 2.1.7一下的用户,请去下载该Plugin包,改包位置在Google Code上有发布。(现在已经停止更新了,推荐使用新版本Struts 2框架。)

      之后,Action类不需要更改,只需要在struts.xml文件中配置相关内容就可以使用了。(很便利的~)

      配置文件如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>

    <package name="example" extends="json-default">
    <action name="JSONExample" class="example.JSONExample">
    <result type="json"/>
    </action>
    </package>

    </struts>

       请注意如下几点:

    • package的extends是“json-default”,如果没有继承这个包,则会抛出异常,显示没有result type为json
    • result的type请设置为json
    • 前台JavaScript代码,请使用JSON格式接收。(如jQuery请设置AJAX的dataType为json)

       至此,就可以使用JSON了。如果需要更高级的操作,请自行参考文档。

  • 相关阅读:
    lucene倒排索引瘦身的一些实验——merge的本质是减少cfx文件 变为pos和doc;存储term vector多了tvx和tvd文件有337M
    lucene Index Store TermVector 说明
    Lucene in action 笔记 term vector——针对特定field建立的词频向量空间,不存!不会!影响搜索,其作用是告诉我们搜索结果是“如何”匹配的,用以提供高亮、计算相似度,在VSM模型中评分计算
    Kappa:比Lambda更好更灵活的实时处理架构
    Lucene 的四大索引查询 ——bool 域搜索 通配符 范围搜索
    lucene 5可以运行的demo
    lucene 5的测试程序——API变动太大
    随机生成50个字段的elasticsearch的测试程序输入
    NOSQL安全攻击
    容斥原理及应用
  • 原文地址:https://www.cnblogs.com/rainisic/p/struts2_ajax_json.html
Copyright © 2011-2022 走看看