본문 바로가기
Java

[java] boardList.js / boardList.jsp 로그인 여부

by jyee 2023. 3. 31.
728x90
반응형

전체 코드 중에서 로그인 유효성 검사를  할 수 있는  로그인 부분이 작동되지 않았다.

로그인을 안 하고 글 목록에 들어가면  작성 글을 읽으려면 먼저 alert가 뜨고 로그인을 하세요 라는  알림이 나와야하는데 안 뜨고 로그인을 하지 않더라도 작성 글들을 다 읽을 수 있는게 문제였다...  

뭐가 문제인지 한참을 보다가,

로그인 부분에서 if 문 #memId가 적혀진 곳으로 보면 좋을 거 같아서

일단 boardList 관련된 파일들을 다 열어보았다. 

 

그러다 발견한 것...  boardList.jsp 파일에서 빠진 문구가 있었던 것!!!

 

 

boardList.js

//$(function(){});
$(document).ready(function(){
	$.ajax({
		type: 'post',
		url: '/miniProject_jQuery/board/getBoardList.do',
		data: 'pg=' + $('#pg').val(), //{'pg':$('#pg').val()} 문자형식이나 json형식 중 아무거나 
		dataType :'json',  //서버로 부터 받는 데이터의 자료형  'text', 'html', 'xml', 'json' class타입의 객체는 빋을 자료형이 없다
					      //객체를 json으로 변환시켜서 가져와야 한다.
		success: function(data){
			//console.log(JSON.stringify(data));   //이렇게 찍어야 data를 json으로 제대로 보여줌
			//console.log(data.list[0],seq);
			//console.log(data.list[1],name);
			
			$.each(data.list, function(index,items){
				console.log(index + ", seq=" + items.seq + ', name=' + items.name);
				
				$('<tr/>').append($('<td/>',{
					align: 'center',
					text: items.seq
					
				})).append($('<td/>',{
					}).append($('<a/>', {
						href: '#',
						class: 'subjectA subjectA_'+items.seq,
						text: items.subject
					}))
				).append($('<td/>',{
					align: 'center',
					text: items.id		
				})).append($('<td/>',{
					align: 'center',
					text: items.hit
				})).append($('<td/>',{
					align: 'center',
					text: items.logtime
				})).appendTo($('#boardListTable'))  
				
				////답글///////
				for(var i=1; i<=items.lev; i++){
					$('.subjectA_'+items.seq).before("&emsp;")
				}
				if(items.pseq != 0){
					$('.subjectA_'+items.seq).before($('<img/>',{
						'src': '/miniProject_jQuery/image/reply.gif'
					}));	
				
				}
				
			}); //each문이 for문과 똑같음 //여기까지 each문
			
			//페이징 처리
			$('#boardPagingDiv').html(data.pagingHTML);
			
			//로그인 여부
			$('.subjectA').click(function(){
				if($('#memId').val() == '')
					alert('먼저 로그인하세요');
				else{
					//console.log($(this).parent().prev().prop('tagName'));
					
					var seq = $(this).parent().prev().text();
					console.log(seq);
					var pg = $('#pg').val();
					
					location.href = '/miniProject_jQuery/board/boardView.do?seq='+seq+'&pg='+pg;
				}
			});
		},
		error: function(err){
			console.log(err);
		}		                          
	});
});

b

 

 

 

boardList.jsp

<body>

<input type= "text" id="pg" value="${pg }">
<input type="text" id="memId" value="${memId }">
<table id="boardListTable" border="1" cellpadding="5" cellspacing="0" frame="hsides" rules="rows">

 <input type="text" id= "memId" value="${memId }"> 이 부분이 아예 없었다..... 

그냥 memId가 없었지만 있다고 생각했었나보다.

없었음에도 불구하고 boardList.js에서는 if문이 굉장히 잘 돌아갔기 때문에 왜인가 했었는데, 

만약 if($('#memId').val() 여기서 #memId가 없어도 뭔가 대체 되는게 있으니 에러가 터지지 않고 else로 빠진거를 증명하기 위해 if문을 쓰고 alert를 찍어보니 objct object가 나왔다. 

 

빈 값이 아니라서 if 문이 시행되는 것이 맞았다. 

 

++)) B학원을 같이 수강 중인 현지씨가 알려준, 추가 설명

  /boardListT.jsp에서 ${memId}에 대한 값 설정이 이뤄지지 않았을 경우,
 해당 변수가 선언조차 되지 않은 상태에서 값 조화를 실행하게 되는 것이므로 undefined 반환 

이 undefined가 String 타입으로 받아서 하는 것이기 때문에 에러가 따로 터지지 않는 것 
            
// 만일 memId라는 변수는 선언되었는데, scope 겁색 후 해당 변수의 값이 조화가 안된다면

// ${memId}, el 표현식 상 "" 빈값(empty)을 반환

 

어렵지만 이래도 돌아감 

휴~ 하나 알아간다

 

728x90
반응형

'Java' 카테고리의 다른 글

[JAVA] 정수의 최대값, 최소값 출력  (0) 2024.02.19
[Java] chapter2. 변수(varibale)  (0) 2023.10.26
[JAVA] Java의 정석 기초/ 변수  (1) 2023.10.23
[jQuery] 글 수정  (0) 2023.04.03
JQuery board글쓰기 기능  (0) 2023.03.28