전체 작업에 대한 완전한 코드는 다음과 같습니다.
패키지 cn.ysh.studio.struts2.json.demo.action; import java.io.ioexception; import java.io.printwriter; java.util.hashmap import; java.util.map import; import javax.servlet.http.httpservletresponse; import org.apache.struts2.servletactionContext; import net.sf.json.jsonobject; cn.ysh.studio.struts2.json.demo.bean.user import; com.opensymphony.xwork2.actionSupport 가져 오기; 공개 클래스 UserAction은 ActionSupport를 확장합니다 { / ** * * / Private STATIC Final Long SerialversionUid = 1L; // struts2에 의해 직렬화 될 객체는 JSON 문자열 개인지도 <문자열, 개체> Datamap; / *** 생성자*/ public userAction () {// 맵 객체 dataMap = new Hashmap <String, Object> (); } / *** test action* @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.accumulate ( "사용자", 사용자); jsonobject.accumulate ( "성공", true); // 여기에 요청 객체의 데이터가 있으므로 struts servletactionContext.getRequest (). setAttribute ( "data", jsonobject.toString ())의 결과 구성에 type = "redirect"가있을 수 없습니다. 반환 성공; }; / *** 테스트는 기본적으로 struts2에서 JSON 데이터를 반환합니다* @return*/ public string testByaction () {// Datamap의 데이터는 struts2에 의해 JSON String으로 변환되므로 먼저 IT Datamap.clear ()의 데이터를 지워야합니다. 사용자 user = 새 사용자 (); user.setid ( "123"); user.setName ( "jsonActionStruts2"); user.setpassword ( "123"); user.setsay ( "Hello World!"); Datamap.put ( "사용자", 사용자); // 작업이 성공적인 Datamap.put ( "성공", True)인지 신원을 부여합니다. // 결과 반환 성공을 반환합니다. } / *** action* @throws ioexception* / public void doaction ()가 ioexception {httpservletContext.getResponse (); // json.java response에서 복사 된 다음 코드 .SetContentType ( "text/html"); 프린트 라이터; out = response.getWriter (); // 클라이언트 사용자에게 반환 할 객체 사용자 = 새 사용자 (); user.setid ( "123"); user.setName ( "jsonActionGeneral"); user.setpassword ( "json"); user.setsay ( "안녕하세요, JSON을 인쇄하는 조치입니다!"); jsonobject json = new jsonobject (); json.accumulate ( "성공", true); json.accumulate ( "사용자", 사용자); out.println (json.toString ()); // JSON 데이터는 전달 프로세스 중에 일반 문자열의 형태로 전달되기 때문에 JSON 구문 사양을 준수하는 문자열을 수동으로 스플 라이스 문자열로 만들어 클라이언트에 출력 할 수 있습니다. // 다음 두 문장의 기능은 38-46 행의 함수와 동일합니다. jsonstring = "{/"user/": {/"id/":/"123/",/"name/":/"jsonactiongeneral/",/"say/":/"hello, 나는 json!/",/"password/":/"json/"},/"success/": true}"; // out.println (jsonstring); out.flush (); out.close (); } /*** struts2가 지정된 속성을 직렬화하면 해당 속성에 대한 getter 메소드가 있어야합니다. 실제로 속성이없는 경우 getter 메소드 만 OK * @return */ public map <string, object> getDatamap () {return Datamap; }}전체 struts.xml 구성 파일은 다음과 같습니다.
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype struts public "-// apache 소프트웨어 재단 // dtd struts configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd"> 네임 스페이스 = "/test"> <action name = "testBeyaction"method = "testBeyaction"> <result type = "json"> <!- 여기에서 struts2에 의해 직렬화 될 속성을 지정합니다. 이 속성은 동작에 해당하는 getter 메소드가 있어야합니다-> <!-기본적으로, 기본적으로, 반환 값을 가진 모든 getter 메소드의 값은 해당 속성을 가지고 있는지 여부에 관계없이-> <param name = "root"> dataMap </paramap> <!-빈 속성을시 다시화할지 여부를 지정할 것인지 </param = "-propart inteporifice 데이터 맵은 직렬화-> <!-데이터 맵의 어떤 속성이 DataMap에서 제외 될지 지정합니다. 이 제외 된 속성은 직렬화되지 않으며 절반은 위 매개 변수 구성-> <!-<param name = "inxcereproperties"> success </param>-> </action> </package> <package name = "default"extends = "struts-default"namespace = "> <action name ="testjsonfromationbygeneral "과 동시에 나타나지 않습니다. 메소드 = "doaction"> </action> <action name = "testbyjsp"method = "testbyjsp"> <result name = "success">/actionjsp.jsp </resent> </action> </package> </struts>
Struts2에서 작동하는 JSON 데이터를 출력하는 위의 예는 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.