***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"/>
아직 갈 길이 멀다.....
'학원 > JSP' 카테고리의 다른 글
11/25 51-3 게시판 짜기(이전/다음글, 페이징 ) (0) | 2022.11.27 |
---|---|
11/25 51- 게시판 짜기(update/delete) (0) | 2022.11.27 |
11/25 51-1 대망의 게시판 짜기 _1,2 (0) | 2022.11.25 |
11/24 50-2 [JSP] Action Tag(Param) (0) | 2022.11.24 |
11/24 50-2 [JSP] Action Tag(속성명을 일치시키자) (0) | 2022.11.24 |