열심히 끝까지

디바이스 융합 자바(Java) day42 - jsp를 이용한 게시글 내용변경,게시글 삭제,로그인,회원가입,회원정보변경,회원탈퇴,게시글 검색 본문

디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)

디바이스 융합 자바(Java) day42 - jsp를 이용한 게시글 내용변경,게시글 삭제,로그인,회원가입,회원정보변경,회원탈퇴,게시글 검색

노유림 2022. 8. 9. 17:34

[어제 수업에 대한 보충]

 

---------board.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- request로 data를 vo에 넣어서 나에게 건내줘 라고 controller에게 요구 --%>
<jsp:useBean id="data" class="model.vo.BoardVO" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상세페이지</title>
</head>
<body>
<script type="text/javascript">
	function del(){
		ans=confirm('정말 삭제할까요?');
		if(ans==true){
			document.bForm.action.value="delete";
			// document.폼 형식.action.value="delete";
			// document의 bform의 값을 지우라는 명령값 저장
			document.bForm.submit();
			// document.폼 형식.submit();
		}
		else{
			return;	
		}
	}
	
</script>

<form name="bForm" action="controller.jsp?action=update" method="post">
<%-- insert처럼 hidden으로 값을 주기 --%>
	<input type="hidden" name="action" value="update">
	<%-- bid도 숨겨서 보내는 것이 가능!! --%>
	<input type="hidden" name="bid" value="<%=data.getBid()%>">
	<table border="1">
	<%-- 번호는 바꿀 수 없기 때문에 삭제 --%>
		<tr>
			<td>제 목</td>
			<td><input type="text" name="title" value="<%=data.getTitle() %>" required></td>
		</tr>
		<tr>
			<td>내 용</td>
			<td><input type="text" name="content" value="<%=data.getContent() %>" required></td>
		</tr>
		<%-- pk번호인 작성자는 readonly로 읽을 수 있게만 설정 --%>
		<tr>
			<td>작성자</td>
			<td><input type="text" name="writer" value="<%=data.getWriter() %>" required readonly></td>
		</tr>
		<tr>
			<td colspan="2" align="right">
			<%-- &nbsp;를 사용하여 칸 띄우기 --%>
				<input type="submit" value="변경하기">&nbsp; <input type="button" value="삭제하기" onclick="del()">
			</td>
		</tr>
		
	</table>
</form>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>

</body>
</html>

 

---------main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.vo.BoardVO,java.util.ArrayList"%>
<jsp:useBean id="datas" class="java.util.ArrayList" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인페이지-1</title>
</head>
<body>
<table border="2">
	<tr>
		<th>번 호</th><th>제 목</th><th>작성자</th>
	</tr>
<%
	// 게시글이 있다고 가정하고 작성
	for(BoardVO v : (ArrayList<BoardVO>)datas){
%>
	<tr>
		<th><a href="controller.jsp?action=board&bid=<%=v.getBid()%>"><%=v.getBid() %></a></th>
		<td><%=v.getTitle() %></td>
		<td><%=v.getWriter() %></td>
	</tr>

<%
	}
%>
</table>
<hr>
<a href="form.jsp">새로운 글 작성하기</a>
</body>
</html>

 

----------controller.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error/error.jsp" import="model.vo.MemberVO,java.util.ArrayList, model.vo.BoardVO" %>

<%request.setCharacterEncoding("UTF-8");%>
<jsp:useBean id="bDAO" class="model.dao.BoardDAO"/>
<jsp:useBean id="bVO" class="model.vo.BoardVO"/>
<jsp:useBean id="mDAO" class="model.dao.MemberDAO"/>
<jsp:useBean id="mVO" class="model.vo.MemberVO"/>
<jsp:setProperty property="*" name="bVO"/>
<%
	// 어떤 요청을 받았는지 파악
	// -> 해당 요청을 수행하는 것이 controller 페이지의 핵심
	
	String action=request.getParameter("action");
	System.out.println("로그 : "+action);
	
	if(action.equals("main")){	
		ArrayList<BoardVO> datas=bDAO.selectAll(bVO);
		request.setAttribute("datas", datas);
		// session 단위로 유지해도 되지 않나요? 
		// 라고 하기엔 매번 db에 있는 데이터를 불러오는 것이 효율적
		pageContext.forward("main1.jsp"); // forwawrd 액션
		// 전달할 정보가 있기 때문에 forward 사용
	}	
	else if(action.equals("login")){
		MemberVO v = mDAO.selectOne(mVO);
		if(v==null){
			out.println("<script>alert('로그인을 진행할 수 없습니다.. 아이디를 확인해주세요.');location.href='controller.jsp?action=login'</script>");
			response.sendRedirect("login.jsp");
		}else{
			pageContext.forward("main1.jsp");
		}
	}
	else if(action.equals("board")){
		BoardVO data=bDAO.selectOne(bVO);
		if(data==null){
			response.sendRedirect("controller.jsp?action=main");
		}
		request.setAttribute("data", data);
		pageContext.forward("board.jsp");
	}
	else if(action.equals("insert")){
		if(bDAO.insert(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("insert 오류");
		}
	}
	else if(action.equals("update")){
		if(bDAO.update(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("delete 오류");
		}
	}
	else if(action.equals("titlesearch")){
		ArrayList<BoardVO> datas=bDAO.selectTitle(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else if(action.equals("writersearch")){
		ArrayList<BoardVO> datas=bDAO.selectWriter(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else{
		out.println("<script>alert('action 파라미터 값이 올바르지 않습니다...');location.href='controller.jsp?action=main'</script>");
	}
%>

 

----------------------------
[로그인 및 회원가입 추가한 후 코드]

 

----------login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인페이지</title>
</head>
<body>

<form action="controller.jsp?action=login" method="post">
	<%--<input type="hidden" name="action" value="login">--%>
	<table border ="1">
		<tr>
			<td>아이디</td>
			<td><input type="text" name="mid" required></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><input type="password" name="mpw" required></td>
		</tr>
		<tr>
			<td colspan="2" align="right">
				<input type="submit" value="로그인">
			</td>
		</tr>
	</table>
</form>
<hr>
<a href="reg.jsp">회원가입하기</a>
<a href="controller.jsp?action=main">메인으로 가기</a>

</body>
</html>

 

----------reg.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 페이지</title>
</head>
<body>

<form action="controller.jsp?action=reg" method="post">
	<%--<input type="hidden" name="action" value="login">--%>
	<table border ="1">
		<tr>
			<td>아이디</td>
			<td><input type="text" name="mid" required></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><input type="password" name="mpw" required></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><input type="text" name="mname" required></td>
		</tr>
		<tr>
			<td>계정권한</td>
			<td><select name="role"> <!-- 파라미터 이름 -->
				<option>MEMBER</option> <!-- Value 값 -->
				<option>ADMIN</option>
			</select></td>
		</tr>
		<tr>
			<td colspan="2" align="right">
				<input type="submit" value="회원가입">
			</td>
		</tr>
	</table>
</form>
<hr>
<a href="login.jsp">회원가입하기</a>
<a href="controller.jsp?action=main">메인으로 가기</a>

</body>
</html>

 

----------controller.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error/error.jsp" import="model.vo.*,java.util.ArrayList" %>

<%request.setCharacterEncoding("UTF-8");%>
<jsp:useBean id="bDAO" class="model.dao.BoardDAO"/>
<jsp:useBean id="bVO" class="model.vo.BoardVO"/>
<jsp:useBean id="mDAO" class="model.dao.MemberDAO"/>
<jsp:useBean id="mVO" class="model.vo.MemberVO"/>
<jsp:setProperty property="*" name="bVO"/>
<jsp:setProperty property="*" name="mVO"/>
<%
	// 어떤 요청을 받았는지 파악
	// -> 해당 요청을 수행하는 것이 controller 페이지의 핵심
	
	String action=request.getParameter("action");
	System.out.println("로그 : "+action);
	if(action.equals("login")){
		// mid, mpw가 전달되면,
		// session scope로 memberfmf 전달
		MemberVO member=mDAO.selectOne(mVO);
		if(member!=null){
			// 로그인 성공
			session.setAttribute("member", member);
			// forward와 sendRedirect 중에 뭘 고를까 고민할 때,
			// 요청정보 저장해줄 수 있는것이 forward
			// session은 브라우저에 소속, response를 써도 유지 가능
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			response.sendRedirect("login.jsp");
		}
	}
	else if(action.equals("reg")){
		if(mDAO.insert(mVO)){
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("reg 오류");
		}
	}
	else if(action.equals("mypage")){
		MemberVO member=(MemberVO)session.getAttribute("member");
		// 이후에는 selectOne을 통해서 data를 받게 될 예정
		if(member!=null){
			request.setAttribute("data", member);
			pageContext.forward("mypage.jsp");
		}
		else{
			throw new Exception("mypage 오류");
		}
	}
	else if(action.equals("mUpdate")){
		if(mDAO.update(mVO)){
			response.sendRedirect("mypage.jsp");
		}
		else{
			throw new Exception("mUpdate 오류");
		}
	}
	else if(action.equals("delete")){
		if(bDAO.delete(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("delete 오류");	
		}
	}
	else if(action.equals("mdelete")){
		if(mDAO.delete(mVO)){
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("delete 오류");	
		}
	}
	else if(action.equals("main")){	
		ArrayList<BoardVO> datas=bDAO.selectAll(bVO);
		request.setAttribute("datas", datas);
		// session 단위로 유지해도 되지 않나요? 
		// 라고 하기엔 매번 db에 있는 데이터를 불러오는 것이 효율적
		pageContext.forward("main.jsp"); // forwawrd 액션
		// 전달할 정보가 있기 때문에 forward 사용
	}
	else if(action.equals("board")){
		BoardVO data=bDAO.selectOne(bVO);
		if(data==null){
			response.sendRedirect("controller.jsp?action=main");
		}
		request.setAttribute("data", data);
		pageContext.forward("board.jsp");
	}
	else if(action.equals("insert")){
		if(bDAO.insert(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("insert 오류");
		}
	}
	else if(action.equals("update")){
		if(bDAO.update(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("update 오류");
		}
	}
	else if(action.equals("titlesearch")){
		ArrayList<BoardVO> datas=bDAO.selectTitle(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else if(action.equals("writersearch")){
		ArrayList<BoardVO> datas=bDAO.selectWriter(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else{
		out.println("<script>alert('action 파라미터 값이 올바르지 않습니다...');location.href='controller.jsp?action=main'</script>");
	}
%>

 

------------------------------
[실습]
1. 글 작성하기 할 때 로그인 된 사용자의 id값 설정
2. 마이페이지 이름을 누르면 마이페이지로 들어가는데
    id, pw, 이름, 계정권한이 나오게 한다!
    이 때, id와 계정권한은 변경 못하게 막을 것

 

----------board.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- request로 data를 vo에 넣어서 나에게 건내줘 라고 controller에게 요구 --%>
<jsp:useBean id="data" class="model.vo.BoardVO" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상세페이지</title>
</head>
<body>
<script type="text/javascript">
	function del(){
		ans=confirm('정말 삭제할까요?');
		if(ans==true){
			document.bForm.action.value="delete";
			// document.폼 형식.action.value="delete";
			// document의  bform의 값을 지우라는 명령값 저장
			document.bForm.submit();
			// document.폼 형식.submit();
		}
		else{
			return;	
		}
	}
	
</script>

<form name="bForm" action="controller.jsp" method="post">
<%-- insert처럼 hidden으로 값을 주기 --%>
	<input type="hidden" name="action" value="update">
	<%-- bid도 숨겨서 보내는 것이 가능!! --%>
	<input type="hidden" name="bid" value="<%=data.getBid()%>">
	<table border="1">
	<%-- 번호는 바꿀 수 없기 때문에 삭제 --%>
		<tr>
			<td>제 목</td>
			<td><input type="text" name="title" value="<%=data.getTitle() %>" required></td>
		</tr>
		<tr>
			<td>내 용</td>
			<td><input type="text" name="content" value="<%=data.getContent() %>" required></td>
		</tr>
		<%-- pk번호인 작성자는 readonly로 읽을 수 있게만 설정 --%>
		<tr>
			<td>작성자</td>
			<td><input type="text" name="writer" value="<%=data.getWriter() %>" required readonly></td>
		</tr>
		<tr>
			<td colspan="2" align="right">
			<%-- &nbsp;를 사용하여 칸 띄우기 --%>
				<input type="submit" value="변경하기">&nbsp; <input type="button" value="삭제하기" onclick="del()">
			</td>
		</tr>
		
	</table>
</form>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>

</body>
</html>

 

----------main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.vo.BoardVO,java.util.ArrayList"%>
<jsp:useBean id="datas" class="java.util.ArrayList" scope="request"/>
<jsp:useBean id="member" class="model.vo.MemberVO" scope="session"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인페이지-1</title>
</head>
<body>
<script type="text/javascript">
	function check(){
		ans=prompt('비밀번호를 입력하세요.');
		if(ans==<%=member.getMpw()%>){ // 현재 로그인한 계정의 비밀번호
			location.href="controller.jsp?action=mypage";
		}
	}
</script>

<h1><a href="javascript:check()"><%=member.getMname() %></a>님, 반갑습니다!:D</h1>
<table border="2">
	<tr>
		<th>번 호</th><th>제 목</th><th>작성자</th>
	</tr>
<%
	// 게시글이 있다고 가정하고 작성
	for(BoardVO v : (ArrayList<BoardVO>)datas){
%>
		<th><a href="controller.jsp?action=board&bid=<%=v.getBid()%>"><%=v.getBid() %></a></th>
		<td><%=v.getTitle() %></td>
		<td><%=v.getWriter() %></td>
	</tr>

<%
	}
%>
</table>
<hr>
<a href="form.jsp">새로운 글 작성하기</a><br>
<a href="form2.jsp">검색 페이지</a><br>
<a href="login.jsp">로그인하기</a>
</body>
</html>

 

1. Session이 모든 member 정보를 가짐
2. 보안에도 취약
    왜? pw를 가지고 있기 때문!
3. Session이 무거워짐
       == 브라우저가 무거워짐
       == 이용 속도 감소
       ==>품질 저하

=> flag(true,false) / 이름   정보만 저장
>> mypage에서는 session 정보를 이용할 수 없음!

 

---------
추가할 것
1. mypage에서 회원정보를 변경할 수 있도록
   회원정보를 변경할 수 있도록
    로직 작성

 

----------controller.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error/error.jsp" import="model.vo.*,java.util.ArrayList" %>

<%request.setCharacterEncoding("UTF-8");%>
<jsp:useBean id="bDAO" class="model.dao.BoardDAO"/>
<jsp:useBean id="bVO" class="model.vo.BoardVO"/>
<jsp:useBean id="mDAO" class="model.dao.MemberDAO"/>
<jsp:useBean id="mVO" class="model.vo.MemberVO"/>
<jsp:setProperty property="*" name="bVO"/>
<jsp:setProperty property="*" name="mVO"/>
<%
	// 어떤 요청을 받았는지 파악
	// -> 해당 요청을 수행하는 것이 controller 페이지의 핵심
	
	String action=request.getParameter("action");
	System.out.println("로그 : "+action);
	if(action.equals("login")){
		// mid, mpw가 전달되면,
		// session scope로 memberfmf 전달
		MemberVO member=mDAO.selectOne(mVO);
		if(member!=null){
			// 로그인 성공
			session.setAttribute("member", member);
			// forward와 sendRedirect 중에 뭘 고를까 고민할 때,
			// 요청정보 저장해줄 수 있는것이 forward
			// session은 브라우저에 소속, response를 써도 유지 가능
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			response.sendRedirect("login.jsp");
		}
	}
	else if(action.equals("reg")){
		if(mDAO.insert(mVO)){
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("reg 오류");
		}
	}
	else if(action.equals("mypage")){
		MemberVO member=(MemberVO)session.getAttribute("member");
		// 이후에는 selectOne을 통해서 data를 받게 될 예정
		if(member!=null){
			request.setAttribute("data", member);
			pageContext.forward("mypage.jsp");
		}
		else{
			throw new Exception("mypage 오류");
		}
	}
	else if(action.equals("mUpdate")){
		if(mDAO.update(mVO)){
			session.invalidate(); // 세션 정보 전체 제거하기
			// session.removeAttribute("member");
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("mUpdate 오류");
		}
	}
	else if(action.equals("delete")){
		if(bDAO.delete(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("delete 오류");	
		}
	}
	else if(action.equals("mdelete")){
		if(mDAO.delete(mVO)){
			session.invalidate(); // 세션 정보 전체 제거하기
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("delete 오류");	
		}
	}
	else if(action.equals("main")){	
		ArrayList<BoardVO> datas=bDAO.selectAll(bVO);
		request.setAttribute("datas", datas);
		// session 단위로 유지해도 되지 않나요? 
		// 라고 하기엔 매번 db에 있는 데이터를 불러오는 것이 효율적
		pageContext.forward("main.jsp"); // forwawrd 액션
		// 전달할 정보가 있기 때문에 forward 사용
	}
	else if(action.equals("board")){
		BoardVO data=bDAO.selectOne(bVO);
		if(data==null){
			response.sendRedirect("controller.jsp?action=main");
		}
		request.setAttribute("data", data);
		pageContext.forward("board.jsp");
	}
	else if(action.equals("insert")){
		if(bDAO.insert(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("insert 오류");
		}
	}
	else if(action.equals("update")){
		if(bDAO.update(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("update 오류");
		}
	}
	else if(action.equals("titlesearch")){
		ArrayList<BoardVO> datas=bDAO.selectTitle(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else if(action.equals("writersearch")){
		ArrayList<BoardVO> datas=bDAO.selectWriter(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else{
		out.println("<script>alert('action 파라미터 값이 올바르지 않습니다...');location.href='controller.jsp?action=main'</script>");
	}
%>

 

이번 핵심

	else if(action.equals("mUpdate")){
		if(mDAO.update(mVO)){
			session.invalidate(); // 세션 정보 전체 제거하기
			// session.removeAttribute("member");
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("mUpdate 오류");
		}
	}

 

 

2. mypage에서 회원탈퇴를 할 수 있도록 링크(or 버튼)를 생성해주세요!

 

----------controller.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error/error.jsp" import="model.vo.*,java.util.ArrayList" %>

<%request.setCharacterEncoding("UTF-8");%>
<jsp:useBean id="bDAO" class="model.dao.BoardDAO"/>
<jsp:useBean id="bVO" class="model.vo.BoardVO"/>
<jsp:useBean id="mDAO" class="model.dao.MemberDAO"/>
<jsp:useBean id="mVO" class="model.vo.MemberVO"/>
<jsp:setProperty property="*" name="bVO"/>
<jsp:setProperty property="*" name="mVO"/>
<%
	// 어떤 요청을 받았는지 파악
	// -> 해당 요청을 수행하는 것이 controller 페이지의 핵심
	
	String action=request.getParameter("action");
	System.out.println("로그 : "+action);
	if(action.equals("login")){
		// mid, mpw가 전달되면,
		// session scope로 memberfmf 전달
		MemberVO member=mDAO.selectOne(mVO);
		if(member!=null){
			// 로그인 성공
			session.setAttribute("member", member);
			// forward와 sendRedirect 중에 뭘 고를까 고민할 때,
			// 요청정보 저장해줄 수 있는것이 forward
			// session은 브라우저에 소속, response를 써도 유지 가능
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			response.sendRedirect("login.jsp");
		}
	}
	else if(action.equals("reg")){
		if(mDAO.insert(mVO)){
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("reg 오류");
		}
	}
	else if(action.equals("mypage")){
		MemberVO member=(MemberVO)session.getAttribute("member");
		// 이후에는 selectOne을 통해서 data를 받게 될 예정
		if(member!=null){
			request.setAttribute("data", member);
			pageContext.forward("mypage.jsp");
		}
		else{
			throw new Exception("mypage 오류");
		}
	}
	else if(action.equals("mUpdate")){
		if(mDAO.update(mVO)){
			session.invalidate(); // 세션 정보 전체 제거하기
			// session.removeAttribute("member");
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("mUpdate 오류");
		}
	}
	else if(action.equals("delete")){
		if(bDAO.delete(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("delete 오류");	
		}
	}
	else if(action.equals("mdelete")){
		MemberVO member=(MemberVO)session.getAttribute("member");
		// 멤버라는 변수에 옮겨 담기
		if(member!=null && mDAO.delete(member)){
			session.invalidate(); // 세션 정보 전체 제거하기
			response.sendRedirect("login.jsp");
		}
		else{
			throw new Exception("delete 오류");	
		}
	}
	else if(action.equals("main")){	
		ArrayList<BoardVO> datas=bDAO.selectAll(bVO);
		request.setAttribute("datas", datas);
		// session 단위로 유지해도 되지 않나요? 
		// 라고 하기엔 매번 db에 있는 데이터를 불러오는 것이 효율적
		pageContext.forward("main.jsp"); // forwawrd 액션
		// 전달할 정보가 있기 때문에 forward 사용
	}
	else if(action.equals("board")){
		BoardVO data=bDAO.selectOne(bVO);
		if(data==null){
			response.sendRedirect("controller.jsp?action=main");
		}
		request.setAttribute("data", data);
		pageContext.forward("board.jsp");
	}
	else if(action.equals("insert")){
		if(bDAO.insert(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("insert 오류");
		}
	}
	else if(action.equals("update")){
		if(bDAO.update(bVO)){
			response.sendRedirect("controller.jsp?action=main");
		}
		else{
			throw new Exception("update 오류");
		}
	}
	else if(action.equals("titlesearch")){
		ArrayList<BoardVO> datas=bDAO.selectTitle(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else if(action.equals("writersearch")){
		ArrayList<BoardVO> datas=bDAO.selectWriter(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else{
		out.println("<script>alert('action 파라미터 값이 올바르지 않습니다...');location.href='controller.jsp?action=main'</script>");
	}
%>

 

----------mypage.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="data" class="model.vo.MemberVO" scope="request"/>
<!-- 세션정보를 바꾼거지 db정보를 바꾼 것은 아니다! -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>마이페이지</title>
</head>
<body>
<script type="text/javascript">
function del(){
	ans=confirm('정말 삭제할까요?');
	if(ans==true){
		document.mForm.action.value="mdelete";
		document.mForm.submit();
	}
	else{
		return;	
	}
}
</script>

<form name=mForm action="controller.jsp?action=mUpdate" method="post">
	<table border ="1">
		<tr>
			<td>아이디</td>
			<td><input type="text" name="mid" value="<%=data.getMid() %>" required readonly></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><input type="password" name="mpw" value="<%=data.getMpw() %>" required></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><input type="text" name="mname" value="<%=data.getMname() %>" required></td>
		</tr>
		<tr>
			<td>계정권한</td>
			<td><%=data.getRole() %></td>
			<%-- input에 넣지 않는 방법 --%>
		</tr>
		<tr>
			<td colspan="2" align="right">
				<input type="submit" value="회원정보변경">
				<input type="button" value="회원탈퇴" onclick="del()">
			</td>
		</tr>
	</table>
</form>
<hr>
<a href="controller.jsp?action=main">메인으로 가기</a>
<a href="controller.jsp?action=mdelete">회원탈퇴</a>

</body>
</html>

 

 

네이버 카페탈퇴
(포트폴리오 작업 시 해볼 것)
   -> 작성한 글이 없어야 탈퇴 가능
   => 작성자 ㅁㅁㅁ(별명)  -- 비 추천
   -> 글도 같이 삭제 - join, sql로 작성  
   -> 작성자 (이름 없음) - 로직 변경

 

---------------------------------------------

[혼자 작업해 본 검색 로직]

>> 두개 따로 나누어서 지정했을 때

--------------form1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.vo.BoardVO,java.util.ArrayList"%>
<jsp:useBean id="datas" class="java.util.ArrayList" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>작성페이지-2(검색 페이지)</title>
</head>
<body>

<form action="controller.jsp" method="post">
	<input type="hidden" name=action value="titlesearch">

	<table border="1">
		<tr>
			<td>제목으로 검색하기</td>
			<td><input type="text" name="title" required></td>
		</tr>
		<tr>
			<td colspan="2" align="right">
				<input type="submit" value="제목 검색">
			</td>
		</tr>
	</table>
</form>
<form action="controller.jsp" method="post">
	<input type="hidden" name=action value="writersearch">

	<table border="1">
		<tr>
			<td>작성자로 검색하기</td>
			<td><input type="text" name="writer" required></td>
		</tr>
		<tr>
			<td colspan="2" align="right">
				<input type="submit" value="작성자 검색">
			</td>
		</tr>
	</table>
</form>
<hr>
<table border="2">
<%
	for(BoardVO v : (ArrayList<BoardVO>)datas){
		if(datas==null){
	
		}
		else{
%>
	<tr>
		<th>번 호</th><th>제 목</th><th>작성자</th>
	</tr>
	<tr>
		<th><a href="board.jsp"><%=v.getBid() %></a></th>
		<td><%=v.getTitle() %></td>
		<td><%=v.getWriter() %></td>
	</tr>
<%
		}
	}
%>
</table>
<hr>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>

</body>
</html>

참고할 controller.jsp

	else if(action.equals("title")){
		ArrayList<BoardVO> datas=bDAO.selectTitle(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}
	else if(action.equals("writer")){
		ArrayList<BoardVO> datas=bDAO.selectWriter(bVO);
		request.setAttribute("datas", datas);
		pageContext.forward("form1.jsp"); 
	}

 

 

>> select box로 진행

--------------form2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.vo.BoardVO,java.util.ArrayList"%>
<jsp:useBean id="datas" class="java.util.ArrayList" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>작성페이지-2(검색 페이지)</title>
</head>
<body>

<script type="text/javascript">
	function method(){
		if(search.value()==writer){
			document.searchform.action.value="writer";
			document.searchform.submit();
		}
		else{
			document.searchform.action.value="title";
			document.searchform.submit();
		}
	}
	
</script>

<form name="searchform" action="controller.jsp" method="post">
	<input type="hidden" name=action value=searchlist>

	<table border="1">
		<tr>
			<td colspan="2" align="right">
				<select name="search"> <!-- 파라미터 이름 -->
					<option value="TITLE">제목</option> <!-- Value 값 -->
					<option value="WRITER">작성자</option>
				</select>
			</td>
			<td><input type="text" name="keyword" required></td>
			<td colspan="2" align="right">
				<input type="submit" value="검색">
			</td>
		</tr>
	</table>
</form>

<hr>
<table border="2">
<%
	for(BoardVO v : (ArrayList<BoardVO>)datas){
		if(datas==null){
	
		}
		else{
%>
	<tr>
		<th>번 호</th><th>제 목</th><th>작성자</th><th>내 용</th>
	</tr>
	<tr>
		<th><a href="controller.jsp?action=board&bid=<%=v.getBid()%>"><%=v.getBid() %></a></th>
		<td><%=v.getTitle() %></td>
		<td><%=v.getWriter() %></td>
		<td><%=v.getContent() %></td>
	</tr>
<%
		}
	}
%>
</table>
<hr>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>

</body>
</html>

 

참고할 controller.jsp

	else if(action.equals("searchlist")){
		String search = request.getParameter("search");
		String keyword = request.getParameter("keyword");
		ArrayList<BoardVO> datas=bDAO.selectWhat(search, keyword);
		request.setAttribute("datas", datas);
		pageContext.forward("form2.jsp");
	}

안녕 검색 시 뜨는 것(제목 검색)

 

---------------------기존에 정리되었지만 한번 더 정리하는 내용

console.log()
 JS 내장객체

out.println()
 JSP 내장객체
 -> .java

System.out.println()
 JAVA 내장객체