아래는 전자정부프레임워크에서 넥사크로 로그인 예제 입니다.
[SQLITE]
DROP TABLE user;
CREATE TABLE user (
id varchar(20) PRIMARY KEY,
pwd varchar(20) NOT NULL,
name varchar(20) NOT NULL,
email varchar(20) NOT NULL
);
INSERT INTO user (id, pwd, name, email)
VALUES ('test', '1234', '테스트계정', 'test@naver.com');
[전자정부 프레임워크]
1. Controller0.java
procLogin.do 요청이 왔을 때 로그인 처리를 합니다.
※ 원래 MVC 구성상 서비스 부분이 분리되어야 하지만, 주제 목적상 간단 명료하기 위해 서비스 부분도 컨트롤러 부분에서 구현되었습니다.
package com.study.controller;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.nexacro17.xapi.data.PlatformData;
import com.nexacro17.xapi.data.VariableList;
import com.nexacro17.xapi.tx.HttpPlatformRequest;
import com.nexacro17.xapi.tx.HttpPlatformResponse;
import com.nexacro17.xapi.tx.PlatformType;
@Controller
public class Controller0{
// 로그인 처리
@RequestMapping(value="/procLogin.do", produces="application/xml; charset=UTF8", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public void procLogin(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws Exception {
int retCode;
String retMsg;
// id, pwd 파라미터
HttpPlatformRequest pReq = new HttpPlatformRequest(request);
pReq.receiveData();
PlatformData in_pData = pReq.getData();
VariableList in_varList = in_pData.getVariableList();
String id = in_varList.getString("id");
String pwd = in_varList.getString("pwd");
// 로그인 처리
boolean rst = isUser(id, pwd);
if(rst) {
// 세션 등록
HashMap<String, Object> userMap = getUser(id);
session.setAttribute("USER", userMap);
retCode = 0;
retMsg = "로그인 되었습니다.";
}
else {
// 세션 삭제
session.removeAttribute("USER");
retCode = -1;
retMsg = "로그인에 실패 하였습니다.";
}
// response 생성
PlatformData out_pData = new PlatformData();
VariableList out_varList = out_pData.getVariableList();
out_varList.add("ErrorCode", retCode);
out_varList.add("ErrorMsg" , retMsg);
HttpPlatformResponse pRes = new HttpPlatformResponse(response, PlatformType.CONTENT_TYPE_XML, "UTF-8");
pRes.setData(out_pData);
pRes.sendData();
}
// 사용자 존재 유무 조회 (서비스 구현)
private boolean isUser(String id, String pwd) throws Exception {
boolean result = false;
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\sqlite-tools-win32-x86-3280000\\study.db");
PreparedStatement stat = conn.prepareStatement("SELECT * FROM user WHERE id = ? AND pwd = ?");
stat.setString(1, id);
stat.setString(2, pwd);
ResultSet rs = stat.executeQuery();
while (rs.next()) {
result = true;
}
rs.close();
return result;
}
// 사용자 정보 조회(서비스 구현)
private HashMap<String, Object> getUser(String id) throws Exception {
HashMap<String, Object> hashMap = null;
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\sqlite-tools-win32-x86-3280000\\study.db");
PreparedStatement stat = conn.prepareStatement("SELECT * FROM user WHERE id = ?");
stat.setString(1, id);
ResultSet rs = stat.executeQuery();
while (rs.next()) {
hashMap = new HashMap<String, Object>();
hashMap.put("id", rs.getString("id"));
hashMap.put("name", rs.getString("name"));
hashMap.put("email", rs.getString("email"));
break;
}
rs.close();
return hashMap;
}
}
[넥사크로]
1. 화면생성
Static00 - 아이디
Static01 - 비밀번호
Edit00 - 아이디 입력란
Edit01 - 비밀번호 입력란
Button00 - 로그인 버튼
2. 스크립트
로그인 버튼 클릭시 /HelloWorld/procLogin.do로 아이디와 비밀번호가 파라미터로 로그인 요청이 됩니다.
this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var id = "";
var url = "procLogin.do";
var reqDs = "";
var respDs = "";
var args = "id="+this.Edit00.text + " pwd="+this.Edit01.text;
var callback = "received";
this.transaction(id, nexacro.getApplication().CONTEXT + url, reqDs, respDs, args, callback);
};
this.received = function(id, code, message)
{
if (code == 0) {
this.alert("SUCESS["+code+"]:"+message);
} else {
this.alert("Error["+code+"]:"+message);
}
}
[결과화면]
'개발 - 넥사크로 강좌' 카테고리의 다른 글
넥사크로 강좌[3] transaction (0) | 2019.07.03 |
---|---|
넥사크로 강좌[2] 버튼 클릭시 페이지 이동 (0) | 2019.06.27 |
넥사크로 강좌[1] Hello World (0) | 2019.06.26 |
넥사크로 강좌[0] Intro (0) | 2019.06.26 |