Struts2의 JSON 데이터 처리
우선 struts2 지원을 설정하고 json 플러그인을 설정해야 합니다.
테스트 페이지는 다음과 같습니다.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'input.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:form action="16-json/jsondate.action">
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit value="submit"></s:submit>
</s:form>
</body>
</html>
구성 파일:
<?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 name="16-json" extends="json-default" namespace="/16-json">
<action name="jsondate" class="com.freesoft.struts2.action.JsonDateAction">
<result name="success" type="json">
</result>
</action>
</package>
</struts>
본론:
서버에서 되돌아오는 형식이 json 데이터 형식인 것을 설정하기 위해서, 패키지를 json-default에서 계승해야 합니다.값을 json 형식으로 되돌려주기 위해서, 우리의result type은 json이어야 합니다. (만약 json 문자열 형식의 인자를 받아들이기 위해서
우리의 액션 구현은 다음과 같습니다.
package com.freesoft.struts2.action;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;
import com.freesoft.struts2.bean.JsonOutputBean;
import com.opensymphony.xwork2.ActionSupport;
public class JsonDateAction extends ActionSupport {
private static final long serialVersionUID = 8594770813208016225L;
private String username;
private String password;
private JsonOutputBean bean;
private Map<String, Object> dataMap;
public JsonDateAction() {
super();
dataMap = new HashMap<String, Object>();
}
@Override
public String execute() throws Exception {
dataMap.put("username", username);
dataMap.put("password", password);
Date date = new Date(2012, 1, 12);
bean = new JsonOutputBean(1, "zhangsan", date);
dataMap.put("Bean", bean);
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public JsonOutputBean getBean() {
return bean;
}
public void setBean(JsonOutputBean bean) {
this.bean = bean;
}
public Map<String, Object> getDataMap() {
return dataMap;
}
public void setDataMap(Map<String, Object> dataMap) {
this.dataMap = dataMap;
}
}
이 때 우리는 실제적으로 테스트를 진행할 수 있지만, 되돌아오는 결과는 액션의 모든 속성을 출력하는 것이다. (실제로는 모든 get 방법을 가져왔고, 이 점은 getBean과 getName 방법을 주석해서 검증할 수 있다.) 그래서 우리는 우리의 프로필을 개조해야 한다.
<?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 name="16-json" extends="json-default" namespace="/16-json">
<action name="jsondate" class="com.freesoft.struts2.action.JsonDateAction">
<result name="success" type="json">
<param name="root">dataMap</param>
</result>
</action>
</package>
</struts>
루트 이름의 반환값 파라미터를 추가했습니다. 이 때 우리는 데이터맵이라는 속성의 여러 가지 값을 얻을 수 있습니다. 일반적인 상황에서 반환값이 필요할 때 이런 방식을 사용합니다.
원래는 여기에서 json은 기본적으로 말을 끝냈지만, 우리는 또 다른 문제를 발견했다. Date 형식의 데이터가 되돌아오는 것은'date'이다.'3912-02-12T00:00:00'이라는 문자열인데 중간에'T'문자가 있다. 그러면 우리는 어떻게 없애야 합니까?정상적인 상황에서 만약 한 유형의 출력 내용이 우리가 원하는 것과 일치하지 않는다면, Struts2에서는 Converter를 사용하여 우리가 필요로 하는 형식으로 변환해야 하지만, 우리는 현재 json 플러그인을 사용하여 출력으로 변환하고 있기 때문에 다른 방법을 생각해 보자. 우리는 json 플러그인에 속성과 같은 설정 가능한 값이 있는지 찾아보자.
구체적인 사용 방법을 찾을 수 있습니다. 변환할 속성 (Date 형식) 의 get 방법에 다음 코드를 추가하면 됩니다.
package com.freesoft.struts2.bean;
import java.util.Date;
import org.apache.struts2.json.annotations.JSON;
public class JsonOutputBean {
private int id;
private String name;
private Date date;
public JsonOutputBean(int id, String name, Date date) {
super();
this.id = id;
this.name = name;
this.date = date;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JSON(format="YYYY-mm-dd")
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spring에서 @value 주석에 주의해야 할 문제우선, @value는 매개 변수가 필요합니다. 여기 매개 변수는 두 가지 형식이 될 수 있습니다. @Value("#{configProperties['t1.msgname']}") 또는 @Value("${t1.msgna...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.