[WEB] eGov 활용해서 웹 만들기

HyeJi9908·2022년 11월 25일

싱글톤 패턴

전자정부프레임워크나 스프링은 싱글톤 패턴임
일반적으로는 객체를 쓸때마다 선언하고 선언하고 나중에 delete 반복를 하지만
싱글톤은 한번 생성 하면 계속 쓸수 있음!

ex)전정부의 bean객체가 한번 로드 시켜놓고 계속 쓸 수 있음. 일정 메모리를 가져간다는 단점이 있지만 가비지 메모리는 안생김


MVC 패턴

참고


게시글 검색 조회 쿼리

/src/main/resources/egovframework/sqlmap/intte/Intte_SQL_mysql.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="EgovMainDAO">

    <select id="selectIntteClsList" parameterType="IntteVO" resultType="EgovMap">
        SELECT A.intte_seq,
               A.cls_seq,
               A.cls_nm
        FROM tb_intte_cls A
            INNER JOIN tb_intte B ON A.intte_seq = B.intte_seq AND B.use_yn = 'Y'
        WHERE A.intte_seq = #{intteSeq}
            AND A.cls_seq = #{clsSeq}
    </select>

    <select id="selectIntteList" resultType="EgovMap">
        SELECT intte_seq,
               intte_nm
        FROM tb_intte
        WHERE use_yn = 'Y'
        
    </select>

    <select id="selectIntteMbr" parameterType="IntteMbrVO" resultType="EgovMap">
        SELECT *
        FROM tb_intte_mbr A
            INNER JOIN tb_intte B ON A.intte_seq = B.intte_seq AND B.use_yn = 'Y'
        WHERE A.intte_seq = #{intteSeq}
            AND A.intte_mbr_id = #{intteMbrId}
    </select>
    
    <select id="selectList" resultType="ListVO">
        SELECT cls_nm, subj_nm, cls_st_date, cls_fns_date, CASE WHEN use_yn = 'Y' THEN '사용' WHEN use_yn = 'N' THEN '미사용' ELSE NULL END AS use_yn, cret_dt
                
        FROM tb_intte_cls
        WHERE intte_seq=#{intteSeq}
        
        
        
        <if test="searchCnd==1">
          AND  cls_nm LIKE CONCAT ('%', #{searchWrd},'%')
        </if>
        
        <if test="searchCnd == 2">
          AND  subj_nm LIKE CONCAT ('%', #{searchWrd},'%')
        
        </if>
        
        <if test="searchCnd == 0">
          AND (
               cls_nm LIKE CONCAT ('%', #{searchWrd},'%')
               OR
               subj_nm LIKE CONCAT ('%', #{searchWrd},'%')
              )
        </if>
    
    </select>

</mapper>

Login.jsp와 Login.js의 관계

jsp가 서버측 언어로써 동적으로 웹페이지 생성,
js가 클라이언트 측 언어. 페이지의 정적인 부분 코드(데이터처리)
(메인컨트롤러.java는 로그인 유무에 따른 세션 )

Login.js : /hustar6-3/src/main/webapp/js/Login.js
Login.jsp : /hustar6-3/src/main/webapp/WEB-INF/jsp/main/Login.jsp
EgovMainController.java :/hustar6-3/src/main/java/egovframework/let/main/web/EgovMainController.java

로그인jsp이 head,bod 있고 그안에 ycss,부분 있고 ..
로그인js는 로그인jsp에서 호출할 함수들 정의, 함수안에 ajax써서 로그인 성공하면 어쩌고 실패하면 저쩌고

@만약 js내에 ajax로 데이터를 받는 부분이 있다면 MainController에서 그 부분에 해당하는 메서드를 만들어야함.@ResponseBody가 어노테이션으로 있어야하고 + 리턴 타입은 데이터이기에 byte[] 로, 최종 리턴 객체는
return new Gson().toJson(rtn).getBytes("UTF-8");

정리) jsp는 서버에서 자원(코드)들을 사용해 결과를 사용자에게 보여줌,
js는 클라이언트에서 자원(코드)들을 사용해 사용자의 웹 브라우저 화면에 실행,
jQuery는 js를 간편하게 쓰도록 하는 라이브러리,
Servlet은 java로 html문서를 출력하는 것
근데 이걸 java로 간편하게 하기위해 나온게JSP


전자정부프레임워크 활용 시작하기

맨 처음 화면에서 js가 세팅되도록 할려면

(예) 이전 화면의 로그인 성공 여부에 따른 화면 세팅이 다를 때

$( document ).ready(function() {
	<c:if test="${!empty msg}">
		alert("${msg}");
	</c:if>
});

(이때 jsp내에 body파트 초반에

<script type="text/javascript" src="<c:url value='/js/Login.js?ver=2' />"></script>

가 있어야 지정 js파일을 연동시킴)

소스상단에 jsp로 인식되기위한 코드

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

서비스 작업 생성시 소스 수정 순서

(참고 : https://youtu.be/UvcJvtrgb9Y 5일차 첫번째 , 세번째)

  • vo(SampleVO복사 후 수정, db의 컬럼들 각각 private로 선언,자료형 동일 권장)
  • controller(EgovSampleController복사 후 수정)
  • service(src/main/java/egovframework/example/board 아래 service폴더 생성)EgovSampleService복사 후 수정,service 폴더에 생성
  • impl(위의 서비스 폴더 아래 impl폴더 생성) EgovSampleServiceImpl 복사후 수정. Impl 폴더에 생성
  • dao = mapper(SampleDAO또는 SampleMapper 복사 후 수정,mybatis쓰면 mapper) 위의 .../impl 아래 위치
  • query = mybatis(EgovSample_Sample_SQL.xml 복사 후 수정)

전체적인 흐름

MainController에서 Service 인터페이스를 호출시켜 ServiceImpl을 실행시킴
MainController에서 로그인체크를 한다치면 Sql.xml에서 db에 사용자의 아이디와 패스워드가 있는지 체크하는 쿼리문을 만들어야하고, 쿼리문의 함수를 만들면 Mapper에서 메서드 선언해줘야함. 또 Mapper는 Service와 ServiceImpl에 연결돼있어 거기서 각각 또 함수 선언해주기

0개의 댓글