▶ 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를 로드할 필요 없음