๐Ÿ’ปStudy/Spring

์ž…๋ ฅ์˜ ์ข…๋ฅ˜ / QueryString ์ž…๋ ฅ

์œผ๋…ธ๋‹ˆ 2021. 3. 4. 10:33

์ง€๊ธˆ๊นŒ์ง€๋Š” ์Šคํ”„๋ง MVC๋ฅผ ์ด์šฉํ•œ ๋งคํ•‘, ์ถœ๋ ฅ์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด์ œ๋ถ€ํ„ฐ๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

 

 

* QueryString ์ž…๋ ฅ

 

 

 

์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ž…๋ ฅ ๋„๊ตฌ์ธ HttpServletRequest๋ฅผ ์–ป์–ด์™€์„œ getParameter ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ์„œ๋ธ”๋ฆฟ์—์„œ์˜ ๋ฐฉ๋ฒ•๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค. ์Šคํ”„๋ง์—์„œ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์กฐ๊ธˆ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ• ์—ญ์‹œ ์ œ๊ณตํ•œ๋‹ค. ์ž…๋ ฅ ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ ๊ฐ’์„ ์–ป์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

 

 

์‚ฌ์šฉ์ž๊ฐ€ "p=1" ์ด๋ผ๋Š” ์˜ต์…˜์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์š”์ฒญ์„ ๋ฐ›์•„ ํ•ด๋‹นํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—๋Š” "1"์ด๋ผ๋Š” ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ปจํŠธ๋กค๋Ÿฌ๋Š” "p"๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๊ฐ’์„ ์–ป์–ด์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

* HttpServletRequest ์‚ฌ์šฉํ•˜๊ธฐ

 

 

NoticeController.java (com.newlecture.web.controller.customer)

@Controller
@RequestMapping("/customer/notice/")
public class NoticeController{

	@Autowired
	private NoticeService noticeService;

	@RequestMapping("list")
	public String list(HttpServletRequest request) throws ClassNotFoundException, SQLException {
		
		String p = request.getParameter("p");
		System.out.println(p);
		
		List<Notice> list = noticeService.getList(1, "TITLE", "");
		
		return "notice.list";
	}
}

 

"localhost:8080/customer/notice/list?p=1" ์„ ์‹คํ–‰ํ•˜๋ฉด request ๊ฐ์ฒด๋ฅผ ์–ป์–ด์™€ ์ฝ˜์†”์ฐฝ์— "1"์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

* ์ž…๋ ฅ ๊ฐ’๋งŒ ์–ป์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ

 

NoticeController.java

@Controller
@RequestMapping("/customer/notice/")
public class NoticeController{

	@Autowired
	private NoticeService noticeService;

	@RequestMapping("list")
	public String list(String p) throws ClassNotFoundException, SQLException {
		
		System.out.println(p);
		
		List<Notice> list = noticeService.getList(1, "TITLE", "");
		
		return "notice.list";
	}

 

"localhost:8080/customer/notice/list?p=5" ์„ ์‹คํ–‰ํ•˜๋ฉด ์ฝ˜์†”์ฐฝ์— "5"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. url์—์„œ "p=5"๋ผ๊ณ  ์˜ต์…˜์„ ๋‹ฌ์•„ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ณ , ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋Š” ๋ณ€์ˆ˜๋ช…๋งŒ ๋งž์ถฐ์„œ String์„ ๋ฐ›์•„์˜ค๋ฉด ์Šคํ”„๋ง์ด ์•Œ์•„์„œ url์˜ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๊ฐ’์„ ๋ฐ›์•„์˜จ๋‹ค.

 

 

 

* QueryString ๋ณ€์ˆ˜๋ช…๊ณผ ๊ธฐ๋ณธ ๊ฐ’ ์ฒ˜๋ฆฌ

 

์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ url์— ์˜ต์…˜์œผ๋กœ ๊ฐ’์„ ๋ณด๋‚ด๋ฉด์„œ ์š”์ฒญํ•˜๋ฉด ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ›์•„ ๊ฐ™์€ ๋ณ€์ˆ˜๋ช…(์—ฌ๊ธฐ์„œ๋Š” p)์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ๊ฐ’์„ ๋ณด๋‚ด๊ณ , ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ทธ ๋ณ€์ˆ˜๋ช…์œผ๋กœ String์„ ๋ฐ›์•„ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ๊ฐ’์„ ๋ฐ›์•„์˜ค๊ณ  ์‹ถ์„ ๋•Œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ @RequestParam์ด๋‹ค.

 

 

 

 

url์˜ ์š”์ฒญ๋Œ€๋กœ "p"๋ผ๋Š” ๋ณ€์ˆ˜์™€ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ณด๋‚ด๋Š”๋ฐ, ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋Š” "page"๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ทธ๊ฒƒ์„ ๋ฐ›๊ฒ ๋‹ค๋Š” ์„ ์–ธ์ด๋‹ค.

 

๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ p๋ผ๋Š” ์˜ต์…˜ ์—†์ด url ์š”์ฒญ์„ ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ p ๊ฐ’์ด ์—†์„ ๋•Œ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๋•Œ defaultValue, name, required, value์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” @RequestParam์˜ ์˜ต์…˜

 

 

NoticeController.java

@Controller
@RequestMapping("/customer/notice/")
public class NoticeController{

	@Autowired
	private NoticeService noticeService;

	@RequestMapping("list")
	public String list(@RequestParam(name="p", defaultValue="1") int page) throws ClassNotFoundException, SQLException {
		
		/*
		 * ์ž…๋ ฅ ๊ฐ’ ์–ป์–ด์˜ค๋Š” ๋ฐฉ๋ฒ• *
		1. HttpServletRequest ์ž…๋ ฅ ๋„๊ตฌ ๊ฐ์ฒด๋ฅผ ์–ป์–ด์™€์„œ 
			String p = request.getParameter("p"); ๋ฐฉ์‹์œผ๋กœ ๋ฐ›๋Š”๋‹ค.
		2. String p ๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋ฐ›์•„์˜จ๋‹ค. 
			url์—์„œ ๋ณด๋‚ธ ๋ณ€์ˆ˜๋ช…๋Œ€๋กœ ๋ฐ›์•„์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
		3. @RequestParam("p") String page ๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋ฐ›์•„์˜จ๋‹ค. 
			p๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋ณด๋‚ด๊ณ  page๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.
		 */
		
		System.out.println("page : " + page);
		
		List<Notice> list = noticeService.getList(1, "TITLE", "");
		
		return "notice.list";
	}
}

 

name์œผ๋กœ ๋ฐ›์•„์˜ฌ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ์ง€์ •, defaultValue๋กœ ๋ฐ›์•„์˜ฌ ๊ฐ’์˜ ๊ธฐ๋ณธ๊ฐ’ ์ง€์ •์„ ํ•˜์˜€๋‹ค. ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์€ ์ผ๋ฐ˜์ ์œผ๋กœ String์œผ๋กœ ๋ฐ›์•„์™€์„œ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ํ˜• ๋ณ€ํ™˜์„ ํ•ด์•ผํ•˜์ง€๋งŒ(ParseInt ๋“ฑ) ์Šคํ”„๋ง์€ ํ˜• ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๋•Œ ๊ฐ’ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋ฉด ๊ทธ ํƒ€์ž…์œผ๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ ์—ญ์‹œ ์ง€์›ํ•œ๋‹ค.

 

 

 

* @RequestParam์˜ required ์†์„ฑ

 

 

NoticeController.java

@Controller
@RequestMapping("/customer/notice/")
public class NoticeController{

	@Autowired
	private NoticeService noticeService;

	//url ๊ตฌ์กฐ๋Š” ํŒŒ์ผ ๊ตฌ์กฐ์™€ ๊ฐ™๊ฒŒ ํ•ด์•ผ ํŒŒ์ผ ์ฐพ์•„๊ฐ€๊ธฐ ์‰ฝ๋‹ค.
	@RequestMapping("list")
	public String list(@RequestParam(name="p", required=false) Integer page) throws ClassNotFoundException, SQLException {
		//defaultValue ๋Œ€์‹  required=false ์‚ฌ์šฉ, Integer ํƒ€์ž…์œผ๋กœ ๋ฐ›์•„์˜จ๋‹ค.
				
		System.out.println("page : " + page);
		
		List<Notice> list = noticeService.getList(1, "TITLE", "");
		
		return "notice.list";
	}
}

 

required ์˜ต์…˜์€ ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•„์ˆ˜์ธ์ง€์˜ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์€ true์ด๋‹ค. 

"@RequestParam(name="p", required=false) Integer page"์˜ ์˜๋ฏธ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ p๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜์„ ๋•Œ Integer page๋ฅผ null๋กœ ๋ฐ›๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ธฐ๋ณธํƒ€์ž…์ธ int๋Š” null์„ ๋ฐ›์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ page ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์„ Integer์œผ๋กœ ์„ ์–ธํ•˜์˜€๋‹ค.

 

 

 

* @RequestParam์˜ value ์†์„ฑ

 

value ์†์„ฑ์€ name์„ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋Š”, name์˜ ๋ณ„์นญ์ด๋‹ค. ๋‘˜์ด ๋น„์Šทํ•˜์ง€๋งŒ name๊ณผ value๋ฅผ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ๋‘˜์ด ๊ฐ™์œผ๋‹ˆ ์•„๋ฌด๊ฑฐ๋‚˜ ์“ฐ์ž.