JSP 게시판
# 페이지를 바꿔도, 검색타입과 검색어는 유지
페이지를 넘기면 검색했던 타입과 검색어가 초기화되는 현상을 바꾼다.
현재의 코드
<div class="page-menu">
<c:set var="baseUri" value="?boardId=${boardId}" />
<c:set var="pageMenuArmSize" value="7" />
<c:set var="startPage" value="${page - pageMenuArmSize >= 1 ? page - pageMenuArmSize : 1}" />
<c:set var="endPage" value="${page + pageMenuArmSize <= totalPage ? page + pageMenuArmSize : totalPage}" />
한 부분만 가져온 상태인데 위 코드를 읽어보면 boardId만 있는 상태인 것을 확인할 수 있다.
내가 페이지를 돌리다보면 검색어와 검색타입을 까먹을 수도 있는 상황이 있을 때를 대비하기 위해 코드를 추가하였다.
<div class="page-menu">
<c:set var="baseUri" value="?boardId=${boardId}" />
<c:set var="baseUri" value="${baseUri}&searchKeywordTypeCode=${param.searchKeywordTypeCode}" />
<c:set var="baseUri" value="${baseUri}&searchKeyword=${param.searchKeyword}" />
<c:set var="pageMenuArmSize" value="7" />
<c:set var="startPage" value="${page - pageMenuArmSize >= 1 ? page - pageMenuArmSize : 1}" />
<c:set var="endPage" value="${page + pageMenuArmSize <= totalPage ? page + pageMenuArmSize : totalPage}" />
Rq를 이용하여 좀 더 쉽게 코드를 짜였고, 검색타입과 검색어 타입도 유지되도록 하였다.
# NeedLogin 인터셉터에서, 로그인 후 원래 가려던 곳으로 갈 수 있도록 세팅
로그아웃상태에서 글작성을 할려하면 로그인을 하라는 경고 메세지가 날라온다.
그 경고 메세지와 함께 편하게 로그인하라는 로그인 페이지를 뜨게 하도록 세팅하자.
if ( rq.isNotLogined() ) {
rq.historyBack("로그인 후 이용해주세요.");
return false;
}
return true;
}
}
위에 코드는 NeedLogin 인터셉터인데,
History.back() 메서드는 브라우저가 세션 기록의 바로 뒤 페이지로 이동하도록 지시한다.
그렇기 때문에 바꿔줘야 한다.
if ( rq.isNotLogined() ) {
rq.replace("로그인 후 이용해주세요.", "../member/login?afterLoginUri=" + rq.getEncodedAfterLoginUri());
return false;
}
return true;
}
}
위에는 바뀐 코드인데 history 대신 replace를 이용하여 내가 원하는 로그인창이 뜨도록 세팅해놨다.
# 메인화면 추가
게시판의 용도로 쓰이고 있지만 정말 블로그 답게 만들고 싶기 때문에 메인화면을 추가할려고 한다.
추가적으로 우선
main.jsp 와 UsrHomeControllor만 우선적으로 만들 것.
UsrHomeControllor 를 쉽게 만들기 위해선 기존에 있던 UsrArticleControllor 를 가져와서 고칠 것만 고친다.
UsrHomeControllor
package com.jhs.exam.exam2.http.controller;
import com.jhs.exam.exam2.http.Rq;
public class UsrHomeController extends Controller {
@Override
public void performAction(Rq rq) {
switch (rq.getActionMethodName()) {
case "main":
actionShowMain(rq);
break;
default:
rq.println("존재하지 않는 페이지 입니다.");
break;
}
}
private void actionShowMain(Rq rq) {
rq.jsp("usr/home/main");
}
}
또한 UsrHomeController 도 똑같이 기존에 UsrArticleController와 같이 Container인터셉터에 연결되도록 동일하게 만들어야한다.
이러한 준비를 마쳤다면 main 페이지를 만들어도 된다.
Main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="pageTitle" value="홈" />
<%@ include file="../part/head.jspf"%>
<section class="section section-home-main px-4">
<div class="container mx-auto">
<div class="card bordered shadow-lg">
<div class="card-title">
<a href="javascript:history.back();" class="cursor-pointer">
<i class="fas fa-chevron-left"></i>
</a>
<span>홈</span>
</div>
<div>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae repellendus laudantium rem molestiae cum voluptatum natus adipisci illo sapiente incidunt! Velit nihil quibusdam ullam quo rem corporis odit ratione laudantium.</div>
<div>Vel debitis quis sit mollitia sed assumenda cupiditate. Itaque ab ex voluptatum possimus placeat explicabo veniam nemo iure. Eos dolor sequi praesentium doloremque laboriosam quam vitae quod veniam quidem dolores.</div>
<div>Architecto facilis ad hic molestias odit laborum consectetur asperiores quas facere dolorem quia repudiandae amet porro mollitia quae recusandae dicta consequatur dolorum animi commodi ut. Quod corporis optio atque iure!</div>
<div>Error praesentium sint hic eius nobis nisi quasi quaerat eligendi vel odit architecto possimus illo in maxime iste necessitatibus quia. Deserunt veniam eaque culpa vitae soluta officia unde voluptatem voluptate.</div>
<div>Amet atque iusto ullam modi obcaecati sunt odio culpa delectus minus illum tempore laborum id cum quis voluptatibus vero ea doloribus vel. Minima aspernatur deleniti optio repellat esse quod ab!</div>
<div>Vel dolores voluptatibus et qui consequuntur veniam sapiente? Laborum explicabo necessitatibus similique modi ullam dolor tempore quos doloremque impedit saepe mollitia a cum? Repellendus quam a suscipit reprehenderit expedita perspiciatis.</div>
<div>Porro aliquam officia corrupti fuga excepturi doloribus ullam asperiores repellat dolore perspiciatis incidunt accusamus aut ea maxime dolorum laborum tempora cupiditate soluta non blanditiis. Omnis corporis quia velit inventore doloremque.</div>
<div>Velit odio doloribus ducimus consequatur totam voluptatem minus fuga voluptatibus fugiat eius eum porro expedita nam quaerat necessitatibus eligendi alias quia eaque praesentium unde. Ducimus temporibus id explicabo inventore ipsam?</div>
<div>Sint rem officia itaque ut commodi voluptas temporibus nulla atque non quibusdam quidem assumenda quam harum ipsum minima voluptatibus ullam velit fugit cumque error! Amet suscipit asperiores et repellendus vel?</div>
<div>Pariatur alias ut eveniet rem corporis autem asperiores accusamus voluptate minus repudiandae culpa illo voluptatibus nam quis consectetur consequatur sit atque velit quae minima dolores labore odit illum omnis officia?</div>
</div>
</div>
</div>
</section>
<%@ include file="../part/foot.jspf"%>
메인화면을 어떻게 짜야할지 몰라서 이정도 만들었으며 어떻게 나오는지 캡처를 해서 보면..

이정도면 깔끔하게 만든 거 같다! 조금만 더 이쁘게 꾸미고 홈 화면도 깔끔하게 정리하면 될 거 같다.
'공부기록' 카테고리의 다른 글
| 2021-07-29,공부기록 (0) | 2021.07.29 |
|---|---|
| 2021-07-23,공부기록(1) (0) | 2021.07.23 |
| 2021-07-20 공부기록 (0) | 2021.07.20 |
| 2021-06-16 까지의 공부 내용들 (0) | 2021.06.17 |
| 2021-06-08까지의 공부기록 (0) | 2021.06.09 |