Session
- 웹 사이트 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법이다.
- 사용자가 브라우저를 닫아, 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.
- 쿠키와의 차이점
- 쿠키 : 클라이언트 측 컴퓨터에 모든 데이터를 저장한다.
- 세션은 서비스가 돌아가는 서버측에 데이터를 저장하고, 세션의 키 값만 클라이언트 측에 남겨둔다.
- 쿠키는 보안에 취약하고, 세션이 이를 보완해주는 역할을 한다.
Cookie
- 내가 만든 쿠키~
- 웹 브라우저가 보관하고 있는 데이ㅓ다.
- 웹 서버에 요청을 보낼 때 헤더에 담아서 전송한다.
- 웹 브라우저는 쿠키가 삭제되기 전까지, 웹 서버에 쿠키를 전송한다.
- 정보가 로컬 즉 사용자 컴퓨터에 저장되기 때문에 보안에 위협을 받을 수 있다.
String cookieCheck = request.getHeader("Cookie");
- 이걸로 쿠키값을 가져올 수 있나보다.
- 그러면 Spring에서 세션에 있나 확인하면 될 것 같다.
- 참고
JSP, Spring 로그인 세션 처리
- 클라이언트가 요청할 때마다 세션을 확인해 유효한 사용자인지 확인해야 한다.
HttpSession
@PostMapping
public String hello(..., HttpSession session) {
...
}
- HttpSession 타입 객체를 추가하면, 메서드를 호출할 때 MVC가 HttpSession 객체를 생성하고 전달한다.
- 만약 객체가 이미 존재한다면, 전달만 한다.
@PostMapping
public String hello(..., HttpServletRequest req) {
HttpSession session = req.getSession();
}
req.getSession(true);
// 세선이 있으면, 기존 세션 반환
// 세션 없으면, 생성해서 반환
req.getSeesion(false);
// 세션이 있으면, 기존 세션 반환
// 세션 없으면, null 반환
- getSession() 메서드를 이용해, HttpSession을 생성하거나 호출한다.
- 앞의 방법과 달리 필요할 때만 생성하는 것이 가능하다.
SQL + Mybatis 동적 쿼
<![CDATA[...]]
- Mapper의 sql 쿼리 내에서 <= or >= 를 사용했을 때 에러가 났었다.
- XML 문법으로 착각하지 말라고 <![CDATA[...]]를 써놓아야 했다.
<if test="..."></if>
<if test="name != null">
sql
</if>
- 단일 조건문
- if 문의 test의 결과가 true 일 경우 태그 안의 SQL문이 동작한다.
<choose>
<when test="">
<when test="">
...
</choose>
- 다중 조건
JqGrid
그리드 안에 버튼 넣기
Virtual Scroll
- scroll: -1 로 설정하면, 레코드를 한 번에 보여준다는 설정이다.
- 이게 데이터가 많아서 timeout이 발생했다.
$("#ptGrid").jqGrid({
...
scroll : 1,
rowNum : 50,
...
});
- 이렇게 설정하면, virtual scroll을 사용한다는 것이다.
- 50개 단위로 레코드 로딩? 아무튼 불러온다는 설정
- 참고
Formatter
- 참고
- form, inline, cell 편집에서 셀 내용의 고급 포맷팅을 제공한다.
- 기본 형식과 사용자 정의 형식 2가지 방법이 있다. -> 여기선 사용자 정의 형식
- jqGrid의 Formatter 모듈이 로딩이 되어야 사용이 가능하다.
function myformatter (cellvalue, options, rowObject) {
// 뭔가 작업
return new_formated_cellvalue;
}
- cellvalue : farmat을 지정할 값
- options : rowId, colModel을 포함하는 객체
- rowObject : datatype 옵션에 정의된 형식으로 표현된 row 데이터 (xml or json)
- 올바르게 작동하기 위해선 return 반환해야한다.
Spring Interceptor
JSP / JS Scope / jQuery / DOM(Document Object Model)
1. 웹 브라우저 시작
2. 웹 문서 읽기
3. DOM 생성
- DOM 생성 후 ready 메소드 실행
4. 이미지 포함한 요소들 로드
5. 페이지 로딩 완료
- 모든 요소들이 로드되면, load 메소드가 실행된다.
DOM / .ready()
$(document).ready();
- DOM이 완전히 불러와지면 실행되는 Event다.
- .ready() Event는 계속 발생한다.
- 참고 : document.ready()에서 함수 선언 방법에 따른 실행 여부
시도해볼거
var allData = [];
var totalPages = $("#yourGridId").getGridParam("lastpage");
for (var i = 1; i <= totalPages; i++) {
var pageData = $("#yourGridId").jqGrid("getCol", "yourColumnName", i);
allData = allData.concat(pageData);
}
- 모든 페이지에서 데이터 수집: 모든 페이지에 대해 getCol 메소드를 사용하여 데이터를 수집해야 합니다. 이를 자동화하기 위해 jqGrid의 API나 JavaScript 코드를 작성할 수 있습니다.
- var totalPages = $("#yourGridId").getGridParam("lastpage");: jqGrid의 lastpage 속성을 사용하여 페이징된 페이지의 총 수를 가져옵니다. 이 속성은 jqGrid의 설정에 따라 다를 수 있으며 페이지 수를 결정합니다.
- for (var i = 1; i <= totalPages; i++) { ... }: for 루프를 사용하여 모든 페이지에 대해 반복합니다. i 변수는 페이지 번호를 나타냅니다.
- var pageData = $("#yourGridId").jqGrid("getCol", "yourColumnName", i);: getCol 메소드를 사용하여 현재 페이지(i)에서 지정된 열(yourColumnName)의 데이터를 가져옵니다. 이 데이터는 pageData 변수에 저장됩니다.
document.getElementById와 $() 차이
SQL 성능
multiple join
ansi sql
between과 부등호
SSO
Claim 정보
- 사용자에 대한 정보를 포함하는 데이터 조각
- 사용자 식별, 권한 부여 및 인증에 사용된다.
- 토큰 형태로 제공된다.
web.xml
- 한 폴더에 위에 해당하는 모든 파일이 있다면,
- 위에서부터 비교해 매칭되는 걸로 적용하고, 뒤에는 무시된다.
Module path vs class path
response.sendRedirect()
IDP / SP
'회사' 카테고리의 다른 글
[MariaDB] VARCHAR에서 한글은 몇글자로 계산할까? (0) | 2024.03.20 |
---|---|
Mybatis <selectKey> (0) | 2024.03.18 |
Comparable 과 Comparator (0) | 2024.02.16 |
10월 후기 (0) | 2023.10.16 |
9월 후기 (0) | 2023.10.16 |