열심히 끝까지
디바이스 융합 자바(Java) day42 - jsp를 이용한 게시글 내용변경,게시글 삭제,로그인,회원가입,회원정보변경,회원탈퇴,게시글 검색 본문
디바이스 융합 자바(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">
<%-- 를 사용하여 칸 띄우기 --%>
<input type="submit" value="변경하기"> <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">
<%-- 를 사용하여 칸 띄우기 --%>
<input type="submit" value="변경하기"> <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 내장객체
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)' 카테고리의 다른 글
디바이스 융합 자바(Java) day45 - 표현언어(EL식),커스텀태그(태그파일 기반의 커스텀태그,태그핸들러클래스 기반의 커스텀태그) (0) | 2022.08.12 |
---|---|
디바이스 융합 자바(Java) day43 - 관리자&작성자 변경/삭제 로직 (0) | 2022.08.10 |
디바이스 융합 자바(Java) day41 - html 기본 정리,jsp의 VO,DAO,Controller 분리,두 개의 sql 연결 (0) | 2022.08.08 |
디바이스 융합 자바(Java) day39 - DB를 jsp에 연동 (0) | 2022.08.04 |
디바이스 융합 자바(Java) day38 - JSP에서 자바 빈즈 선언하기 (0) | 2022.08.03 |