본문 바로가기

Servlet

[jsp] 회원 정보 리스트 출력파트(select)

# sms 수신 여부 별 검색옵션

 

출력할 형식 :  아이디, 고객명, 통신사, 전화번호, 이메일 sms,이메일 수신여부 다 select 해와야함

 

 

 # db 에서 데이터 select 해오기  

 

● DB 연동 : include file="./dbconfig.jsp"

db 연동한 dbconfig.jsp를 로드

 

sql 문법작성 :

① 광고수신 radio를 선택 후 해당 내용을  database쿼리문에 반영하기 위한 구문

 

② 일련번호 구하기 위한 구문

  • setString 은 table, 컬럼명에는 사용하지 않음(value , where 절에 사용 O)
  • PreparedStatement를 선언하여 연결을 했을 경우 새롭게 로드 할 필요 없음

 

# 이메일 수신여부 검색옵션 추가

● 조건이 추가됨 : sms 동의 Y,N  /  email 동의 Y,N

  • sql 구문 추가

 

 

  • 조건문 변경

  • `name`값 추가 설정

 

 

리스트 출력하는 반복문 :

 

 

 # radio 파트  

 

● `name` 값을 ad_sms 로 설정

● if 문 사용해서 선택시 체크 되도록 설정

 

checkbox, radio 사용 할 때 조건문 사용 시 '==' or equals 인지 유의 (자료형에 따라 달라짐)

 


전체 회원 리스트 출력

● hidden 으로 name 값 설정

  • 'hidden' 으로 name 값 넘길 경우 초기 접속 시 넘겨지는 값은 무조건 null 

조건문의 조건 설정시 유의해야함 (조건을 null 로 핸들링해야함)

 

 

● 조건문을 null 로 핸들링

  • 조건문으로 전체 검색과 수신여부 검색 선택시 각각 다른 sql 구문 적용되게끔 작성


회원정보 상세보기 페이지 (jsp10.jsp)

● POST로 전송

  • 개인 정보이기 때문에 필히 post로 전송해야함(get으로 했다가는 db 다 뚫림)
  • storage 를 이용해서 가져 온 후 삭제하는 방법 도 있음(jsp로는 한계가 있음)
  • 별도 form 을 생성해서 전송, hidden 으로 name 생성

이런식으로 form 을 아예 밑으로 내려도 작동

  • hidden 에 midx 값 태워 전송 시킴 (jsp8.js)

jsp8.js

 

 

● 전송시킨 값 받아 출력시키기

  • 넘긴 midx 값 받아 해당 midx 에 해당하는 필요한 데이터 값 출력

 

  • 사용자 리스트 버튼 작동 시 회원정보 리스트 페이지(jsp8.jsp)로 돌아가도록 작성
    function gopage() {
        location.href="./jsp8.jsp";
    }

 

● 포인트(적립금) 출력

 

(sql 기초)

  • 포인트 (적립금) sql 구문 작성 : DB에서 그냥 point를 검색하면 아래와 같이 리스트가 출력 되기 때문에 모든 포인트를 합해서 출력해야함

 

  • sum 을 이용해서 포인트 총 합계 값인 total 값을 구하는 sql문 작성후 잘 나오는지 확인

 

 

  • sql 문법에 이상 없으니 jsp에 작성

이렇게 하면 너무 막코드 임;;

 

  • DecimalFormat 라이브러리 이용해서 천단위마다 , 찍히게 끔 함

 

 

 

sql 구문 간소화 : view table 생성한 후 select 

● sql 구문 작성하기 쉽게 처음부터 view table로 만들어 놓고 select 

  • 이렇게 두개로 나뉜 sql 구문을 하나로 코드 간소화 (select 와 join을 동시에 사용)
"select a.*, sum(b.mall_point) as total from mall_member as a join points as b where a.midx=? and a.mall_id=b.mall_id group by b.mall_id;";

a 테이블의 모든 컬럼과 b테이블의 포인트 합계값인 total을 중복되게 하지 않기 위해 b테이블의 id 로 그룹화.

a테이블의 id는 중복되는 값이 없음.  b테이블의 아이디가 중복되는 값이기 때문에 b테이블의 id로 그룹화.

 

그러나 이렇게 하면 pays(상품구매리스트)를 같이 핸들링 할 수 없음 

 

∴ ① mall_member join points (회원 정보 테이블과 포인트 테이블을 join) 를 view 로 만들고, ② pays(상품구매내역) 을 별도로 ddl 로 빼서 핸들링 해줘야 함

 

  • ① view table (테이블 명 : total_page)생성 : mall_member 와 points 를 join 시킨 view table 생성 후 select 
create view total_page as (select a.*, sum(b.mall_point) as total from mall_member as a join points as b where a.mall_id=b.mall_id group by b.mall_id);

 

  • ② 상품 구매내역(pays)

 

● 마무리

  • 라이브러리 닫기


정보 수정 페이지 (Ajax로 수정된 값 전송) - jsp11.jsp

 

 

● 기준이 되는 값 : auto_increment

  • 절대 중복되지 않는 값으로 해야함 (이름,아이디 등은 중복 될 수 있음)

 

● a 태그에서 함수 호출 시 에러발생 해결법

링크로 jsp

  • 엣지나 크롬에서는 잘 되나, 다른 브라우저(사파리)에서 안될때가 있음.(브라우저 특성상)
  • javascript:void //해당 함수가 있을 때
  • javascript void(): //함수가 없을때

 

 

● 개인정보 수정 버튼 핸들링

  • body 에 hidden 의 `name` 값으로 고유값을 설정
  • 수정된 값을 `name` 에 저장해 다시 보내줘야함

 

 

  • 개인정보 수정 버튼 작동

 

뭐가 찍히는 지 콘솔로 확인 후 

 

수정되는 값이 제대로 적용되어 콘솔에 뜨는지 확인

 

 

 

  • ajax 통신 - jsp11.jsp ( jsp12.jsp 에 수정된 데이터 send)

 

jsp12.jsp / 여백 없애기

여백을 없애줘야 함, jsp12.jsp 자체가 java 코드 이기 때문에 공백이 생기면 오류 발생

 

 

  • ajax 통신 시 send로 name 값 여러개 보내기 (data 라는 변수에 한번에 담아 send로 날리기 위함)

 

post 통신 시 "content=type"으로 " application/x-www-form-urlencoded " 를 꼭 써줘야 작동함

 

  • jsp12.jsp (수정한 데이터 처리)

 

 

 

받아온 callback 데이터를 jsp11.jsp 의 html 이 받아서 alert 를 띄움


pageing 출력 파트

 

일반적으로 1페이지 당 게시물은 10개 씩 출력
게시물이 17개라면 
1page => 10 개
2page => 7개 
이런 식으로 출력 되어야함

 

 

● 출력되는 페이지 수 계산

  • pageno 를 float 형으로 설정 

최종 페이지 수(total_pg)는 int형이어야 하므로 int로 pageno 를 설정할 경우 소수점 이하 자릿수가 다 버려지기 때문에 그렇게 되면 데이터 손실이 발생한다. ex)22개의 데이터를 5개씩 출력할때 마지막 2개의 데이터가 보이지 않음

alldata는 int형이 고정되어있기 때문에 바꿀 수 있는 pageno를 float형으로 써줌으로써 소수점이하 숫자들을 보존, 그 값을 ceil 로 반올림 시켜 데이터가 손실 나지 않고 마지막 페이지에 잘 보이도록 함

 

 

● 페이지 번호 핸들링 문법

 

  • 페이지 번호 값은 get으로 넘김 (post로 넘기는건 말도 안됨)

  • sql에 limit 숫자를 적용하는 방법
limit 'N' , '한페이지 당 출력될 데이터 갯수'
'N' :
 (현재번호 - 1) * 한페이지당 출력하는 데이터 갯수

 

 

 

  • sql 구문에 limit 사용해서 원하는 데이터 수 만큼 끊어줌

 

 

 

  • 일련번호도 페이지 넘길때 마다 바뀌도록 함
일련번호 : 데이터 전체 갯수 - 한페이지 당 갯수

 

 

'Servlet' 카테고리의 다른 글

web.xml  (0) 2024.07.05