관리 메뉴

me made it !

[JSP] 20230317 JSP 회원 아이디 로그인 본문

TIL/JSP

[JSP] 20230317 JSP 회원 아이디 로그인

yeoney 2023. 3. 17. 15:45
반응형
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>

<a href="<%=request.getContextPath()%>/member/memberJoin.do">회원가입하기</a>
<a href="<%=request.getContextPath()%>/board/boardList.do">게시판목록</a>


<%if (session.getAttribute("midx")!=null){
	int midx = (int)session.getAttribute("midx");
	out.println("회원번호;"+midx);
	String memberName = (String) session.getAttribute("memberName");
	out.println("회원이름: "+ memberName);
%>

<a href="<%=request.getContextPath()%>/member/memberLogOut.do">회원로그아웃</a> 

<%
}else {
%>
<a href="<%=request.getContextPath()%>/member/memberLogin.do">회원로그인</a> 
	
<%}%>




</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원로그인</title>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
		//자동실행영역
});
function check(){
	//alert("각 값이 있는지 체크하는 구문을 만들어보세요");	
	
	if ($("#memberId").val() == ""){
		alert("아이디를 입력하세요");
		$("#memberId").focus();
		return;
	}else if ($("#memberPwd").val() == ""){
		alert("비밀번호를 입력하세요");
		$("#memberPwd").focus();
		return;
	}
	var fm = document.frm;
	//이 경로로 데이터를 감추어서 전송한다
	fm.action ="<%=request.getContextPath()%>/member/memberLoginAction.do";	
	fm.method = "post";
	fm.submit();	//전송
	
	return;
}	

function idCheck(){
//	alert("아이디 체크창입니다.");	
	let memberId = $("#memberId").val();
	
	$.ajax({
		url: "<%=request.getContextPath()%>/member/memberIdCheck.do",		
		method: "POST",
		data: {"memberId": memberId },
		dataType: "json",
		success : function(data){	
			if (data.value =="0"){
				alert("사용 가능한 아이디입니다.");
				$("#memberIdCheck").val("Y");
			}else{
				alert("사용 불가능한 아이디 입니다");
			}	
		},
		error : function(request,status,error){
			alert("다시 시도 하시기 바랍니다.");		
		}		
	});	
	
	return;
}
</script>
</head>
<body>
회원로그인 페이지
<form name="frm" id="frm">
<table style="border:1px solid #CCC;width:500px">
<tr>
<td>아이디</td>
<td>
<input type="text" name="memberId" id="memberId">
</td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="memberPwd" id="memberPwd"></td>
</tr>

<tr>
<td></td>
<td><input type="button" name="btn"  id="btn" value="확인" onclick="check();"></td>
</tr>
</table>
</form>
</body>
</html>
package example1230.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import example1230.dbconn.Dbconn;
import example1230.domain.MemberVo;

public class MemberDao{

	//멤버변수 전역
	private Connection conn;
	
	public MemberDao(){		//MemberDao 생성할 때 Dbconn 객체도 생성시킴 => conn객체 생성
		Dbconn dbconn = new Dbconn();
		this.conn = dbconn.getConnection();
	}
	
	
	 public int memberInsert(String memberId, String memberPwd, String memberName , String memberPhone , String memberEmail , String memberGender , String memberAddr , String memberBirth){
		 int value = 0;
		 PreparedStatement pstmt= null;	 
		 String sql ="INSERT INTO member1230(midx,memberId,memberPwd,memberName,memberPhone,memberEmail,memberGender,memberAddr,memberBirth,ip)"+
			       "VALUES(midx_seq.nextval,?,?,?,?,?,?,?,?,null)";
	// 구문 쿼리클래스
			try{
				 pstmt = conn.prepareStatement(sql);
				 pstmt.setString(1,memberId);	
				 pstmt.setString(2,memberPwd);
				 pstmt.setString(3,memberName);
				 pstmt.setString(4,memberPhone);
				 pstmt.setString(5,memberEmail);
				 pstmt.setString(6,memberGender);
				 pstmt.setString(7,memberAddr);
				 pstmt.setString(8,memberBirth);
				 pstmt.executeUpdate();
			}catch(Exception e){
					e.printStackTrace();
			}finally{
				try{
					pstmt.close();
					conn.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			return value;
	 }
	
	 @SuppressWarnings("finally")
	public ArrayList<MemberVo> memberSelectAll() {
		 ArrayList<MemberVo> alist = new ArrayList<MemberVo>();
		 String sql = "select midx, memberid, membername, delyn, writeday from member1230 order by midx desc";
		 
		 PreparedStatement pstmt = null;
		 ResultSet rs = null;
		 try {
			 pstmt = conn.prepareStatement(sql);
			 rs = pstmt.executeQuery();
		
			 
			 while(rs.next()) {	//커서의 다음 값이 존재하면 참
			 MemberVo mv = new MemberVo();		//MemberVo 객체 생성해서
			 mv.setMidx(rs.getInt("midx"));	//rs 값들을 옮겨담는다
			 mv.setMemberid(rs.getString("memberid"));
			 mv.setMembername(rs.getString("membername"));
			 mv.setDelyn(rs.getString("delyn"));
			 mv.setWriteday(rs.getString("writeday"));
			 alist.add(mv);		//alist  클래스 안에 MemberVo 객체를 하나씩 추가한다
			 
			 }
		 
		 } catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}		
		
		 
		 return alist;
		}
	 }
		public int memberIdCheck(String memberId){
			int value = 0;
			String sql ="select count(*) as cnt from member1230 where memberid = ?";
			PreparedStatement pstmt = null;
			ResultSet rs = null;
				try {
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, memberId);
					rs = pstmt.executeQuery();
					
					if(rs.next()) {	//커서가 이동을 해서 다음 값이 존재하면 참 -> 진행할 수 있다.
						value = rs.getInt("cnt");					
					}
				}catch(SQLException e) {
					e.printStackTrace();
				}finally {
					try {
						rs.close();
						pstmt.close();
						conn.close();
					} catch (Exception e) {					
						e.printStackTrace();
					}
				}
				return value;
		}
		 
		 public MemberVo memberLogin(String memberId, String memberPwd) {
			 System.out.println("memberid: "+memberId);
			 System.out.println("memberpwd: "+memberPwd);
			 
			 
			 MemberVo mv = null;
			 String sql = "select * from member1230 where delyn ='n' and memberid=? and memberpwd=?";
			 PreparedStatement pstmt=null;
			 ResultSet rs= null;
			 try {
				pstmt = conn.prepareStatement(sql);
				pstmt.setString(1,memberId);
				pstmt.setString(2,memberPwd);
				rs = pstmt.executeQuery();	//컬럼 값을 담기 위한 메소드
				
				if(rs.next()) {
					mv = new MemberVo();
					mv.setMidx(rs.getInt("midx"));
					mv.setMembername(rs.getString("memberName"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				try {
					rs.close();
					pstmt.close();
					conn.close();
				} catch (Exception e) {					
					e.printStackTrace();
				}
			}
			 return mv;
		 }
		
}

memberController

else if (str.equals("/member/memberLogin.do")) {
			System.out.println("memberLogin.do");
			
			
			RequestDispatcher rd = request.getRequestDispatcher("/member/memberLogin.jsp");
			rd.forward(request, response);
			
		}else if(str.equals("/member/memberLoginAction.do")) {
			String memberId =request.getParameter("memberId");
			String memberPwd = request.getParameter("memberPwd");
			
			//처리하는 메소드
			MemberDao md= new MemberDao();
			MemberVo mv = md.memberLogin(memberId, memberPwd);
			if (mv == null) {
				response.sendRedirect(request.getContextPath() + "/member/memberLogin.do");
			}else {
				int midx = mv.getMidx();
				String memberName = mv.getMembername();

				HttpSession session = request.getSession();
				session.setAttribute("midx", midx);
				session.setAttribute("memberName", memberName);
				
				response.sendRedirect(request.getContextPath() + "/");
			}
		}else if(str.equals("/member/memberLogOut.do")) {
		
			HttpSession session = request.getSession();
			session.removeAttribute("midx");
			session.removeAttribute("memberName");
			session.invalidate();
			
			
			response.sendRedirect(request.getContextPath() + "/");
		}

 

 

 

 

 

 


 

97줄에 "/" 라고만 써도 되는 이유


 

 

 

 

 

 

 

 

 

반응형