반응형
목록 페이지에서 검색 추가하기.
컨트롤러는 사용자가 요청하는 것을 받는 것이 역할입니다.
사용자가 어떠한 검색기준으로 검색할 것인지
String field ="";
사용자가 어떠한 검색을 할것인지
String query = "":
jsp의 form태그에서 전송하는 값을 받는다.
<form class="table-form">
<fieldset>
<legend class="hidden">공지사항 검색 필드</legend>
<label class="hidden">검색분류</label>
<select name="f">
<option value="title">제목</option>
<option value="writerId">작성자</option>
</select>
<label class="hidden">검색어</label>
<input type="text" name="q" value="" />
<input class="btn btn-search" type="submit"value="검색" />
</fieldset>
</form>
만약 사용자가 검색창에서 a를 입력했다면
웹브라우저는? f=title% q=a라는 url을 전송할 것입니다.
그 값을 받아서 역할이 컨트롤러이고 처리한 뒤 비단으로 보내줍니다.
입력도구인 request를 이용해 저장합니다.
String field_ = request.getParameter("f"); //검색목록
String query_ = request.getParameter("q"); //검색어
String field = "title";
if(field_ != null)
field = field_;
String query ="";
if(query_ != null)
query = query_;
NoticeService service = new NoticeService();
List<Notice> list = service.getNoticeList(field,query,1);
option 태그와 selected
<option> 태그의 selected 속성은 페이지가 로드될 때 옵션 중에서 미리 선택되는 옵션을 명시합니다.
selected 속성이 명시된 옵션은 드롭다운 리스트에(검색설정 리스트) 가장 먼저 표시되며, 페이지가 로드된 후에도 자바스크립트를 사용하여 selected 속성을 설정할 수 있습니다.
검색했을 때 상태를 유지할 때 사용됩니다.
<div class="search-form margin-top first align-right">
<h3 class="hidden">공지사항 검색폼</h3>
<form class="table-form">
<fieldset>
<legend class="hidden">공지사항 검색 필드</legend>
<label class="hidden">검색분류</label>
<select name="f">
<option ${(param.f =="title")?"selected":""} value="title">제목</option>
<option ${(param.f =="writer_Id")?"selected":""} value="writer_Id">작성자</option>
</select>
<label class="hidden">검색어</label>
<input type="text" name="q" value="${param.q} }" />
<input class="btn btn-search" type="submit"value="검색" />
</fieldset>
</form>
</div>
목록에서 페이징 구현
사용자가 값을 서버에게 전달해주지 않으면 서버에서는 빈 문자열을 값으로 받습니다.
따라서 컨트롤에서 조건식을 변경해줍니다.
String field_ = request.getParameter("f"); //검색목록
String query_ = request.getParameter("q"); //검색어
String page_ = request.getParameter("p");
String field = "title";
if(field_ != null && !field_.equals("") )
field = field_;
String query ="";
if(query_ != null && !query_.equals(""))
query = query_;
int page = 1;
if(page_ != null && !page_.equals(""))
page = Integer.parseInt(page_);
글목록 페이지에서 다음 페이지를 눌렀을 때
<ul class="-list- center">
<c:forEach var="i" begin="0" end="4">
<li><a class="-text- orange bold"
href="?p=${startNum+i}&f=${param.f}&q=${param.q}">${startNum+i}</a></li>
</c:forEach>
</ul>
그 값을 서버로 보내기 위한 작업이다.
String page_ = request.getParameter("p"); //현재페이지번호
컨트롤에서 String으로 받는 이유는 만약 null값이나 빈 문자열이 들어왔을 경우
int형은 그 값을 받지 못하기 때문에 String형으로 받은 뒤 조건식을 이용해 int형으로 변환시켜준다.
반응형
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 48일차 -73 (0) | 2020.05.03 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 47일차 -71 (0) | 2020.05.02 |
자바기반의 웹&앱 응용 SW개발자 양성과정 46일차 -69 (0) | 2020.05.01 |
자바기반의 웹&앱 응용 SW개발자 양성과정 46일차 -68 (0) | 2020.05.01 |
자바기반의 웹&앱 응용 SW개발자 양성과정 45일차 -67 (0) | 2020.05.01 |
댓글