열심히 끝까지

디바이스 융합 자바(Java) day43 - 관리자&작성자 변경/삭제 로직 본문

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

디바이스 융합 자바(Java) day43 - 관리자&작성자 변경/삭제 로직

노유림 2022. 8. 10. 17:55

[오늘 수업]

main.jsp에서  -----------> controller.jsp
          action 파라미터에 board 값
          bid 파라미터에 bid값 대입

  <controller.jsp>
mDAO
bDAO
bVO ---> setter 동작 안함
mVO ---> setter 동작 안함
    null값이 아니다!!

 

>> 로그인이 아닌 상태로 상세페이지 들어가면 안 들어가져요!!
member 가 null 인것이 아님!!!!!
   -> null일 확률 0%
        member.getRole(),member.getMid() 가 null
if(member.getMid()!=null && (member.getRole().equals("ADMIN") || member.getMid().equals(data.getWriter()))){ // 관리자 of 현재 로그인한 사람==작성자
>> mid가 null이 아니라는 전제 하에만 검사!

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>
<jsp:useBean id="data" class="model.vo.BoardVO" scope="request"/>
<jsp:useBean id="member" class="model.vo.MemberVO" scope="session"/>

<!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="bdelete";
			document.bForm.submit();
		}
		else{
			return;	
		}
	}
	
</script>

<form name="bForm" action="controller.jsp" method="post">
	<input type="hidden" name="action" value="bupdate">
	<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>
		<tr>
			<td>작성자</td>
			<td><input type="text" name="writer" value="<%=data.getWriter() %>" required readonly></td>
		</tr>
		
		<%
			if(member.getMid()!=null && (member.getRole().equals("ADMIN") || member.getMid().equals(data.getWriter()))){ // 관리자 of 현재 로그인한 사람==작성자
		%>
		<tr>
			<td colspan="2" align="right">
			<%-- &nbsp;를 사용하여 칸 띄우기 --%>
				<input type="submit" value="변경하기">&nbsp; <input type="button" value="삭제하기" onclick="del()">
			</td>
		</tr>
		<%
			}
		%>
		
	</table>
</form>
<hr>
<a href="controller.jsp?action=main"><input type="button" value="메인으로"></a>
<button onclick="history.back()">뒤로가기</button>

</body>
</html>

 

1. 요청을 할 수 있는 방식의 종류
     <form action="controller.jsp?action=insert">
     <form action="controller.jsp>
                <input type="hidden" name="action" value="insert">
     <a href="controller.jsp?action="insert">

     <script>
           1) function 정의하여 호출
           2) location.href="";
     </script>


2. 파라미터 vs 속성

- 파라미터
받는방법: request.getParameter("파라미터명")
주는방법: <a href="URL?파라미터명=값&파라미터명=값&...">
   <input name="파라미터명" value="값(사용자가 브라우저에서 작성한 값)">
=> 주고받는값이 String  |  일회성,사용자가 입력하는 값 (db에 넣음 끝남 게시글 작성)

- 속성(attribute)
받는방법: <jsp:useBean id="이름" class="" scope="req,sess,appli" /> // scope 값 존재
주는방법: C에서 주로 사용
   req,sess,appl.setAttribute("이름",값);
=> 주고받는값이 Object(+캐스팅)  |  C에서 사용자가 요청한 값들을 넣어서 V한테 보낼때 사용


3. jsp:useBean action 설명
<jsp:useBean id="member" class="model.vo.MemberVO" scope="session" />

>> java 코드로 변경하면?

 if(session.getAttribute("member")==null){
   MemberVO member=new MemberVO();
   session.setAttribute("member",member);
}
else{
   member=session.getAttribute("member");
}

 

4. 아이디 중복검사
       -> 서버를 거치지 않고 검사 진행 됨
       -> 비동기처리(==ajax())
    >> 능단평에서는 제외
    >> 서비스만 제공하면 됨
    > 다음에 적절한 서비스로 대체할 수 있게 함