일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 내림차순정렬
- MVC
- annotation
- Swing
- 이클립스 #이클립스단축키 #자바 #자바단축키
- 배열정렬
- 숫자정렬
- 버블소트
- 이클립스
- 어노테이션
- 계산기
- 계산기GUI
- Eclipse
- Java
- 오름차순정렬
- 버블정렬
- GUI
- 자바 계산기
- 자바
- 자바알고리즘
- 자바 #java #이클립스 #eclipse #switch #switch문 #사칙연산 #계산기 #calculator #간단한계산기
- 자바GUI
- Spring
- 스프링
- 알고리즘
- Today
- Total
온 코딩
게시판 기능 구현 완료(CSS 구현 전 )1_회원 메인 / 관리자 메인 본문
게시판 관련 파일
회원 게시판 메인
게시판 메인 페이지 - 화면
brd_main.jsp
1. 검색기능
검색 창 코드
<div id="searchBoard">
<!-- 검색 창 -->
<form action="../Brd_search" method="get">
<select name="tOrW"><!-- 글제목으로 혹은 작성자로 검색 조건 설정 -->
<option value="title" selected>글 제목</option>
<option value="writer">작성자</<option>
</select>
<input type="text" id="inputText" name="search" value="" placeholder="검색어를 입력하세요" />
<input type="submit" id="button" value="검색" /> <!-- 검색 실행 하기(서블릿 : /Brd_test) => 검색 결과창SearchForm -->
<input type="button" id="button" value="글쓰기" onclick="location.href='writeForm.jsp'" /> <!-- 글쓰기 창으로 이동 -->
</form>
</div>
Brd_search 서블릿에 tOrW(titlle of write)값과 search(검색어) 전달
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
BoardDAO dao = new BoardDAO();
ArrayList<BoardDTO> vResult = new ArrayList<>();
String tOrW = request.getParameter("tOrW"); //어떤 검색인지 확인
String search = request.getParameter("search"); //검색어 확인
if(tOrW.equals("title")) {
vResult=dao.brdSearch(search); //타이틀 검색일 경우
}else {
vResult=dao.brdSearch(dao.idToNo(search)); //작성자 검색일 경우
}
HttpSession session =request.getSession();
session.setAttribute("vResult", vResult);
response.sendRedirect("community/searchForm.jsp");
}
/Brd_search 서블릿의 doGet()
검색 타입을 확인하고 검색어를 통해 검색함
작성자 검색일 경우, Board_tbl에 user_id가 아닌 user_no가 저장되어 있음으로 id를 no로 변환하여 검색
검색된 결과를 ArrayList<dto> vResult에 저장 한 후 검색결과 출력창(community/search.jsp)로 전달
주의점
원래 페이지 전환할 때, request에 객체를 싣고 requestDispatcher로 페이지 전환을 하려고 했으나 Dispatcher를 사용할 경우 페이지 경로가 바뀌지 않아서 <WebContent - Community - brd_main.jsp - form > 에서 설정한 action 경로인 <../Brd_search>를 다시 사용하지 못함!
즉, 검색을 한 번밖에 하지 못하는 문제가 생김
객체 전달 방법을 request에서 session으로 바꾸고 reponse로 페이지 전환
-> response로 페이지 전환을 하는 경우, 객체 전달이 안 되도 별다른 오류가 안뜨기 때문에 전달값 꼭 확인해주면서 코드 사용하기
-> session에 너무 많은 값을 저장하면 나중에 객체 사용할 때 헷갈릴까 걱정했는데, 매번 Brd_search서블릿을 사용할 때마다 "vResult"라는 변수에 저장 된 값이 바뀌기 때문에 괜찮을 듯
검색 결과 페이지
brd_search.jsp > 출력부분
<%
ArrayList<BoardDTO> vResult = (ArrayList<BoardDTO>)session.getAttribute("vResult"); // vResult
%>
<%
BoardDTO dto = new BoardDTO();
//System.out.println(vResult.get(0).toString());
if( vResult.size() > 0){
for(int i = 0; i < vResult.size(); i++){
dto = vResult.get(i);
// System.out.println(dto.toString()); //테스트코드
%>
<tr align="center">
<td><%=dto.getBoard_no() %></td>
<td><a href="brd_detail.jsp?board_no='<%=dto.getBoard_no() %>'"><%=dto.getBoard_title() %></a></td>
<td><%=bDAO.noToId(dto.getUser_no()) %></td>
<td><%=dto.getBoard_date() %></td>
<td><%=dto.getBoard_hits() %></td>
</tr>
<%
}//for end
}else{
System.out.println("결과없음");
%>
<tr>
<td colspan="5">검색 결과가 없습니다.</td>
</tr>
<%
}//else end%>
Same as brd_main.jsp , 윗 부분에 검색창을 넣어 준다.
session에 저장되어 있던 vResult값을 꺼내와서 vResult의 사이즈가 0 이상일 경우 출력을 한다.
주의점
session에 들어간 attribute 값은 모두 object로 저장됨으로 사용할 때 필요한 타입으로 형변환 후 사용한다.
다만, 잘못 형변환을 할 경우 오류가 뜨기 때문에 꼭 session저장 되는 형태와 가져와서 쓰는 형태를 맞춰주어야 한다.
object로 넘어온 session값은 절대 null이 아니다.
그렇기 때문에, 검색 결과가 없는 경우를 찾으려면 if(vResult == null){}이렇게가 아니라 if(vResult >0){ 결과출력 }else{검색 결과 없음}으로 코드를 짜야한다.
2. 글 목록 출력
<div align="center" id="clear"><!-- 글 목록 출력 -->
<table class="type11" width="75%" >
<thead>
<tr>
<th width="10%">글 번호</th>
<th width="40%">제목</th>
<th width="20%">작성자</th>
<th width="20%">작성일</th>
<th width="10%">조회수</th>
</tr>
</thead>
<tbody>
<% ArrayList<BoardDTO> vResult = bDAO.brdSelectAll(); %>
<%
BoardDTO dto = new BoardDTO();
for(int i = 0; i < vResult.size(); i++){
dto = vResult.get(i);
// System.out.println(dto.toString()); //테스트코드
%>
<tr align="center">
<td><%=dto.getBoard_no() %></td><!-- EL태그 공부 필요 -->
<td><%if(id != null){ %>
<a href="brd_detail.jsp?board_no=<%=dto.getBoard_no() %>">
<%=dto.getBoard_title() %></a><%}else{ %>
<a href="http://localhost:9000/carjava/login.jsp" onclick="alert('로그인 후 사용해주세요.');" >
<%=dto.getBoard_title() %>
</a><%} %>
</td>
<!-- 상세페이지 각 페이지와 연결-->
<td><%=bDAO.noToId(dto.getUser_no()) %></td>
<td><%=dto.getBoard_date().substring(0, 10) %></td>
<td><%=dto.getBoard_hits() %></td>
</tr>
<%} %>
</tbody>
</table>
</div>
주의점
1. 상세페이지는 로그인이 되어 있을 경우에만 접근 가능.
session값에 id가 저장이 되어있을 경우(로그인이 되어있을 경우)에만 이동
2. 만일 로그인 값이 없을 경우 로그인 페이지로 이동!
관리자 게시판 메인
관리자 메인 페이지의 경우, 모든 게시글에 대한 삭제 버튼이 있음
주의점 - 관리자가 글 수정 권한은 없음
관리자 검색 서블렛
@WebServlet("/Brd_search_admin")
public class Brd_search_admin extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
BoardDAO dao = new BoardDAO();
ArrayList<BoardDTO> vResult = new ArrayList<>();
String tOrW = request.getParameter("tOrW"); //어떤 검색인지 확인
String search = request.getParameter("search"); //검색어 확인
if(tOrW.equals("title")) {
vResult=dao.brdSearch(search); //타이틀 검색일 경우
}else {
vResult=dao.brdSearch(dao.idToNo(search)); //작성자 검색일 경우
}
HttpSession session =request.getSession();
session.setAttribute("vResult", vResult);
session.setAttribute("tOrW", tOrW);
session.setAttribute("search", search);
response.sendRedirect("admin/brd_adminMainSearch.jsp");
}
'SEMI PROJECT - 홈페이지 만들기' 카테고리의 다른 글
완성 - 화면 (0) | 2021.06.08 |
---|---|
완성 - 게시판 부분 (0) | 2021.06.08 |
게시판 진행 상황 (0) | 2021.05.23 |
게시판 만들기_파일 및 메서드 정의 (0) | 2021.05.19 |
세미프로젝트 요구사항 및 목표 프로그램 정의 (0) | 2021.05.17 |