Aqui está o código completo para toda a ação:
pacote cn.ysh.studio.struts2.json.demo.action; importar java.io.ioException; importar java.io.printwriter; importar java.util.hashmap; importar java.util.map; importar javax.servlet.http.httpServletResponse; importar org.apache.struts2.ServletActionContext; importação net.sf.json.jsonObject; importar cn.ysh.studio.struts2.json.demo.bean.user; importação com.opensymphony.xwork2.actionsupport; classe pública UserAction estende o ACOCTOPPORT { / ** * * / private estático final serialversionuid = 1L; // objeto que será serializado por struts2 em um mapa privado de string json <string, objeto> datamap; / *** construtor*/ public userAction () {// inicialize o mapa objeto datamap = new hashmap <string, object> (); } / *** O teste retorna os dados JSON em uma visualização através da ação* @return* / public String testbyjsp () {user user = new user (); user.setId ("123"); user.setName ("JsonactionJSP"); user.setPassword ("123"); user.SetSay ("Hello World!"); JsonObject jsonObject = new jsonObject (); jsonObject.acmulate ("Usuário", usuário); jsonObject.acumulate ("Sucesso", verdadeiro); // Aqui estão um dado no objeto de solicitação; portanto, não pode haver tipo = "redirecionar" na configuração do resultado do struts servletActionContext.getRequest (). SetAttribute ("dados", jsonObject.tostring ()); sucesso de sucesso; }; / *** O teste retorna os dados JSON em struts2 por padrão* @return*/ public String testbyaction () {// Os dados no datamap serão convertidos em uma string json por struts2, para primeiro você limpar os dados em tatamap.clear (); Usuário do usuário = novo usuário (); user.setId ("123"); user.setName ("jsonactionstruts2"); user.setPassword ("123"); user.SetSay ("Hello World!"); datamap.put ("Usuário", usuário); // coloque uma identidade se a operação é bem -sucedida datamap.put ("sucesso", true); // retorna o resultado de retorno do resultado; } / *** Retorne dados JSON da maneira tradicional através da ação* @THOWSows IoException* / public void Doaction () lança IoException {httpServletResponse resposta = servletActionContext.getResponse (); // o código a seguir copiado do JSON.java Response.SetContentType ("Text/html"); PrintWriter Out; out = Response.getWriter (); // o objeto a ser retornado ao usuário do cliente = new User (); user.setId ("123"); user.setName ("JsonactionGeneral"); user.setPassword ("json"); User.SetSay ("Olá, sou uma ação para imprimir um JSON!"); JsonObject json = new jsonObject (); JSON.ACCUMULAR ("Sucesso", verdadeiro); JSON.Accumulate ("Usuário", usuário); out.println (json.toString ()); / Como os dados JSON são passados na forma de uma corda normal durante o processo de entrega, também podemos consumir manualmente strings que cumprem as especificações da sintaxe do JSON e a saída para o cliente // A função do seguinte duas frases é a mesma que a função das linhas 38-46, que retornará um objeto de usuário e um campo de sucesso para o cliente // string jSonstring = "{/" user/": {/" id/":/" 123/",/" name/":/" jsonactionGeneral/",/" Say/":/" Hello, eu sou uma ação para imprimir um json!/",/" senha/":/" json/"},/" success/"True}"; // out.println (JSonstring); out.flush (); out.Close (); } /*** Quando o Struts2 serializa um atributo especificado, deve haver um método getter para esse atributo. De fato, se não houver atributo, apenas o método getter está ok * @return */ public map <string, object> getDatamap () {return datamap; }}O arquivo de configuração completo do Struts.xml é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype suporta public "-// Apache Software Foundation // DTD Struts Configuration 2.0 // en" "http://struts.apache.org/dtds/stuts-2.0.dtp"> <stuts.apache.org/dtds/stuts-2.0.dtd " namespace = "/test"> <ação name = "testbyaction" method = "testbyaction"> <resultado type = "json"> <!- Aqui você especifica os atributos que serão serializados por struts2. Este atributo deve ter um método getter correspondente na ação-> <!-Por padrão, os valores de todos os métodos getter com valores de retorno serão sequenciados, independentemente de o método ter propriedades correspondentes-> <param name = "root"> datamap </param> <!-especificar se as propriedades em vazio "> <!-<paramp =" Excluir> <! No DATAMAP, será serializado-> <!-Especifique quais propriedades no DATAMAP serão excluídas do DATAMAP. Essas propriedades excluídas não serão serializadas e a metade não aparecerá ao mesmo tempo que a configuração de parâmetros acima-> <!-<param name = "excludeProperties"> success </param>-> </sould> </action> </package> <package name = "default" exsends = "struts-default" Namespace = ">"> " </action> <action name = "testbyjsp" method = "testbyjsp"> <resultado name = "succcess">/actionjsp.jsp </resultado> </action> </cackage> </stuts>
O exemplo acima da saída de dados JSON em ação no STRUTS2 é todo o conteúdo que eu compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.