본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 46일차 -70

by oncerun 2020. 5. 1.
반응형

목록 페이지에서 검색 추가하기.

 

컨트롤러는 사용자가 요청하는 것을 받는 것이 역할입니다.

 

사용자가 어떠한 검색기준으로 검색할 것인지 

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형으로 변환시켜준다.

반응형

댓글