1018 SSO

yookyungmin·2022년 10월 21일
0

HTTP -> Stateless Protocol
서버는 클라이언트를 기억하지 않는다
클라이언트에게 인증의 의미를 인터넷 쿠키값을 준다(팔찌개념)

쿠키를 이용한 로그인은 보안성이 낮다
장바구니에 쓰임

쿠키를 보내는대신에 서버에 클라이언트 정보를 남기고
서버에는 개개인 한명한명 저장할수 있는 창고(세션)를 만둘어
어디서든 접근 가능한 저장소
세션
어플리케이션 키값을 안쓰고 로그인
키값이 탈취를 당할수 잇는데 난이도가 높아짐

메모릳 덤프, 방지
네트워크 스니핑 방지

세션key
(key, value)
세션 key,key 별개
세션에 저장된 값은 모든 페이지에서 접근가능
request는 매개변수라 필요한곳까지만

세션으로 만든 장바구니는 pc를 옮겨도 제품이 남아있음
장바구니
쿠기로 만든 장바구니는 pc를 옮기면 제품이 안남아잇음

public int getRecordCount() throws Exception{ //게시글 갯수반환
				String sql="select count(*) from board";
				
				try(Connection con= this.getConnection();
						PreparedStatement pstat = con.prepareStatement(sql);
						ResultSet rs = pstat.executeQuery()){
				rs.next();
				return rs.getInt(1);
				}
				
		}
		
		public String getPageNavi() throws Exception { //페이지 네비
			//총 몇개의 글
			
			int recordTotalCount=this.getRecordCount(); //board 테이블에 총 144개의 글이 있다고 가정
			int recordCountPerPage = 10; //한페이지당 몇개의 글을 보여줄것인가
			int naviCountPerpage =10; //게시판 하단의 page vaigator 가 한번에 몇개씩 보여질지저장
		
			int pageTotalCount=0;
			if(recordTotalCount%recordCountPerPage>0) {  //총게시글/ 한페이지 몇개의 글 나머지가 0보다 크면 +1 아니면 그대로 //페이지 총 갯수
				
				pageTotalCount=(recordTotalCount/recordCountPerPage)+1;
			}else {
				pageTotalCount=(recordTotalCount/recordCountPerPage);
			} //전체페이지갯수
			
			int currentPage =240; //현재 페이지가 7
			//7 : 1~10
			//15 : 11 ~20
			//28 : 21~30
			//현재 페이지부터 시작 페이지를 얻어서 +9  // 1의 자리를 날리고 1을 끼워넣으면 시작페이지 
			
			if(currentPage<1) { //현재 페이지가 1보다 작다그러면 현재 페이지는 1
				currentPage=1;  
			} else if(currentPage>pageTotalCount) { //현재 페이지가 토탈페이지갯수보다 크면 현재페이지=토탈
				currentPage=pageTotalCount;
			} //보안코드
			
				
			int startNavi=(currentPage-1)/naviCountPerpage * naviCountPerpage +1; 
			int endNavi= startNavi+naviCountPerpage-1;
				//int startNavi=(currentPage-1)/10 *10 +1; 
				//1의 자리를 날리고 1을 끼워넣으면 시작페이지  //10의 배수일떈 성립이 안되어서 currentPage-1
				//10페이지를 본다는 기준하에
			 
			if(endNavi>pageTotalCount) {
				endNavi=pageTotalCount;  //네비게이터끝이 토탈 페이지 보다 크면 둘은 같다
			}
			
//			System.out.println("현재 페이지" +currentPage);
//			System.out.println("네비게이터 시작:" + startNavi);
//			System.out.println("네비게이터 끝"+endNavi);
//			
			boolean needPrev = true;
			boolean needNext=true;
			
			
			if(startNavi==1) {
				needPrev=false;
			}
			if(endNavi==pageTotalCount){
				needNext=false;
			}
			
			StringBuilder sb = new StringBuilder();
			
			if(needPrev) { //왼쪽 화살표가 필요한 상황이면
				sb.append("<");
				System.out.println("<");
			}
			
			for(int i = startNavi; i<= endNavi; i++) {
				sb.append(1+"");
				System.out.println(i+"");
			}
			
			if(needNext) {
				sb.append(">");
				System.out.println(">");
			}
			
			return sb.toString();
			  /*
			   * int pageTotalCount= (recordTotalCount+9) / recordCountPerPage;
			   * 수정전
			   * recordCountPerPage = 10일때만 해당될겁니다간단하게 페이지당 2페이지보이게하면 저걸로하면 페이지 엄청불어남
	
			   * 수정후
			   * int pageTotalCount= (recordTotalCount+(recordCountPerPage-1)) / recordCountPerPage;


			   * */
		//	게시글의 갯수 / 한페이지당 보여줄게시글+1=전체페에지 갯수
				
		}

0개의 댓글