본문 바로가기

전자정부프레임워크

전자정부프레임워크[최종소스 첨부]_(4)코드관리 프로그램, 새로운 패키지, AJAX 이용한 등록, 일반게시판, 회원관리

myproject_new.zip
2.88MB


<코드관리 프로그램>

1. codes
(1) 코드번호 - code -> 일련번호
(2) 코드구분 - gid -> (job:1, hobby:2)
(3) 코드이름 - name

-- 테이블 --
create table codes (
code number not null primary key,
gid number not null,
name varchar2(100) not null
);

-- 시퀀스 --
create sequence codes_seq
increment by 1
start with 1
maxvalue 99999;

[ 파일 목록 ]
0. CodeVO.java
1. CodeController.java
2. CodeService.java
3. CodeServiceImpl.java
4. CodeDAO.java
5. Code_SQL.xml
6. codeWrite.jsp / codeList.jsp / codeModifyWrite.jsp

[ 프로그램 목록 ]
1. codeWrite.do
2. codeWriteSave.do
3. codeList.do
4. codeModifyWrite.do
5. codeModifySave.do
6. codeDelete.do




<새로운 패키지 사용>
- 다음의 3가지 패키지를 새로 만들어 사용하려한다.
main.web
main.service
main.service.impl

- 스프링 주고에서는 패키지를 만들때 반드시 등록을 해야하는데 등록하는 방법은 매우 간단하다.
- 물론 Service, Controller, Impl, DAO와 같은 중요 흐름 클래스를 이용하는 경우에 등록해야한다.
- 스프링 구조와 관계없는 클래스들은 등록되지 않은 패키지를 사용하여도 관계없다.

패키지등록

1. dispatcher-servlet.xml


2. context-common.xml

※ 위의 내용과 같이 main이라는 단어를 추가로 넣어주기만 하면 된다.




<AJAX>
AJAX란, JavsScript의 라이브러리 중 하나이며 Asynchronous Javascript And Xml(비동기 자바스크립트와 xml)의 약자이다.
브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법이며 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이다.
즉, 비동기 전송이란 깜빡임 없이 데이터를 전송하는 기법으로 볼 수 있다.

※ 우선 jquery 파일이 필요하고 아래와 같이 스크립트 연결을 해야한다.

jquery-1.12
0.29MB
jquery-ui.js
0.51MB


(설정내용)

<script src="/myproject_new/script/jquery-1.12.4.js"></script>
<script src="/myproject_new/script/jquery-ui.js"></script>

 

<script>
function sn_submit(){
var formData = $("frm").serialize();
$.ajax({
	type : "POST",
    data : formData,
    url : "boardWriteSave.do",
    dataType : "text",
    success : function(data){
    	if(data == "ok"){		//저장 처리 후 리턴 값 확인
        	alert("저장하였습니다.");
            location = "boardList.do";
        }else{
        	alert("저장 실패했습니다. 다시 시도해 주세요.");
        }
    },
    error : function(){
    	alert("오류발생");
    }
});

}
</script>




<Ajax 관련 프레임워크 설정>

String 값 return
- ajax 기법을 이용하여 기능을 수행하고 다시 화면에 단건의 값을 return하는 경우는
특별한 설정(ex : pom.xml)을 하지 않는다.

{BoardController.java}

@RequestMappring(value = "/boardWriteSave.do")
@ResponseBody
public String insertBoard(BoardVO vo) thros Exception{
	String result = BoardService.insertBoard(vo);
    String messgage = "";
    if(result == null){
    	message = "ok";
    }else{
    	message = "fail";
    }
    return message;
}


Map값 return
- 화면으로 다량의 데이터를 전송해야하는 경우는 아래의 설정에 따른다.

1. pom.xml

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifaceId>
    <version>2.5.1</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.5.1</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.1</version>
</dependency>

3. controller

@RequestMapping(value = "/boardWriteSave.do")
@ResponseBody
public Map<String,Object> insertBoard(BoardVO vo) throws Exception{
	
    Map<String, Object> map = new HashMap<String, Object>();
    String result = "";
    
    result = boardService.insertBoard(vo);
    System.out.println("result::" + result);
    if(result == null) result = "ok";
    
    map.put("result", result);
    return map;
}


4. jsp

var formData = $("#frm").serialize();

$.ajax({
	type : "POST",
    data : formData,
    url : "/boardWriteSave.do",
    success : function(data){
    	alert(data.result);
        if(data.result == "ok"){
        	alert("저장하였습니다.");
            location.href = "<c:url value = "/boardList.do"/>";
        }else{
        	alert("저장 실패했습니다. 다시 시도해 주세요.");
        }
    },
    error : function(){
    	alert("오류발생");
    }
});




<일반게시판>

[프로그램 목록]
1. boardWrite.do
2. boardWriteSave.do
3. boardList.do
4. boardDetail.do
5. boardModifyWrite.do
6. boardModifySave.do
7. boardDelete.do
8. passWrite.do

[구조]

1. main.web
- BoardController.java

2. main.service
- BoardService.java

3. main.service.impl
- BoardServiceImpl.java
- BoardDAO.java

4. Board_SQL.xml

5. board / boardWrite.jsp
boardList.jsp
boardDetail.jsp
boardModify.jsp
boardWrite.jsp


[화면캡쳐]




<회원관리>

- 우편번호 데이터

post1.csv
3.02MB


[회원관리 프로그램 제작]
기능구현1 : 회원정보 등록
기능구현2 : 로그인 / 로그아웃
기능구현3 : 회원정보 수정

1. 테이블
create table member(
userid varchar2(20) not null primary key,
pass varchar2(100) not null,
name varchar2(20) not null,
birth date,
phone varchar2(20),
gender varcher2(1) check(gender in('M','F')),
zipcode varchar2(10),
address varchar2(100),
reg timestamp default sysdate
);

※ in의 쓰임 예
- where name in ('홍길동', '이순신')
- where name = '홍길동' or name = '이순신'


2. 저장 서비스 작성
(1) MemberVO.java(2) MemberService.java(3) MemberImpl.java(4) MemberDAO.java(5) Member_SQL.xml


3. Mapping 서비스 작성(1) MemberController.java


[중요 소스 보기]

1. 로그인

 

@RequestMapping("/loginWriteSave.do")
@ResponseBody
public String loginProcessing(MemberVO vo, HttpSession session) throws Exception{
	int cnt = memberService.selectMemberCnt(vo);
    if(cnt==1) session.setAttribute("SessionUserID", vo.getUserId());
    
    return cnt+"";
}

 

 

2. 회원정보 수정 화면

 

@RequestMappring("/memberModify.do")
public String selectMemberModify(HttpSession session, Model model) throws Exception{
	
    String userid = (String)session.getAttribute("SessionUserID");
    MemberVO vo = membeService.selectMemberDetail(userid);
    model.addAttribute("memberVO", vo);
    
    return "member/memberModify";
}

 

 

3. 회원정보 수정 처리

 

@RequestMapping("/memberModifySave.do")
@ResponseBody
public String updateMember() throws Exception{
	
    String userid = (String) session.getAttribute("SessionUserID");
    vo.setUserid(userid);
    
    //cnt == 1
    int cnt = memberService.updateMember(vo);
    
    String message = "";
    if(cnt == 1) message = "ok";
    
    return message;
}

 

 

4. 로그아웃

 

@RequestMapping("/logout.do")
public String logout(HttpSession session){
	
    session.removeAttribute("SessionUserID");
    
    return "redirect:/loginWrite.do";
}