LaBee Framework Ajax 비동기 통신·동적 화면 개편 방법(임의의 JSON 응답) ※ 사이트 규격이 무료 다운로드로 변경되었습니다.

등록하지 않아도 파일을 다운로드할 수 있어 사이트 규격이 바뀌었다.
LaBee Framework는 자바가 웹 시스템을 개발하는 공장 표준을 목표로 제로부터 제작하는 국산 자바 프레임워크다.해외 제조틀 특유의 난해함과 정보 부족으로 인한 노동시간과 인력 증가를 해결하고 자바의 웹 개발 효율성을 높이기 위해 제작됐다.LGPL 라이센스에 오픈 소스 코드가 공개되어 개인과 기업 모두 무료로 사용 가능
https://www.bee-wkspace.com/

Ajax 비동기 통신·동적 화면 재작성


웹 화면(JSP)에서 비동기 POST로 제출된 LaBeeFramework는'id명, 설정값'형식으로 JSON이 상업 논리로부터 응답을 받아 화면 요소를 동적으로 바꾸는 기능을 가진다.샘플 예제에서 화면의 "AjaxPost 보내기"링크를 클릭하면 비동기적인 Ajax 보내기가 수행되며, id에서 "user Name"의div 표시 값을 동적으로 덮어씁니다.
JSP 설치 예
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ page session="false"%>
<%@ taglib prefix="LaBee"  uri="/WEB-INF/lib/LaBeeFramework.jar"%>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <LaBee:header requestScope="${requestScope}"/>
</head>
<body>
    <form name="mainForm" method="post" action="ctrl">

    <div>ユーザ名</div>
    <div id="userName"> </div>
     <a href="javascript:<LaBee:ajaxSubmit 
        target="web.AjaxSample"
        execute="ajaxReceive"
        formName="mainForm"/>">
        AjaxPost送信             
    </a>

    </form>
</body>
</html>       
비즈니스 논리 구현 예
이번에는 비안을 사용하지 않기 때문에 부모님 반에 갔어요.bee_wkspace.labee_fw.app.base.AppBaseNotBeanUseBlogic을 계승했습니다.

package sample.blogic.web;
import com.bee_wkspace.labee_fw.app.base.AppBaseNotBeanUseBlogic;
import com.bee_wkspace.labee_fw.core.annotation.FwBlogic;
import com.bee_wkspace.labee_fw.core.annotation.FwExeMethod;
import com.bee_wkspace.labee_fw.core.context.ResponseContext;
import com.bee_wkspace.labee_fw.core.context.JsonValueContext;
import com.bee_wkspace.labee_fw.exception.FwException;
/**
 * JSONレスポンスサンプルビジネスロジック
 */
@FwBlogic(beanReuse = false)
public class AjaxSampleBlogic extends AppBaseNotBeanUseBlogic {
    /**
     * コンストラクタ。
     */
    public AjaxSampleBlogic() {
        super();
    }

    /**
     * Ajax非同期イベント処理。
     */
    @FwExeMethod
    public ResponseContext ajaxReceive() throws FwException {
        try {
            // "id名、設定値"形式のJSONデータを構築する為のコンテキストを設定
            JsonValueContext appJsonData = new JsonValueContext();
            appJsonData.addJsonValue("userName", "テスト太郎");
            // レスポンスに"id名、設定値"形式のJSONデータを返す設定を行なう
            super.setAjaxJsonResponse(appJsonData);
        } catch (Exception e) {
            throw new FwException(e);
        }
        return responseContext;
    }    
}      
전송 전 샘플 화면 표시 결과

발송 후 샘플 화면 표시 결과

모든 JSON 응답


LaBeeFramework는 웹 화면(JSP)에서 비동기 POST를 제출하여 임의의 JSON을 통해 상업 논리로부터 응답을 받고 임의의 JavaScript 방법을 실행하는 기능을 가진다.샘플 예제에서 화면에서 "AjaxPost 보내기"링크를 클릭하면 비동기식 Ajax 보내기
응답을 받을 때 responseJson () 방법을 자동으로 호출하고 JSON 내용이 alert에 표시됩니다.
JSP 설치 예

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ page session="false"%>
<%@ taglib prefix="LaBee"  uri="/WEB-INF/lib/LaBeeFramework.jar"%>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <LaBee:header requestScope="${requestScope}"/>
    <script>
        // 非同期レスポンス受信時に実行するJavaScriptメソッド
        function responseJson() {
            alert(window.JSON.stringify(wkJson));
        }
    </script>
</head>
<body>
    <form name="mainForm" method="post" action="ctrl">

     <a href="javascript:<LaBee:ajaxSubmit 
        target="web.AjaxSample2"
        execute="ajaxReceive"
        retExecFunc="responseJson()"
        formName="mainForm"/>">
        AjaxPost送信            
    </a>

    </form>
</body>
</html>   
  • 는 13번째 줄의 Ajax 비동기 응답을 수신할 때 실행하는 방법을 정의했다.방법명칭은 임의이지만 매개 변수를 받아들일 수 없음
  • 14행 json 내용을 표시합니다.수신된 json 대상은wkJson이라는 대상명으로 참조할 수 있음
  • 24행 Ajax 비동기 응답 수신 시 실행되는 방법의 이름을 정의합니다.()의 값입니다.매개변수를 설정할 수 없습니다.
  • 비즈니스 논리 구현 예
    package sample.blogic.web;
    import java.util.*;
    import com.bee_wkspace.labee_fw.app.base.AppBaseNotBeanUseBlogic;
    import com.bee_wkspace.labee_fw.common.JsonUtil;
    import com.bee_wkspace.labee_fw.core.annotation.FwBlogic;
    import com.bee_wkspace.labee_fw.core.annotation.FwExeMethod;
    import com.bee_wkspace.labee_fw.core.context.ResponseContext;
    import com.bee_wkspace.labee_fw.exception.FwException;
    /**
     * JSONレスポンスサンプルビジネスロジック
     */
    @FwBlogic(beanReuse = false)
    public class AjaxSample2Blogic extends AppBaseNotBeanUseBlogic {
        /**
         * コンストラクタ。
         */
        public AjaxSample2Blogic() {
            super();
        }
        /**
         * Ajax非同期イベント処理。
         */
        @FwExeMethod
        public ResponseContext ajaxReceive() throws FwException {
            try {
                Map<String, Object> dataMap = new HashMap<String, Object>();
                dataMap.put("Language", "Java");
                List<String> dataList = new ArrayList<String>();
                dataList.add("Windows");
                dataList.add("Mac");
                dataList.add("Linux");
    
                dataMap.put("Enviroment", dataList);
    
                JsonUtil<Map<String, Object>> jsonUtil = new JsonUtil<Map<String, Object>>();
                String json = jsonUtil.encodeToString(dataMap);
                responseContext.setResponseType(ResponseContext.RESPONSE_TYPE_JSON);
                responseContext.setResponseJson(json);
            } catch (Exception e) {
                throw new FwException(e);
            }
            return responseContext;
        }
    }     
    
  • 32행~40행 JSON 데이터의 원시 데이터 구조를 만듭니다.
  • 제42행 JSON 유틸리티 클래스 생성, (총칭형 설정 변환 대상의 클래스형)
  • 43번째 행의 원래 객체 데이터를 JSON 문자열로 변환합니다.
  • 44행 응답에서 JSON으로 돌아가도록 설정합니다.
  • 45행 응답을 반환하는 JSON 문자열을 설정합니다.(JSON 변환 처리는 LaBeeFramework에서 잭슨 라이브러리 사용)
  • 샘플을 실행하면 다음 JSON에서 생성한 JavaScript의 alert가 표시됩니다.

    좋은 웹페이지 즐겨찾기