***13.글등록하기(Write,WriterOk)***
list 복사해서 --> Wirte.jsp 내용은 받은걸로바꾸고(여기선 뭐  첨가하는건 없고 등록 버튼만 누르면 WriteOk.jsp 요 페이지로 넘겨서 저기서 insert되는 로직을 작업 할 것임!) 

이렇게 글 제목이랑 내용작성하고 등록 버튼을 누르면  다음 페이지에서 (그건 눈에 브라우저에 보이진 않지만 )

작성한 내용들을 저장하고 등록한는 로직을 구현할 것임 그게바로 WriteOk.jsp !


WriteOk 에 작성하기

근데 잠깐 !!  DAO에 아직 insert() 메소드는구현 전이라 구현하러 가야 함

14. DAO로 가서  insert()구현하기

	@Override
	public int insert(BBSDto dto) {
		int affected =0;
		String sql="INSERT INTO bbs VALUES(SEQ_BBS.NEXTVAL,?,?,?,DEFAULT,SYSDATE)";
		try {
			//두 번째 인자는 키값인 컬럼의 배열명, 혹은 인덱스로 new int[]{1}
			psmt = conn.prepareStatement(sql,new String[]{"no"});
			psmt.setString(1,dto.getId());
			psmt.setString(2,dto.getTitle());
			psmt.setString(3,dto.getContent());
			affected =psmt.executeUpdate();
			//입력된 행의 키값 가져오기
			rs = psmt.getGeneratedKeys();
			if(rs.next()) {
				System.out.println("방금 입력한 키값:"+rs.getLong(1));
			 }
		 }
		catch(SQLException e) {e.printStackTrace();}			
		     return affected;
	 }

 

WriteOk를 파일 만들고 로직작성 ! dao에서 구현로직 만든거 진짜 구현하러 하기!!

<%
	//POST방식일때 한글 깨지는 거 처리용(톰캣 10.0.27버전은 안깨짐)
	//request.setCharacterEncoding("UTF-8");
	  //파라미터 받기(이건 사용자가 입력하는걸 그대로 받으니까)
    String title = request.getParameter("title");
	String content = request.getParameter("content");
	  //작성자의 아이디 얻기: 이건 사용자한테 따로 입력받는게 아니라 세션 영역에서 얻어온다
	  //얘는 object객체라 string으로 변환 해 주어야 함
	String id = session.getAttribute("USER-ID").toString();
	  //데이타를 전달할 DTO객체 생성 및 데이타 설정  
	BBSDto dto = new BBSDto();
  	dto.setTitle(title);
	dto.setContent(content);
	dto.setId(id);
	  //CRUD작업용 DAO계열 객체 생성
	BBSDao dao =new BBSDao(application);
	  //데이터 설정한거 입력작업해줌
	int affected = dao.insert(dto);
	dao.close();
	if(affected == 1){
		response.sendRedirect("List.jsp");
	}
	else{
		out.println("<script>");
		out.println("alert('입력실패!');");
		out.println("history.back();");
		out.println("</script>");
	}	
%>



제목에 링크걸기(제목 클릭하면 입력한 글을 볼 수 있게 하는 작업)
list.jsp 파일의 
<td class="text-left"><a href="View.jsp?no=<%=dto.getNo()%>"><%=dto.getTitle() %></a></td>
a태그에다가 처리 + 선택한 글 no를 키로 같이 넘겨야 함!! 이거 까먹지 말자!!!
(HTML문서에 표현식 쓰기)

****15.View.jsp(상세보기 페이지) -작성한 글 보기=레코드 하나 조회하기****
Write.jsp 를 가져와 변형해서 사용할건데 그전에 메소드 구현해야지
DAO 로 가서  selectOne( )를 구현

@Override
	public BBSDto selectOne(String... one) {
		BBSDto dto = null;
		try {
			String sql = "SELECT b.*,name FROM bbs b JOIN member m ON b.id=m.id WHERE no=?";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, one[0]);
			rs=psmt.executeQuery();
			if(rs.next()) {
				dto = new BBSDto();
				dto.setContent(rs.getString(4));
				dto.setContent(rs.getString(4));
				dto.setHitCount(rs.getString(5));
				dto.setId(rs.getString(2));
				dto.setName(rs.getString(7));
				dto.setNo(rs.getString(1));
				dto.setPostDate(rs.getDate(6));
				dto.setTitle(rs.getString(3));
			}
		}
		catch(SQLException e) {e.printStackTrace();}
		return dto;
	}

View.jsp

파라미터 키값, crud작업용 레코드하나 가져오기

view에서 더 처리할것 ! 자기것만 수정/삭제 할 수 있게 처리
==>자기 글 인지 어떻게 알지 ? id를 비교해서 !!
     세션에 저장되어있는 id와 dto.getId 현재글의 id 와 비교

<!-- 로그인 여부 판단 -->
<jsp:include page="/common/IsMember.jsp" />
<%
 	//파라미터(키값) 받기 (사용자가 클릭한 글의 글번호로 넘기는군)
	String no = request.getParameter("no");
	//CRUD작업용 BBSDao생성
	BBSDao dao= new BBSDao(application);
	//레코드하나 가져오기 (arg로 처리해서 인자를 여러개 넣어도 괜춘-이건 나중에 페이지번호 적용할 떄)
	BBSDto dto = dao.selectOne(no);
	dao.close();
%>


<jsp:include page="/template/Top.jsp"/> 
    <div class="container" style="margin-top:65px;"> 
        <div class="jumbotron bg-warning">
            <h1>상세보기 페이지</h1>
        </div>
         <table class="table table-bordered">
		<tbody class="table-sm">
			<tr>
				<th class="w-25 bg-dark text-white text-center">번호</th>
				<td><%=dto.getNo() %></td>
			</tr>
			<tr>
				<th class="w-25 bg-dark text-white text-center">작성자</th>
				<td><%=dto.getName() %></td>
			</tr>
			<tr>
				<th class="w-25 bg-dark text-white text-center">작성일</th>
				<td><%=dto.getPostDate()%></td>
			</tr>
			<tr>
				<th class="w-25 bg-dark text-white text-center">조회수</th>
				<td><%=dto.getHitCount() %></td>
			</tr>
			<tr>
				<th class="w-25 bg-dark text-white text-center">제목</th>
				<td><%=dto.getTitle() %></td>
			</tr>
			<tr>
				<th class="bg-dark text-white text-center" colspan="2">내 용</th>
			</tr>
			<tr>
				<td colspan="2"><%=dto.getContent().replace("\r\n","<br/>") %></td>
			</tr>
		</tbody>
	</table>
</div>
        <!-- 수정/삭제/목록 컨트롤 버튼 -->
	<div class="text-center">
	   <% if(session.getAttribute("USER-ID").equals(dto.getId())){    //자기것만 수정 삭제하기!! %>	
		<a href="Edit.jsp" class="btn btn-success">수정</a>
		<a href="javascript:isDelete()" class="btn btn-success">삭제</a>
		<%} %>
		<a href="List.jsp" class="btn btn-success">목록</a>
	</div>             	
   </div>
<jsp:include page="/template/Footer.jsp"/>

아직 갈 길이 멀다.....

+ Recent posts