您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

【原】struts框架返回json数据

不忘初心 不忘初心 2019-04-30 围观() 评论() 点赞() 附件(1) JAVA开发

简介:在之前的几个框架案例中,都没有讲到Struts如何返回json数据,都是只返回了jsp页面,现在就基于ssm框架来给大家展示一下如何配置json响应。

在之前的几个框架案例中,都没有讲到Struts如何返回json数据,都是只返回了jsp页面,将之前的笔记翻了个遍,也没有找到相关的记录,看来是我自己遗漏了这块儿的知识点,现在就基于ssm框架来给大家展示一下如何配置json响应。

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配置,对应TestController中的json返回,如果非注解模式,可以参考此配置-->

    <package name="json" extends="json-default">
        <action name="book_list_json" class="com.ssm.controller.TestController" method="list_json">
            <result name="test_json" type="json">
                <!-- 默认将会序列所有有返回值的getter方法的值,而无论该方法是否有对应属性,可以使用root指定返回对象 -->
                <param name="root">students</param>
            </result>
            <!-- 指定是否序列化空的属性 -->
            <!--
            <param name="excludeNullProperties">true</param>
            -->
            <!-- 这里指定将序列化dataMap中的那些属性 -->
            <!--
            <param name="includeProperties">userList.*</param>
             -->
            <!-- 这里指定将要从dataMap中排除那些属性,这些排除的属性将不被序列化,一半不与上边的参数配置同时出现 -->
            <!--
            <param name="excludeProperties">SUCCESS</param>
            -->
        </action>
        <action name="book_list_page" class="com.ssm.controller.TestController" method="list_page">
            <result name="test_page">/book_list.jsp</result>
        </action>
    </package>

</struts> 

注解版:

package com.ssm.controller;

import com.ssm.entity.Book;
import com.ssm.entity.Student;
import com.ssm.service.BookService;
import com.ssm.service.StudentService;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import java.util.List;

@Controller
@Scope("prototype")
@Namespace("/test")
@ParentPackage("json-default")// 必须为json-default,而且json-default继承了struts-default
public class TestController extends BaseController {

    private List<Book> list;
    private List<Student> students;

    @Autowired
    private BookService bookService;
    @Autowired
    private StudentService studentService;

    /**
     * 返回json数据,@Result的参数也需要改变一下,页面使用location指定,json就需要用type参数来指定
     * <p>
     * 关于params参数的详细值,可以参考:{@link org.apache.struts2.json.JSONResult}
     * <p>
     * TestController定义了有get、set的变量,当我们想具体指定返回哪一个的时候,可以使用root参数,如:params = {"root", "students"},就只会返回students,而不会返回list
     */
    @Action(value = "book_list_json", results = {@Result(name = "test_json", type = "json", params = {"root", "list"})})
    public String list_json() {
        list = bookService.list(null);
        students = studentService.list(null);
        return "test_json";
    }

    /**
     * 由于json-default继承了struts-default,所以也同时支持返回页面
     */
    @Action(value = "book_list_page", results = {@Result(name = "test_page", location = "/book_list.jsp")})
    public String list_page() {
        list = bookService.list(searchText);
        return "test_page";
    }

    public List<Book> getList() {
        return list;
    }

    public void setList(List<Book> list) {
        this.list = list;
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }
}

启动项目之后,访问http://localhost:8080/test/book_list_json就可以看到json的返回了,如下图:

struts框架返回json数据

jsonstruts

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们