SSM 프로젝트 개발 POST 인터페이스

9766 단어 일 하 다
배경
회사 프로젝트 는 사용자 가 로그 인하 지 않 은 상태 에서 인터페이스 에 접근 하고 데 이 터 를 전송 할 수 있 도록 POST 인 터 페 이 스 를 개발 해 야 한다.
인터페이스 컴 파일
1. 전송 해 야 할 데이터 형식 은 data = {"esealList": [{"id": "1", "name": "xiaoming", "age": "21"}, {...}, {...}]} 입 니 다.이러한 json 형식의 문자열 을 해석 하기 위해 서 항목 은 GSON 을 사용 하여 데 이 터 를 분 석 했 습 니 다. GSON 은 가 져 올 JAR 패 키 지 를 사용 합 니 다. 여 기 는 군말 하지 않 습 니 다.
2. 각 데이터 의 필드 는 여러 개의 pojo 류 와 관련 되 어 있 기 때문에 데 이 터 를 자바 빈 류 로 직접 변환 할 수 없습니다. 또한 data 는 요청 헤드 가 있 기 때문에 GSON 이 data 를 분석 하 는 데 도움 을 줄 보조 류 를 작성 해 야 합 니 다.프로젝트 중의 자물쇠 데 이 터 는 자물쇠 와 기업 두 개의 pojo 류 와 관련 되 고 보조 류 는 다음 과 같다.
//    
private class EsealPostOut {
    
    private List esealList;

    public List getEsealList() {
        return esealList;
    }

    public void setEsealList(List esealList) {
        this.esealList = esealList;
    }
}
//     
private class EntPostOut {
    	
  	private List esealList;
        
	public List getEsealList() {
		return esealList;
	}
		
	public void setEsealList(List esealList) {
		this.esealList = esealList;
	}  
		
}

3. 정 보 를 되 돌려 주 는 데 사용 할 보조 클래스 를 작성 합 니 다.
private class ResponseCode {
		
		//    
		private String code;
		
		//    
		private String msg;
		
		//      
		private T data;

		/**
		 *  10000:  
		 *  10001:      ;
			10002:    ;
			10003:    (          );
			10004:      ;
		 */
		static final String SUCCESS_CODE = "10000";
		
		static final String FAILKEY_CODE = "10001";
		
		static final String EMPTYDATA_CODE = "10002";
		
		static final String EXCEPTIONDATA_CODE = "10003"; 
		
		static final String SYSERROR_CODE = "10004";
		
		static final String SUCCESS_MSG = "    ";
		
		static final String FAILKEY_MSG = "      ";
		
		static final String EMPTYDATA_MSG = "    ";
		
		static final String EXCEPTIONDATA_MSG = "    ";
		
		static final String SYSERROR_MSG = "    ";
		
		public ResponseCode(){};
		public ResponseCode(String code, String msg) {
			super();
			this.code = code;
			this.msg = msg;
		}
		public ResponseCode(String code, String msg, T data) {
			super();
			this.code = code;
			this.msg = msg;
			this.data = data;
		}
		public String getCode() {
			return code;
		}
		public String getMsg() {
			return msg;
		}
		public T getData() {
			return data;
		}
	}

4. data 의 데 이 터 를 검증 하고 필수 필드 와 불 규범 필드 를 검사 합 니 다.
private static void checkEseal(List eseallist, List entlist) {
    	String regex = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
		String regexMail = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
		String regexPhone = "^[1][3,4,5,7,8][0-9]{9}$";
		String regexFax = "^[0][1-9]{2,3}-[0-9]{5,10}$";
		for (int i = 0; i < eseallist.size(); i++) {
			if("".equals(eseallist.get(i).getEsealId()) || null == eseallist.get(i).getEsealId()) {
				list.add(" " + (i + 1) + "    esealId    ");
			}else{
				if(!eseallist.get(i).getEsealId().matches(regex) || eseallist.get(i).getEsealId().length() > 50) {
        			list.add(" " + (i + 1) + "    esealId       ");
            	}
			}
			if("".equals(eseallist.get(i).getCustomsCode()) || null == eseallist.get(i).getCustomsCode()) {
				list.add(" " + (i + 1) + "    customsCode    ");
			}else{
				if(!eseallist.get(i).getCustomsCode().matches(regex) || eseallist.get(i).getCustomsCode().length() > 20) {
        			list.add(" " + (i + 1) + "    customsCode       ");
            	}
			}
			if(!"".equals(eseallist.get(i).getVehicleNo()) && null != eseallist.get(i).getVehicleNo()) {
	    		if(!eseallist.get(i).getVehicleNo().matches(regex) || eseallist.get(i).getVehicleNo().length() > 20) {
	        		list.add(" " + (i + 1) + "    vehicleNo       ");
	    		}
	    	}
			if(!"".equals(eseallist.get(i).getSimNo()) && null != eseallist.get(i).getSimNo()) {
	    		if(!eseallist.get(i).getSimNo().matches(regex) || eseallist.get(i).getSimNo().length() > 30) {
	        		list.add(" " + (i + 1) + "    simNo       ");
	    		}
	    	}
			if(!"".equals(eseallist.get(i).getCustomsName()) && null != eseallist.get(i).getCustomsName()) {
	    		if(!eseallist.get(i).getCustomsName().matches(regex) || eseallist.get(i).getCustomsName().length() > 20) {
	        		list.add(" " + (i + 1) + "    customsName       ");
	    		}
	    	}
			if("".equals(entlist.get(i).getEntName()) || null == entlist.get(i).getEntName()) {
				list.add(" " + (i + 1) + "    entName    ");
			}else{
				if(!entlist.get(i).getEntName().matches(regex) || entlist.get(i).getEntName().length() > 20) {
        			list.add(" " + (i + 1) + "    entName       ");
            	}
			}
			if(!"".equals(entlist.get(i).getLeadingOfficial()) && null != entlist.get(i).getLeadingOfficial()) {
	    		if(!entlist.get(i).getLeadingOfficial().matches(regex) || entlist.get(i).getLeadingOfficial().length() > 30) {
	        		list.add(" " + (i + 1) + "    leadingOfficial       ");
	    		}
	    	}
			if(!"".equals(entlist.get(i).getContact()) && null != entlist.get(i).getContact()) {
	    		if(!entlist.get(i).getContact().matches(regex) || entlist.get(i).getContact().length() > 30) {
	        		list.add(" " + (i + 1) + "    contact       ");
	    		}
	    	}
			if(!"".equals(entlist.get(i).getAddress()) && null != entlist.get(i).getAddress()) {
	    		if(!entlist.get(i).getAddress().matches(regex) || entlist.get(i).getAddress().length() > 250) {
	        		list.add(" " + (i + 1) + "    address       ");
	    		}
	    	}
			if(!"".equals(entlist.get(i).getMail()) && null != entlist.get(i).getMail()) {
	    		if(!Pattern.compile(regexMail).matcher(entlist.get(i).getMail()).matches() || entlist.get(i).getMail().length() > 50) {
	        		list.add(" " + (i + 1) + "    mail       ");
	    		}
	    	}
			if(!"".equals(entlist.get(i).getPhone()) && null != entlist.get(i).getPhone()) {
	    		if(!Pattern.compile(regexPhone).matcher(entlist.get(i).getPhone()).matches() || entlist.get(i).getPhone().length() > 20) {
	        		list.add(" " + (i + 1) + "    phone       ");
	    		}
	    	}
			if(!"".equals(entlist.get(i).getFax()) && null != entlist.get(i).getFax()) {
	    		if(!Pattern.compile(regexFax).matcher(entlist.get(i).getFax()).matches() || entlist.get(i).getFax().length() > 30) {
	        		list.add(" " + (i + 1) + "    fax       ");
	    		}
	    	}
		}
    }

5. 작성 방법 은 사용자 키 키 의 검사, 알림 가 져 오기, 삽입 또는 업데이트 작업 을 수행 하 는 것 을 포함 합 니 다.
    Logger log = Logger.getLogger(CopInfoAPI.class);
    //    list       
  	static List list = new ArrayList();
  	@SystemLog(logName = "POST          ")
    @RequestMapping(value="/esealInfoAdd.json", produces = "application/json;charset=utf-8",method=RequestMethod.POST)
    @ResponseBody
    public ResponseCode doEsealInfoAdd(String key, String data) throws Exception{
    	//key  
    	GbEntKeysInfo k = this.entKeysService.loadByKey(key);
    	//key   ,      
    	if(" ".equals(k) || null == k) {
    		log.error("    :" + key);
    		return new ResponseCode(ResponseCode.FAILKEY_CODE, ResponseCode.FAILKEY_MSG, "    ");
    	}
    	try{
	    	Gson gson = new Gson();
	    	EsealPostOut record = gson.fromJson(data, EsealPostOut.class);
	    	EntPostOut re = gson.fromJson(data, EntPostOut.class);
	    	//        0,    
	    	if(record.getEsealList().size() <= 0) {
	    		log.info("key=" + key + "
data=" + data); return new ResponseCode(ResponseCode.EMPTYDATA_CODE, ResponseCode.EMPTYDATA_MSG, null); } list.clear(); // 0, checkEseal(record.getEsealList(), re.getEsealList()); // list , list if(list.size() > 0) { log.info("key=" + key + "
data=" + data); return new ResponseCode(ResponseCode.EXCEPTIONDATA_CODE, ResponseCode.EXCEPTIONDATA_MSG, list); } for(int i = 0; i < record.getEsealList().size(); i++) { GbEntInfo ent = this.entService.loadByName(re.getEsealList().get(i).getEntName()); GbEsealInfo eseal = this.esealService.loadByName(record.getEsealList().get(i).getEsealId()); this.entService.saveEsealData(re.getEsealList().get(i), record.getEsealList().get(i), ent, eseal); } }catch(Exception e) { log.info("key=" + key + "
data=" + data); log.error(e.getMessage()); return new ResponseCode(ResponseCode.SYSERROR_CODE, ResponseCode.SYSERROR_MSG, e.getMessage()); } log.info("key=" + key + "
data=" + data); return new ResponseCode(ResponseCode.SUCCESS_CODE, ResponseCode.SUCCESS_MSG, "SUCCESS"); }

6. 데이터베이스 업 무 를 실현 하기 위해 서 는 서 비 스 를 새로 작성 해 야 합 니 다.트 랜 잭 션 통 제 는 service 층 에 만 작용 할 수 있 기 때문에 데이터 의 처 리 는 여러 개의 pojo 류 와 관련 되 기 때문에 여러 개의 표를 삽입 하거나 업데이트 할 때 데이터 가 일치 하도록 해 야 합 니 다.구체 적 인 service 의 작성 은 더 이상 보 여주 지 않 고 자신의 요구 에 따라 써 야 합 니 다.

좋은 웹페이지 즐겨찾기