首页   >   代码编程

struts框架返回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数据

SSM_JSON.rar

下载次数: 6

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-04-30

永久地址:https://www.jiweichengzhu.com/article/dc0bf78e1e7a4522960f183f16030735

评论