struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)

文章目录

  • 一、爬坑之路
  • 二、环境搭建
      • 2.1 stuct2 的 pom 依赖
      • 2.2 开发工具配置
  • 三、代码编写
      • 3.1 编写 AjaxAction
      • 3.2 前端页面编写
      • 3.3 struct2 配置文件编写
      • 3.4 运行效果图

一、爬坑之路

困扰了我很久的问题终于解决了!!!

今天记录一下

网上我查阅过许多 struct2 返回 JSON 数据格式的方式,比如使用 Servlet 阶段的 PrintWriter,还有自己转换成 InputStream 流返回 JSON 数据,甚至还有自己封装 JSON 格式数据的。 但是大部分尝试过,但是发现用不了,后来发现了 stuct2 自带的 json 转换的数据就很方便。

就是这个插件
struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)_第1张图片
使用这个插件之后,就不需要我们自己另外导 json 数据转换的包了,使用 struct2 自带的 ognl 表达式就可以帮我们注入数据

二、环境搭建

我搭建的是 SSH (stuct2 + hibernate5 + spring5)环境,项目采用 Maven 构建,开发工具是 Idea 2019

感兴趣的同学可以看一看
SSH 开发脚手架

今天只讲 stuct2 如何返回 JSON 数据

2.1 stuct2 的 pom 依赖

    
    <dependency>
      <groupId>org.apache.strutsgroupId>
      <artifactId>struts2-coreartifactId>
      <version>2.3.35version>
    dependency>

    
    <dependency>
      <groupId>org.apache.strutsgroupId>
      <artifactId>struts2-json-pluginartifactId>
      <version>2.3.8version>
    dependency>

2.2 开发工具配置

这里是我们需要自己添加进去的,不然开发工具识别不了我们写的东西,不然后面写 struct2 配置文件的时候就会爆红

struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)_第2张图片

struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)_第3张图片struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)_第4张图片

三、代码编写

3.1 编写 AjaxAction

比如我们想要返回一个字符串,就要在在成员变量(“全局变量”)中添加它,并给予对应的 getter 和 setter 方法,你要问为什么,这就是 ognl 表达式要做的事情。

比如我要做一个账户的用户名验证的功能,所以我可以这么写

@Controller("aa")
public class AjaxAction extends ActionSupport {
    private String uname; // 接收前端的用户名
    private String msg;  // 要返回的内容

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    // 返回简单字符串
    public String teststring() {
        // 判断用户是否存在
        if (uname.equals("admin")) {
            msg="账户已经有人注册了";
        } else {
            msg="账户可以使用";
        }
        return "success";
    }
}

3.2 前端页面编写

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
    <jsp:include page="base.jsp"/>  
head>
<body>
<div class="container">
    <form action="checklogin" method="post" class="form-horizontal">
        <div class="form-group">
            <label for="username" class="col-sm-2 control-label">账户:label>
            <div class="col-sm-10">
                <input type="text" class="form-control" name="username" id="username" placeholder="请输入你的账户">
            div>
        div>
        <div class="col-sm-offset-2 col-sm-10">
            <input type="submit" class="btn btn-primary" value="Submit"/>
        div>
    form>
div>
<script type="text/javascript">
    $("#username").on("change",function () {
        $.ajax({
            url: 'checkajax',
            data: {
                uname: $("#username").val()
            },
            type: "POST",
            success:function (data) {
                console.log(data)
            }
        })
    })
script>
body>
html>

3.3 struct2 配置文件编写

这里的 root 就代表你要返回的数据

	
    <package name="ajax" namespace="/" extends="json-default" >
        <action name="checkajax" class="aa" method="teststring">
            <result name="success" type="json">
                <param name="root">msgparam>
            result>
        action>
    package>

3.4 运行效果图

struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)_第5张图片
struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)_第6张图片

如果你想要返回 list ,步骤是一样的,和 msg 是一样的方法,使用 ognl 表达式来帮我们完成数据的返回

你可能感兴趣的:(java学习,java,ajax,struct)