본문 바로가기
CLASS/JSP

#2-1 / jsp include , 수신여부에 따른 회원정보 리스트 출력

by eungSe__ 2024. 6. 25.
⚡ include
jsp,servlert등 스크립트 언어는 서버가 없으면 돌아가지 않음
<%@ include file="./dbconfig.jsp" %>​

▶ include file 
    정적 문법 - 변수활용 가능
    외부파일 로드(단,다른 서버에 있는 파일은 로드하지 못함)

    @ :
라이브러리 불러오기,파일 로드,페이지 표시할 때 사용 / jstl 엔진 로드 시 사용


<jsp:include page="./dbconfig.jsp"></jsp:include>

<jsp:include page="./dbconfig.jsp" flush="false"></jsp:include>

▶ jsp:include page=" " :
    동적 문법-변수 활용 불가능
    flush : cache 메모리에 있는 buffered 사용 유/무 (거의 false 씀, ?v=1 같은느낌..?)
              false - 데이터를 새롭게 반영 , true - 데이터 반영 x (반대임)


👀
정적형태

 - DB사용X , ex) 로그인,회원가입
변수활용 가능

동적형태
- DB사용O
배열 
백엔드 투입
변수활용 불가능
ex) 상품 리스트


⚡ sms,이메일 수신여부에 따른 회원정보 리스트 출력 파트(select)

실제론 이렇게 jsp에 바로 사용 x 걍 해보는거
이건 어렵게 짜는거 => 쉬운거 내일 해볼예정 

너눔어렵땀..



input type hidden일경우( ==text ) 
1. 값이 있을경우엔 equals로 받기
2. 값이 없을경우엔 연산기호로(==)로 받기
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="./dbconfig.jsp" %>

<%	
	String sms = (String)request.getParameter("ad_sms");
	String email = (String)request.getParameter("ad_email");
	String full = (String)request.getParameter("all_user");
	
	if(sms == null || sms == "Y" && email == null || email == "Y"){
		sms = "Y";
		email = "Y";
	}
	
	String table = "mall_member";
	String sql = "";
	String sql2 = "";

	if(full == null || full.equals("null")){ //전체회원이 아닌 각 파트별 수신여부 회원 리스트
		sql = "select * from "+ table +" where ad_sms=? and ad_email=? order by midx desc";
		sql2 = "select count(*) as ctn from "+table + " where ad_sms=? and ad_email=? order by midx desc";
	}else{ //전체회원 출력 파트
		sql = "select * from " + table + " order by midx desc";
		sql2 = "select count(*) as ctn from " + table + " order by midx desc";
	};
	
	PreparedStatement ps = dbcon.prepareStatement(sql);
	if(full==null || full.equals("null")){
		ps.setString(1,sms);
		ps.setString(2,email);
	}
	ResultSet rs = ps.executeQuery();

	ps = dbcon.prepareStatement(sql2);
	if(full==null || full.equals("null")){
		ps.setString(1,sms);
		ps.setString(2,email);
	}	

	ResultSet rs2 = ps.executeQuery();
	rs2.next(); //반복문 사용하지않을경우엔 이렇게 따로한번 써줘야함
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 리스트 출력 파트(select)</title>
</head>
<body>
	<!-- SPA형태 - 같은 페이지에서 돌림 -->
	<form id="frm" method="post" action="./jsp8.jsp">
		<input type="hidden" name="all_user" value=<%=full%>> <!-- hidden에 Y가 있을 경우 전체회원 리스트 출력 -->
		<p>
			SMS 광고수신 : 
			<input type="radio" name="ad_sms" value="Y" <%if(sms.equals("Y")) out.print("checked");%>>동의함 
			<input type="radio" name="ad_sms" value="N" <%if(sms.equals("N")) out.print("checked");%>>동의안함
		</p>
		<p>
			Email 광고수신: 
			<input type="radio" name="ad_email" value="Y" <%if(email.equals("Y")) out.print("checked");%>>동의함
			<input type="radio" name="ad_email" value="N" <%if(email.equals("N")) out.print("checked");%>>동의안함
		</p>
		<input type="button" value="검색" onclick="search()">
		<input type="button" value="전체회원" onclick="all_member()">
	</form>
	
	<table border="1" cellpadding="0" cellspacing="0">
		<thead>
			<tr>
				<th>번호</th>
				<th>아이디</th>
				<th>고객명</th>
				<th>통신사</th>
				<th>전화번호</th>
				<th>이메일</th>
				<th>SMS 수신 여부</th>
				<th>이메일 수신 여부</th>
				<th>관리</th>
			</tr>
		</thead>
		<tbody>
			<% 
			int w= Integer.parseInt(rs2.getString("ctn"));
			while(rs.next()){
			%>
			<tr>
				<td><%= w %></td>
				<td><%= rs.getString("mall_id")%></td>
				<td><%= rs.getString("mall_name")%></td>
				<td><%= rs.getString("tel_corp")%></td>
				<td><%= rs.getString("tel_no")%></td>
				<td><%= rs.getString("mall_email")%></td>
				<td><%= rs.getString("ad_sms")%></td>
				<td><%= rs.getString("ad_email")%></td>
				<td>
					<input type="button" value="상세보기" onclick="viewpage(<%= rs.getString("midx")%>)">
					<input type="button" value="삭제">
				</td>
			</tr>
			<%
			w--; }
			%>
		</tbody>
	</table>
</body>
<script src="./js/jsp8.js?v=3"></script>
</html>
<%
rs2.close();
rs.close();
ps.close();
dbcon.close();
%>



- input type button onclick js파일

function search(){
	frm.all_user.value = "null";
	frm.submit();
	//검색 버튼 클릭시 value를 문자 "null"로 넣어줌 , 사실 다른 텍스트 넣어도 됨
}

function all_member(){
	frm.all_user.value = "Y";
	frm.submit();
}

너눔어렵땀.. 

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



[ post 통신에 따른 조건문 핸들링 - input type hidden,text ] 참고
https://dev-eunse.tistory.com/169

 

🔽 

 

상세정보 버튼 클릭시

function viewpage(no) {
	location.href='./jsp10.jsp?idx='+no;
}

//parameter 방식 x
function viewpage(no) {
//	var frm2 = document.createElement('form');
//	frm2.method = 'POST';
//	frm2.action = './jsp10.jsp';
//	
//	var input = document.createElement('input');
//	input.type = 'hidden';
//	input.name = 'idx';
//	input.value = no;
//	
//	frm2.appendChild(input);
//	document.body.appendChild(frm2);
	
	frm2.idx.value = no;	
	frm2.submit();
}
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="./dbconfig.jsp" %>
<%
	String idx = request.getParameter("idx");
	String sql = "select * from mall_member where midx=?";
	
	PreparedStatement ps = dbcon.prepareStatement(sql);
	ps.setString(1,idx);
	ResultSet rs = ps.executeQuery();
	rs.next();

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>개인정보 상세내역</p>
<table border="1" cellpadding="0" cellspacing="0">
	<tbody>
		<tr>
			<td>아이디</td>
			<td><%= rs.getString("mall_id") %></td>
		<tr>
		<tr>
			<td>고객명</td>
			<td><%= rs.getString("mall_name") %></td>
		<tr>
		<tr>
			<td>연락처</td>
			<td>[<%= rs.getString("tel_corp") %>] <%= rs.getString("tel_no") %></td>
		<tr>
		<tr>
			<td>이메일</td>
			<td><%= rs.getString("mall_email") %></td>
		<tr>
		<tr>
			<td>주소</td>
			<td>(<%= rs.getString("mall_post") %>) <%= rs.getString("mall_road") %> <%= rs.getString("mall_addr") %></td>
		<tr>
		<tr>
			<td>광고수신(SMS)</td>
			<td><%= rs.getString("ad_sms") %></td>
		<tr>
		<tr>
			<td>광고수신(email)</td>
			<td><%= rs.getString("ad_email") %></td>
		<tr>
		<tr>
			<td>가입일자</td>
			<td><%= rs.getString("mall_join") %></td>
		<tr>
	</tbody>
</table>
<input type="button" value="리스트 보기" onclick="golist()">

</body>

<script type="text/javascript">
	function golist(){
		location.href = "./jsp8.jsp";
	}
</script>

</html>
<%
rs.close();
ps.close();
dbcon.close();
%>

 

사실 이건 get으로 하면 x => 보안 👎