20210928 검색화면
검색화면
1. msearch 폴더 안에 폼과 리스트 파일을 생성했다.
2. m_search_form.jsp
아이디, 권한, 이름, 이메일을 선택할 수 있는 선택창을 sk, 검색란을 sv로 정의한다.
m_search_list.jsp 를 import 시켜서 form 만 실행시켜도 값을 받아올 수 있다.
전체코드 :
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<form action ="<%= request.getContextPath()%>/msearch/m_search_list.jsp" method="post">
<select name ="sk">
<option value = "m_id">아이디</option>
<option value = "m_level">권한</option>
<option value = "m_name">이름</option>
<option value = "m_email">이메일</option>
</select>
<input type="text" name ="sv">
<input type="submit" value ="검색버튼">
</form>
실행화면 :
3. m_search_list.jsp
1. 드라이버를 로딩 2. db 연결 3. sk(아이디,권한,이름,이메일) sv(검색란) 에 따른 쿼리준비 4. select 쿼리 실행 5. 종료 |
sk(select) 와 sv(검색란)의 값을 받아온다.
request.setCharacterEncoding("euc-kr");
String sk = request.getParameter("sk");
String sv = request.getParameter("sv");
System.out.println(sk+"<---sk");
System.out.println(sv+"<---sv");
1,2,4,5 는 동일하고 3번만 변경하면 된다.
1)
if(sk == null & sv == null){
pstmt = conn.prepareStatement("select * from tb_member");
System.out.println(pstmt + "<-- pstmt");
System.out.println("1조건 - sk null 이고 sv null");
}else if(sk != null & sv.equals("")){
pstmt = conn.prepareStatement("select * from tb_member");
System.out.println(pstmt + "<-- pstmt");
System.out.println("2조건 - sk null이 아니고 sv 공백조건");
}else if(sk != null & sv != null){
if(sk.equals("m_id")){
pstmt = conn.prepareStatement("select * from tb_member where m_id=?");
System.out.println(pstmt + "<-- pstmt");
System.out.println("3조건 - sk null 이 아니고 sv null이 아닌 조건");
pstmt.setString(1, sv);
}else if(sk.equals("m_level")){
pstmt = conn.prepareStatement("select * from tb_member where m_level=?");
System.out.println(pstmt + "<-- pstmt");
System.out.println("3조건 - sk null 이 아니고 sv null이 아닌 조건");
pstmt.setString(1, sv);
}else if(sk.equals("m_name")){
pstmt = conn.prepareStatement("select * from tb_member where m_name=?");
System.out.println(pstmt + "<-- pstmt");
System.out.println("3조건 - sk null 이 아니고 sv null이 아닌 조건");
pstmt.setString(1, sv);
}else if(sk.equals("m_email")){
pstmt = conn.prepareStatement("select * from tb_member where m_email=?");
System.out.println(pstmt + "<-- pstmt");
System.out.println("3조건 - sk null 이 아니고 sv null이 아닌 조건");
pstmt.setString(1, sv);
}
}
2)
pstmt = conn.prepareStatement("select * from tb_member where m_id=?");
pstmt = conn.prepareStatement("select * from tb_member where m_level=?"); 에서
m_id, m_level, m_name, m_email 은 앞에서 sk 로 정의했었다.
pstmt = conn.prepareStatement("select * from tb_member where "+sk+"=?");
--> where (m_id 등) = ? 으로 변경이 가능하다.
if(sk == null & sv == null){
pstmt = conn.prepareStatement("select * from tb_member");
System.out.println(pstmt + "<-- pstmt");
System.out.println("1조건 - sk null 이고 sv null");
}else if(sk != null & sv.equals("")){
pstmt = conn.prepareStatement("select * from tb_member");
System.out.println(pstmt + "<-- pstmt");
System.out.println("2조건 - sk null이 아니고 sv 공백조건");
}else if(sk != null & sv != null){
pstmt = conn.prepareStatement("select * from tb_member where "+sk+"=?");
//선택하는 sk를 변수에서 받아옴.
pstmt.setString(1, sv);
}
System.out.println(pstmt + "<-- pstmt");
3) 중복되는 문장을 selectQuery 에 담고 작성해보기
String selectQuery = "select * from tb_member";
//중복되는 select ~ member 문장을 변수로 선언
if(sk == null & sv == null){
pstmt = conn.prepareStatement(selectQuery);
System.out.println(pstmt + "<-- pstmt");
System.out.println("1조건 - sk null 이고 sv null");
}else if(sk != null & sv.equals("")){
pstmt = conn.prepareStatement(selectQuery);
System.out.println(pstmt + "<-- pstmt");
System.out.println("2조건 - sk null이 아니고 sv 공백조건");
}else if(sk != null & sv != null){
pstmt = conn.prepareStatement(selectQuery + "where "+sk+"=?");
pstmt.setString(1, sv);
}
System.out.println(pstmt + "<-- pstmt");
실행결과 :
1) 입력없이 검색
-> 전체 테이블이 조회
2) 권한 : 판매자로 검색
로그인 세션 활용
- 가짜로 로그인 했었던 파일을 활용하여 로그인화면 만들기.
프로젝트 layoutLoginMG2 에서 파일을 가져와 일부를 수정한다.
1) 레이아웃을 설정하여 index부분에 검색화면이 나오게 수정한 후
select 쿼리를 이용하여 아이디, 패스워드, 권한을 확인하여 화면을 실행한다.
1) 쿼리문장 준비 : 입력한 id를 조회하여 해당되는 정보를 불러온다.
if(id == null & pw == null){
System.out.println(pstmt + "<-- pstmt");
System.out.println("1조건 - id null 이고 pw null");
}else if(id != null & pw != null){
pstmt = conn.prepareStatement("select * from tb_member where m_id=?");
System.out.println(pstmt + "<-- pstmt");
pstmt.setString(1, id);
}
2) 입력한 id, pw 의 값을 가져오고
dbid, dbpw, dbname, dblevel, dbeamil , msg 을 null 값으로 설정.
msg 는 알림 메시지로 활용
String id = request.getParameter("id");
String pw = request.getParameter("pw");
System.out.println(id + "<- id ");
System.out.println(pw + "<- pw ");
String dbid = null;
String dbpw = null;
String dbname = null;
String dblevel = null;
String dbemail= null;
String msg = null;
3)
if(rs.next()){
System.out.println("1-1 아이디 일치");
dbid = rs.getString ("m_id");
dbpw = rs.getString ("m_pw");
dbname = rs.getString ("m_name");
dblevel = rs.getString ("m_level");
dbemail = rs.getString ("m_email");
if(pw.equals(dbpw)){
System.out.println("로그인 성공");
session.setAttribute("S_ID", dbid);
session.setAttribute("S_NAME", dbname);
session.setAttribute("S_LEVEL", dblevel);
msg = "로그인성공";
}else{
System.out.println("비번 불일치");
msg = "비번불일치";
}
}else{System.out.println("비번 불일치");
msg = "아이디불일치";
}
전체코드 :
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String dbid = null;
String dbpw = null;
String dbname = null;
String dblevel = null;
String dbemail= null;
System.out.println(id + "<- id ");
System.out.println(pw + "<- pw ");
String msg = null;
//1단계 드라이버 로딩
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
//JDBC 프로그램 순서
//01단계 :드라이버 로딩 시작
Class.forName("com.mysql.jdbc.Driver");
String jdbcDriver = "jdbc:mysql://localhost:3306/dev41db?" +
"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev41id";
String dbPass = "dev41pw";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
System.out.println(conn + "<-- conn m_list.jsp");
if(conn != null){
out.println("01 DB연결 성공");
}else{
out.println("02 DB연결 실패");
}
//3단게 셀렉트 쿼리문장 준비
if(id == null & pw == null){
System.out.println(pstmt + "<-- pstmt");
System.out.println("1조건 - id null 이고 pw null");
}else if(id != null & pw != null){
pstmt = conn.prepareStatement("select * from tb_member where m_id=?");
System.out.println(pstmt + "<-- pstmt");
pstmt.setString(1, id);
}
//4단게 쿼리 실행
rs = pstmt.executeQuery();
//executeQuery --> select쿼리 실행-------------------
System.out.println(rs + "<-- rs m_list.jsp");
//5단계 쿼리실행결과 사용: 아이디일치/ 비번일치 비교
if(rs.next()){
System.out.println("1-1 아이디 일치");
dbid = rs.getString ("m_id");
dbpw = rs.getString ("m_pw");
dbname = rs.getString ("m_name");
dblevel = rs.getString ("m_level");
dbemail = rs.getString ("m_email");
if(pw.equals(dbpw)){
System.out.println("로그인 성공");
session.setAttribute("S_ID", dbid);
session.setAttribute("S_NAME", dbname);
session.setAttribute("S_LEVEL", dblevel);
msg = "로그인성공";
}else{
System.out.println("비번 불일치");
msg = "비번불일치";
}
}else{System.out.println("비번 불일치");
msg = "아이디불일치";
}
//6~ 8딘계 객체 종료
rs.close();
conn.close();
%>
<script type="text/javascript">
alert('<%= msg %>');
location.href='<%= request.getContextPath()%>/index.jsp';
</script>