인 스 턴 스 분석 자바+jQuery+json 작업 과정(로그 인)

본 고 는 주로 자바 환경 에서 jQuery 를 사용 하여 JSON 데이터 전송 을 하 는 상호작용 과정 을 설명 한다.
작가 의회계 관리 시스템(개인 판)원본 코드 다운로드설명 을 참고 하 다.
1.관련 기술,도구 소개
1.간단히 소개JSON,JSON 은 경량급 데이터 교환 형식 입 니 다.사람 이 읽 고 쓰기 쉽다.기계 적 으로 해석 하고 생 성 하기 도 쉽다.키 값 은 형식 에 대해 데 이 터 를 표시 합 니 다.자바 의 Map 데이터 저장 형식 과 비슷 합 니 다.구체 적 인 세부 사항 은 참고 하 십시오http://www.json.org/json-zh.html.
2.배경 JSON 에 대응 하 는 데이터 처리 도구json-lib,각종 형식의 데 이 터 를 포함 하 는 도구 류,예 를 들 어 자바 빈,배열,집합(Collection)등참조 API 문서.
3.jQuery 프레임 워 크 의 데이터 표현 형식 입 니 다.jQuery 에 익숙 하 다 면 jQuery 가 사용 하 는 데이터 전송 은 모두 JSON 형식 입 니 다.예 를 들 어 우리 가 자주 사용 하 는$.ajax 방법:
$.ajax({
	url : url,
	data : {
		id : chkValue
	},
	cache : false,
	dataType : "json",
	success : function(result){
		alert(result);
	}
);

 
그 중{...}은 JSON 형식의 데 이 터 를 표시 합 니 다.
2.프론트 데스크 의 작업 방식 은 시스템 로그 인 설명 을 쉽게 이해 할 수 있 도록 마지막 으로 하나의 사례 로 1.로그 인 페이지 코드 를 설명 할 것 입 니 다http://code.google.com/p/finance-p/source/browse/trunk/login.jsp.
   :
<input id="loginName" name="loginName" size="20" type="text" />
 
  :
<input id="password" name="password" size="20" type="password" />

 
2,javascript 파일 로그 인 login.js
/**
 *         
 */
function regFormValidator() {
	$.formValidator.initConfig({formid:"loginForm"});
	$("#loginName").formValidator({
		onshow : "      ",
		onfocus : "     2  ,  4  "
	}).inputValidator({
		min : 1,
		onerror : "         ,   "
	});
 
	$("#password").formValidator({
		onshow : "     "
	}).inputValidator({
		min : 6,
		onerror : "   6   ,   "
	});
}
 
$(function() {
	//         
	regFormValidator();
 
	$('#submit').click(function(){
		//         、      
		var valid = jQuery.formValidator.pageIsValid('1');
		if (valid) {
			$(this).attr('value', '    ……').attr('disabled', true);
		} else {
			return;
		}
 
		//     
		$.ajax({
			url	: 'login.do',
			data	: { loginName:$('#loginName').val(), password: $('#password').val() },
			success : function(result){
				//   result            
				if(result &amp;&amp; result == 'success') {
					window.location.href = 'index.jsp';
				} else {
					alert('    ,        ,   !');
				}
			}
		});
 
	});
});

 
이렇게"로그 인"단 추 를 눌 렀 을 때 ajax 요청 을 실행 합 니 다:
  • 검증 표 의 완전 성
  • ajax 요청 을 백 엔 드 로 보 냅 니 다.값 은 data 키 를 통 해 JSON 형식 으로 백 엔 드 로 전 송 됩 니 다
  • 배경 에서 돌아 오 는 result 가 success 일 때 로그 인 성공 을 표시 하면 페이지 가 첫 페이지 index.jsp
  • 로 이동 합 니 다.
    3.백 스테이지 작업 방식
    백 스테이지 가 프론트 데스크 보다 좀 복잡 해서 데이터베이스,인 코딩 또는 일부 업무 논리 와 관련 이 있다 고 생각 합 니 다.
    1.요청 파라미터 획득
    두 가지 방법 이 있 습 니 다.
  • request.getParameter("key")를 통 해
  • json-lib 공구 꾸러미 를 통 해 가 져 오기
  • 이것 은 주로 json-lib 를 통 해 인 자 를 얻 는 방법 을 설명 합 니 다.
    먼저 우 리 는 공공 적 인 방법 을 써 서net.sf.json.JSONObject대상 을 되 돌려 줄 수 있 습 니 다.구체 적 인 코드 는 다음 과 같 습 니 다.
    /**
     *         JSONObject  
     *
     * @param request HttpServletRequest   
     * @return json   String  
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    protected JSONObject readJson(HttpServletRequest request) throws Exception {
    	JSONObject jsonObject = new JSONObject();
    	try {
    		Map parameterMap = request.getParameterMap();
                    //            key value set JSONObject 
    		Iterator paIter = parameterMap.keySet().iterator();
    		while (paIter.hasNext()) {
    			String key = paIter.next().toString();
    			String[] values = (String[])parameterMap.get(key);
    			jsonObject.accumulate(key, values[0]);
    		}
    		log.debug("      json=" + jsonObject.toString());
    	} catch (Exception e) {
    		log.error("  json    ,      :nt" + e.getMessage());
    		e.printStackTrace();
    		throw e;
    	}
    	return jsonObject;
    }

     
    이 방법 을 통 해 우 리 는 JSONobject 대상 을 얻 은 후에 key 를 통 해 대응 하 는 value 를 얻 을 수 있다.
    2、로그 인 처리 Action
    public ActionForward login(ActionMapping mapping, ActionForm actionForm,
                 HttpServletRequest request,HttpServletResponse response) throws Exception {
    	JSONObject jsonObject = readJson(request);
    	String name = jsonObject.getString("loginName");
    	String pass = jsonObject.getString("password");
    	try {
    		int loginFlag = userManager.validLogin(name, pass);
    		if (loginFlag == UserManager.LOGIN_SUCCESS) {
    			User user = userManager.getUserByNameAndPass(name, pass);
    			UserUtil.saveUser2Session(user, request);
    			log.info("  &lt;" + user.getUserName()
                                  + ",ip=" + request.getRemoteAddr() + "&gt;    ");
    			print(response, RESBONSE_SUCCESS);
    		} else if (loginFlag == UserManager.LOGIN_FAIL) {
    			print(response, RESBONSE_ERROR);
    		}
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	return null;
    }

      
    설명:
    34 줄 에서 우 리 는 방금 준비 한 readJSon 방법 을 통 해 JSonobject 대상 을 얻 었 습 니 다.그 다음 에 key 를 통 해 사용자 이름과 비밀 번 호 를 얻 었 습 니 다.그 다음은 업무 논리의 검증 작업 입 니 다.통과 한 후에 우 리 는 프론트 데스크 에 요청 결 과 를 되 돌려 줍 니 다.우 리 는 위 44,46 줄 과 같은 작은 방법 이 필요 하 다.
    protected void print(HttpServletResponse response, String info) throws IOException {
    	try {
    		response.getWriter().print(info);
    	} catch (IOException e) {
    		e.printStackTrace();
    		throw e;
    	}
    }

     
    여기 서 한 가지 설명 할 것 이 있 습 니 다.출력 흐름 을 얻 었 을 때 에피소드 가 있 습 니 다.제 가 개발 할 때 사용 한 tomcat 5.5.5.26 버 전 입 니 다.그 당시 의 작성 방법 은 다음 과 같 습 니 다.
    response.getOutputStream().print(info);

     
                  tomcat6  ,         ,        ,            ,
      getWriter      ,               ……
    
    

     
    자바 개발 시 struts 를 사용 합 니 다.struts 는 Action Mapping 대상 을 되 돌려 야 합 니 다.그러나 ajax 요청 에 서 는 특정 페이지 로 돌아 갈 필요 가 없습니다.페이지 를 뛰 어 넘 는 동작 이 전혀 없 기 때문에 해결 방법 은 간단 합 니 다.직접 return null 을 사용 하면 됩 니 다.
    결 과 를 출력 한 후 jQuery 의 ajax success 방법 은 요청 결 과 를 받 은 다음 결과 에 따라 업무 논 리 를 처리 할 수 있 습 니 다 O(∩∩)O~
    OK,이 모든 요청 이 끝 났 습 니 다.모 르 는 것 이 있 으 면 메 시 지 를 남기 거나"에 대하 여".로 연락 주세요.
    주:본 고 는 오리지널 문장 입 니 다.전재 할 때http://www.wsria.cn/archives/300

    좋은 웹페이지 즐겨찾기