Get Method(폼 태그) - 검색하기

김유정·2023년 11월 30일
2

서블릿-퀴즈

목록 보기
6/11
post-custom-banner
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색하기</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
</head>
<body>
	<div class="container">
		<h1>검색</h1>
		<form method="get" action="/lesson01/quiz08">

action= "" 반드시 / 로 시작해야된다.
안그럴시 /lesson01이 두번 입력된다.

			<div class="form-group d-flex">
				<input type="text" class="form-control col-5" name="search" placeholder="검색어를 입력하세요.">
				<input type="submit" value="검색" class="btn btn-primary"></input>
			</div>
  • 검색어를 입력하는 input과 버튼을 나란히 있게 하기 위해서 부모태그 div로 감싼 뒤 class에 d-flex를 입력한다.
  • form태그는 서버에 보내는 목적으로 만들어진 특수한 태그이기 때문에 부모 태그로 쓰기보단 div태그를 따로 쓰는 게 더 안전하다.
		</form>
	</div>
</body>
</html>
package com.test.lesson01;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/lesson01/quiz08")
public class GetMethodQuiz08 extends HttpServlet {
	//테스트 주석 추가

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

		// 한글깨짐 방지 + content type - response header
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");

		// request param 꺼내기
		String search = request.getParameter("search");

		// 리스트 정의
		List<String> list = new ArrayList<>(Arrays.asList("강남역 최고 맛집 소개 합니다.", "오늘 기분 좋은 일이 있었네요.",
				"역시 맛집 데이트가 제일 좋네요.", "집에 가는 길에 동네 맛집 가서 안주 사갑니다.", "자축 저 오늘 생일 이에요."));

		// 검색 -> 출력
		PrintWriter out = response.getWriter();

		Iterator<String> iter = list.iterator();
		while (iter.hasNext()) {
			String line = iter.next();
			
			//1번째 방식
//			if (line.contains(search)) {
//				String[] words = line.split(search); // 0:앞문장, 1:뒷문장
//				out.print(words[0] + "<b>" + search + "</b>" + words[1] + "<br>");
//			}
			
			//2번째 방식
			if (line.contains(search)) {
				line = line.replace(search, "<b>" + search + "</b>");
				out.print(line + "<br>");
			}
			
		}

	}
}
profile
열심히 하자
post-custom-banner

0개의 댓글