Struts 2 + JSON AJAX 반환 대상 및 목록 구현
json 이 결과 형식 을 되 돌려 줍 니 다. 이 응답 결 과 는 그 어떠한 그림 에 도 되 돌아 갈 필요 가 없습니다. JSON 은 Action 의 상태 정 보 를 JSON 이 지정 한 형식의 데이터 로 정렬 하고 이 데 이 터 를 되 돌려 줍 니 다.
JAVASCRIPT 에 게 이렇게 하면 AJAX 의 응용 상호작용 을 완성 할 수 있 습 니 다. JSON 플러그 인 을 사용 하려 면 먼저
http://code.google.com/p/jsonplugin/downloads/list
최신 JSON 플러그 인 을 다운로드 합 니 다. 제 가 다운로드 한 것 은 jsonplugin 입 니 다 -
0.33. jar, 이 파일 을 WEB 프로젝트 의 LIB 디 렉 터 리 에 복사 합 니 다. 물론 Struts 2 라 이브 러 리 를 다운로드 해 야 합 니 다. http://struts.apache.org/download.cgi#struts2014
여기 서 다운로드 하고 다운로드 한 후에 압축 을 풀 고 JAR 을 WEB 프로젝트 의 LIB 디 렉 터 리 에 복사 합 니 다. 다음 과 같은 JAR 파일 (struts 2 - api - 2.0.5. jar, struts 2 - core - 2.0.5. jar,
ognl - 2.6.9. jar, xwork - 2.0.0. jar, comons - logging - 1.1. jar, freemarker - 2.3.8. jar, 구체 적 인 파일 명 시 버 전 으로 정 함) 다음 에 우 리 는 응용 프로그램 을 쓸 수 있 습 니 다.
시험 을 해 보 겠 습 니 다. 이 규칙 은 두 단계 로 나 누 어 쓰 겠 습 니 다. 첫 번 째 단 계 는 결과 대상 을 되 돌려 주 고 두 번 째 단 계 는 결과 목록 을 되 돌려 줍 니 다. 먼저 결과 대상 의 실현 을 살 펴 보 겠 습 니 다. 우 리 는 먼저 자바 빈 을 값 대상 으로 하여 사용자 의 기본 데 이 터 를 밀봉 해 야 합 니 다. 이 실 체 는 결과 대상 과 결과 목록 에서 Users. 자바 코드 를 다음 과 같이 사용 합 니 다.
package com.jsontostruts2.vo;
/**
* <p>
* :ChenTao
* <p>
* :2009-5-18 05:24:48
* <p>
*/
public class Users {
private Integer userId;
private String userName;
private String sex;
public Users() {
}
// get... set.... ......
}
UserAction. java 원본 코드 는 다음 과 같 습 니 다.
package com.jsontostruts2.action;
import com.googlecode.jsonplugin.annotations.JSON;
import com.jsontostruts2.vo.Users;
import com.opensymphony.xwork2.ActionSupport;
/**
* <p>
* :ChenTao
* <p>
* :2009-5-18 05:22:50
* <p>
*/
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
private Users users;
@JSON(name="USER")
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
@Override
public String execute() throws Exception {
users = new Users();
users.setUserId(1);
users.setUserName("ctojxzsycztao");
users.setSex(" ");
return SUCCESS;
}
}
다음은 struts. xml 파일 을 설정 해 야 합 니 다. 이 파일 을 다시 쓰 지 않 기 위해 서 는 결과 대상 과 목록 의 요청 을 함께 붙 여야 합 니 다. 파일 내용:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- struts-default, json-default -->
<package name="jsonManager" extends="json-default">
<!-- json -->
<action name="userJson" class="com.jsontostruts2.action.UserAction">
<result type="json"/>
</action>
<!-- action -->
<action name="jsonlist" class="com.jsontostruts2.action.UserListAction">
<result type="json"/>
</action>
</package>
</struts>
웹. xml 과 userjson. jsp 를 만 들 수 있 습 니 다:
web.xml :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>Struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
userjson.jsp :
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>json </title>
<script language="javascript">
var xmlHttp = false;
try{
xmlHttp = new ActiveXObject("msxml2.XMLHTTP");
}catch(e1){
try{
xmlHttp = new ActiveXObject("microsoft.XMLHTTP");
}catch(e2){
try{
xmlHttp = new XMLHttpRequest();
}catch(e3){
xmlHttp = false;
}
}
}
if(!xmlHttp){
alert("create xmlHttpRequest fail");
}
function jsonResult(){
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4) {
// JSON JSON , eval "(" ")" JSON ,
var userObj = eval('(' + xmlHttp.responseText + ')');
var userStr = "<table border=0>";
userStr += '<tr><td><b>userId</b></td><td>' + userObj.USER.userId + '</td></tr>';
userStr += ('<tr><td><b>userName</b></td><td>' + userObj.USER.userName + '</td></tr>');
userStr += ('<tr><td><b>sex</b></td><td>' + userObj.USER.sex + '</td></tr>');
userStr += "</table>";
document.getElementById('jsonDiv').innerHTML = userStr;
}
}
xmlHttp.open("POST","userJson.action",true);
xmlHttp.send(null);
}
</script>
</head>
<body>
<div id="jsonDiv"></div>
<input type="button" value="show" onclick="jsonResult();">
</body>
</html>
이제 용기 에 애플 리 케 이 션 을 입력 http://localhost:8080/struts2ToJson/userjson.jsp 시 show 를 발표 할 수 있 습 니 다. 이 럴 때 원 하 는 매듭 을 볼 수 있 습 니 다.
따라서 다음 반환 목록 을 실현 하 는 방법 은 물론 반환 대상 과 다 를 수 있 습 니 다. 우 리 는 하나의 List 대상 을 JSON 규범 의 문자열 로 바 꾸 고 클 라 이언 트 에 보 낼 수 있 는 JS 로 바 꿔 야 합 니 다.
먼저 List 를 지정 한 문자열 로 변환 하 는 도구 클래스 를 만 듭 니 다. 이 도 구 는 무심코 인터넷 에서 보고 가 져 왔 습 니 다. 약간의 수정 을 거 쳐 코드 줄 수 를 줄 이기 위해 서 만 붙 일 것 입 니 다.
이 예제 에 사용 할 코드: JSonUtil. 자바:
package com.jsontostruts2.util;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.List;
/**
* <p>
* @author ChenTao
* <p>
* @Date 2009-5-18 05:47:27
* <p>
*/
public class JsonUtil {
/**
* @param object
*
* @return java.lang.String
*/
public static String objectToJson(Object object) {
StringBuilder json = new StringBuilder();
if (object == null) {
json.append("\"\"");
} else if (object instanceof String || object instanceof Integer) {
json.append("\"").append((String)object).append("\"");
} else {
json.append(beanToJson(object));
}
return json.toString();
}
/**
* : javabean
*
* @param bean
* bean
* @return String
*/
public static String beanToJson(Object bean) {
StringBuilder json = new StringBuilder();
json.append("{");
PropertyDescriptor[] props = null;
try {
props = Introspector.getBeanInfo(bean.getClass(), Object.class)
.getPropertyDescriptors();
} catch (IntrospectionException e) {
}
if (props != null) {
for (int i = 0; i < props.length; i++) {
try {
String name = objectToJson(props[i].getName());
String value = objectToJson(props[i].getReadMethod().invoke(bean));
json.append(name);
json.append(":");
json.append(value);
json.append(",");
} catch (Exception e) {
}
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
/**
* : , JSON
*
* @param list
*
* @return java.lang.String
*/
public static String listToJson(List<?> list) {
StringBuilder json = new StringBuilder();
json.append("[");
if (list != null && list.size() > 0) {
for (Object obj : list) {
json.append(objectToJson(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
}
UserListAction.java:
package com.jsontostruts2.action;
import java.util.ArrayList;
import java.util.List;
import com.googlecode.jsonplugin.annotations.JSON;
import com.jsontostruts2.util.JsonUtil;
import com.jsontostruts2.vo.Users;
import com.opensymphony.xwork2.ActionSupport;
/**
* <p>
* :ChenTao
* <p>
* :2009-5-18 05:45:42
* <p>
*/
@SuppressWarnings("serial")
public class UserListAction extends ActionSupport {
/* JSON */
private String jsonResult;
@JSON(name="JSONRESULT")
public String getJsonResult() {
return jsonResult;
}
public void setJsonResult(String jsonResult) {
this.jsonResult = jsonResult;
}
@Override
public String execute() throws Exception {
List<Users> userList = new ArrayList<Users>();
Users users = new Users();
users.setUserId(1);
users.setUserName("ctojxzsycztao");
users.setSex(" ");
userList.add(users);
users = null;
users = new Users();
users.setUserId(2);
users.setUserName("rain");
users.setSex(" ");
userList.add(users);
users = null;
users = new Users();
users.setUserId(3);
users.setUserName("mimi");
users.setSex(" ");
userList.add(users);
jsonResult = JsonUtil.listToJson(userList);
System.out.println(jsonResult);
return SUCCESS;
}
}
다음은 jsonList. JSP 페이지 를 써 서 결 과 를 사용자 에 게 전달 할 것 입 니 다.
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>json </title>
<script language="javascript">
var xmlHttp = false;
try{
xmlHttp = new ActiveXObject("msxml2.XMLHTTP");
}catch(e1){
try{
xmlHttp = new ActiveXObject("microsoft.XMLHTTP");
}catch(e2){
try{
xmlHttp = new XMLHttpRequest();
}catch(e3){
xmlHttp = false;
}
}
}
if(!xmlHttp){
alert("create xmlHttpRequest fail");
}
function jsonListResult(){
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4) {
var userList = eval('(' + xmlHttp.responseText + ')');
var user = eval(userList.JSONRESULT);
var result = "<table border=0>";
result += "<tr><td>userId</td><td>userName</td><td>sex</td></tr>";
for(var i=0;i<user.length;i++) {
result += "<tr>";
result += "<td>"+user[i].userId +"</td>";
result += "<td>"+user[i].userName+"</td>";
result += "<td>"+user[i].sex+"</td>";
result += "</tr>";
}
result += "</table>";
document.getElementById('jsonDiv').innerHTML = result;
}
}
xmlHttp.open("POST","jsonlist.action",true);
xmlHttp.send(null);
}
</script>
</head>
<body>
<div id="jsonDiv"></div>
<input type="button" value="show list" onclick="jsonListResult();">
</body>
</html>
현재 프로젝트 를 WEB 용기 에 중복 배치 합 니 다. 시작: 브 라 우 저 에 show list 단 추 를 입력 하고 결 과 를 보십시오.
정확 한 지 여 부 는 본 규칙 을 참고 하여 빠 뜨리 지 않 은 부분 이 설정 되 어 있 는 지 확인 하 십시오. 상기 코드 에서 우 리 는 모두 @ JSON 의 주 해 를 보 았 습 니 다. 이 주 해 는 JSON 이 결 과 를 되 돌려 주 는 속성 명 을 바 꿀 수 있 습 니 다. 좋 은 글 은 여기까지 쓰 고 예제 가 필요 한 친구 들 은 첨부 파일 에서 다운로드 할 수 있 습 니 다. 그 안에 해당 글 의 소스 코드 와 해당 하 는 JAR 이 포함 되 어 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.