struts 2 에 서 는 json 등 jar 패 키 지 를 설정 하지 않 고 저 결합, 저 침입 식 ajax 접근 으로 데 이 터 를 되 돌려 줍 니 다.
11780 단어 struts2
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.main.manage.entity.TCatalog;
import org.main.manage.entity.TNews;
import org.main.manage.entity.TProduct;
import org.main.manage.entity.TProductAttrib;
import org.main.manage.entity.TProductDeal;
import org.main.manage.entity.TProductPicture;
import org.main.manage.entity.TSeo;
import org.main.manage.entity.TWholesale;
/**
* Java object JSON .
*
* @author wangqun
*/
public final class JsonUtil {
//
private static int mapCount = 0;
/**
* Convert a Java object to JSON string.
*/
public static String toJson(Object o) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{
if (o==null)
return "null";
if (o instanceof List)
return array2Json(((List) o).toArray());
if (o instanceof String)
return string2Json((String)o);
if (o instanceof Boolean)
return boolean2Json((Boolean)o);
if (o instanceof Number)
return number2Json((Number)o);
if (o instanceof Date)
return date2Json((Date)o);
if (o instanceof Map)
return map2Json((Map)o);
if (o instanceof Object[])
return array2Json((Object[])o);
if (o instanceof int[])
return intArray2Json((int[])o);
if (o instanceof boolean[])
return booleanArray2Json((boolean[])o);
if (o instanceof long[])
return longArray2Json((long[])o);
if (o instanceof float[])
return floatArray2Json((float[])o);
if (o instanceof double[])
return doubleArray2Json((double[])o);
if (o instanceof short[])
return shortArray2Json((short[])o);
if (o instanceof byte[])
return byteArray2Json((byte[])o);
return entity2Json(o);
}
static String array2Json(Object[] array) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
Object o = array[i];
sb.append(toJson(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String intArray2Json(int[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
int o = array[i];
sb.append(Integer.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String longArray2Json(long[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
long o = array[i];
sb.append(Long.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String booleanArray2Json(boolean[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
boolean o = array[i];
sb.append(Boolean.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String floatArray2Json(float[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
float o = array[i];
sb.append(Float.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String doubleArray2Json(double[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
double o = array[i];
sb.append(Double.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String shortArray2Json(short[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
short o = array[i];
sb.append(Short.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String byteArray2Json(byte[] array) {
if (array.length==0)
return "[]";
StringBuffer sb = new StringBuffer(array.length << 4);
sb.append('[');
for (int i = 0; i < array.length; i++) {
byte o = array[i];
sb.append(Byte.toString(o));
sb.append(',');
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
static String map2Json(Map map) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{
if (map.isEmpty())
return "{}";
StringBuffer sb = new StringBuffer(map.size() << 4);
if(mapCount++ > 0){
sb.append('[');
}
sb.append('{');
Set keys = map.keySet();
Iterator iters = keys.iterator();
while(iters.hasNext()){
String key = (String)iters.next();
Object value = map.get(key);
sb.append('\"');
sb.append(key);
sb.append('\"');
sb.append(':');
sb.append(toJson(value));
sb.append(',');
}
sb.setCharAt(sb.length()-1, '}');
//
if(--mapCount > 0){
sb.append(']');
}
return sb.toString();
}
static String boolean2Json(Boolean bool) {
return bool.toString();
}
static String number2Json(Number number) {
return number.toString();
}
static String date2Json(Date date) {
if (null == date)
return "null";
StringBuffer sb = new StringBuffer();
sb.append('"');
sb.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
sb.append('"');
return sb.toString();
}
static String string2Json(String s) {
StringBuffer sb = new StringBuffer(s.length()+20);
sb.append('\"');
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '
':
sb.append("\
");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
sb.append('\"');
return sb.toString();
}
static String entity2Json(Object o) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{
if (null == o)
return "null";
return toJson(getBeanMap(o));
}
public static Map getBeanMap(Object obj) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{
if(null == obj){
return null;
}
Map resMap = new HashMap();
Method[] methods = obj.getClass().getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
String methodName = method.getName();
if(methodName.startsWith("get")){
Object methodValue = obj.getClass().getDeclaredMethod(methodName, null).invoke(obj, null);
String attrName = methodName.substring(3,4).toLowerCase()+methodName.substring(4);
resMap.put(attrName, methodValue);
valiAttr(methodValue);
}
}
return resMap;
}
/**
* , "[]"
* @param obj
*/
public static void valiAttr(Object o){
if (o instanceof Map)
return ;
if (o instanceof Object[])
return;
if (o instanceof int[])
return;
if (o instanceof boolean[])
return;
if (o instanceof long[])
return;
if (o instanceof float[])
return;
if (o instanceof double[])
return;
if (o instanceof short[])
return;
if (o instanceof byte[])
return;
//"[]"
--mapCount;
}
}
이것 은 List, Map, 사용자 정의 실체 데이터 등 을 직접 연결 할 수 있 습 니 다.
2. struts 2 프레임 워 크 를 구축 한 후 BaseAction 에서 변 수 를 구축 하고 방법
protected String ajaxData;
public String getAjaxData() {
return ajaxData;
}
public void setAjaxData(String ajaxData) {
this.ajaxData = ajaxData;
}
3. struts. xml 프로필 에 전역 반환 페이지 설정
<global-results>
<result name="ajax" >/ajax.jsp</result>
</global-results>
ajax. jsp 페이지 코드:
<%@ page language="java" pageEncoding="UTF-8"
import="org.main.common.util.*"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:property value="ajaxData" escape="false"/>
escape = "false" 를 설정 합 니 다.이 속성 을 설정 하지 않 으 면 돌아 오 는 구두점 기 호 는 전의 문자 가 됩 니 다. 예 를 들 어 '따옴표' 는 '& quot' 가 됩 니 다.
public String test_json() throws Exception{
//
ajaxData = ;
return SUCCESS;
}
4. 페이지 의 js 코드:
<script type="text/javascript">
function testJSON(){
$.ajax({url:'test_json.action',
data:{time:Math.random()},
dataType: "json",
success:function(res){
alert(res);
$.each(res,function(i,n){
alert(i+":"+n["orderNo"]);
})
}
});
}
</script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Struts2 이미지는 base64 방식으로 데이터베이스에 업로드1. 페이지에 코드 입력 2. 백스테이지 위에서 말한 것은 여러분께 소개해 드린 Struts2의 사진이base64 방식으로 데이터베이스에 업로드되어 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.