전자정부프레임워크나 스프링은 싱글톤 패턴임
일반적으로는 객체를 쓸때마다 선언하고 선언하고 나중에 delete 반복를 하지만
싱글톤은 한번 생성 하면 계속 쓸수 있음!
ex)전정부의 bean객체가 한번 로드 시켜놓고 계속 쓸 수 있음. 일정 메모리를 가져간다는 단점이 있지만 가비지 메모리는 안생김
/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>
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
(예) 이전 화면의 로그인 성공 여부에 따른 화면 세팅이 다를 때
$( 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파일을 연동시킴)
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
(참고 : https://youtu.be/UvcJvtrgb9Y 5일차 첫번째 , 세번째)
MainController에서 Service 인터페이스를 호출시켜 ServiceImpl을 실행시킴
MainController에서 로그인체크를 한다치면 Sql.xml에서 db에 사용자의 아이디와 패스워드가 있는지 체크하는 쿼리문을 만들어야하고, 쿼리문의 함수를 만들면 Mapper에서 메서드 선언해줘야함. 또 Mapper는 Service와 ServiceImpl에 연결돼있어 거기서 각각 또 함수 선언해주기