-
url mapping웹페이지 제작을 위한 스프링공부 2020. 5. 2. 11:45
servlet/jsp url주소
사용자가 서버에 접속해서 서비스를 받기 위해 입력하는 주소를 url이라고 부름
->프로토콜://도메인주소(ip)포트번호/경로1/경로2....
프로토콜
서버와 클라이언트 간의 통신을 위한 약속(생략시 http)
도메인주소(ip주소)
같은 네트워크 망에서 컴퓨터를 구분하기 위해 제공되는 숫자로 구성된 고유 주소입니다
인터넷 망에 연결된 컴퓨터는 전세계에서 유일한 주소를 할당 받고 공유기 등에 연결된 컴퓨터는 공유기안에서 유일한 주소를 할당받음, 그러나 숫자는 사람이 외우기 어려워 도메인 주소라는걸 만들어 제공함
포트번호
1부터 65535번까지로 구성된 숫자입니다,
컴퓨터내에서 프로그램을 구분하기 위해 사용합니다 (생략시 80)
경로1/경로2/..
서버 혹은 개발 방식 분야에 따라 다르게 해석된다, servlet/jsp에서는 첫번째 경로는 Context Path라고 부른다 , 하나의
서버에서 각 웹 애플리케이션을 구분하기 위해 지정되는 이름이며 폴더의 이름이 Context Path가 된다 그 이후의 경로는 하위경로가 됩니다
url mapping
클라이언트의 url요청을 처리할 메소드를 구현하여 연결시켜줌
RequestMapping
URL을 컨트롤러의 메서드와 매핑할 때 사용하는 스프링 프레임워크의 어노테이션
RequestMapping을 간단히 줄인 어노테이션
1.@GetMapping
2.@PostMapping
3.@PutMapping
4.@DeleteMapping
5.@PathMapping
@RequestMapping(value="/test1", Method=RequestMethod.GET) public String test(){ return "test1" }
RequestMapping 의 사용방법을 보면 value와 method가 있다
value는 context path이후의 요청주소값이다 즉 context path/test1이라는 주소가 요청되면 ~이라는 뜻이다
method는 요청방식이 get방식이냐 post방식이냐는 뜻이다.
정리하면
context path/test1이라는 주소가 요청되고 요청방식이 get방식이라면
test라는 메소드를 호출하겠다 근데 그메소드는 test1.jsp를 리턴한다 즉 test1.jsp라는 뷰로 이동한다 라는뜻이다.
get방식
클라이언트에서 서버로 데이터를 전달할 때,주소 뒤에 "이름"과 "값"이 결합된 스트링 형태로 전달됨
주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다
post방식보다 상대적으로 전송 속도가 빠르다
post방식
주소창에 전송하는 데이터의 정보가 노출되지 않아 get방식에 비해 보안성이 높다.
서버로 보내기 전에 인코딩하고,전송 후 서버에서는 다시 디코딩 작업을 한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action='test1' method='post'> <button type = 'submit'>post button</button> </form> <form action='test2' method='get'> <button type = 'submit'>get button</button> </form> </body> </html>
index.jsp
form태그를 사용하여 post방식과 get방식으로 요청을해보겠다.
package kr.co.softcampus.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { @RequestMapping(value="/",method = RequestMethod.GET) public String home() { System.out.println("home"); return "index"; } }
homecontroller.java
package kr.co.softcampus.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class MappingController { @RequestMapping(value="test1",method = RequestMethod.POST)//요청주소가 test2이고 요청방식이 post방식일때 public String test1() {//이 메소드를 호출 return "test1"; } @RequestMapping(value="test2",method = RequestMethod.GET)//요청주소가 test2이고 요청방식이 post방식일때 public String test2() {//이 메소드를 호출 return "test2"; } }
mappingcontroller.java
post방식과 get방식으로 각각 요청주소를 받아들여서 test1.jsp와 test2.jsp로 이동시켜줌
GetMapping,PostMapping 방법
RequestMapping을 간단히 줄인 어노테이션들을 활용하면 더 간단하게 코드를 작성할 수 있다.
package kr.co.softcampus.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class MappingController { /* * @RequestMapping(value="test1",method = RequestMethod.POST)//요청주소가 test2이고 * 요청방식이 post방식일때 public String test1() {//이 메소드를 호출 return "test1"; } * * * @RequestMapping(value="test2",method = RequestMethod.GET)//요청주소가 test2이고 * 요청방식이 post방식일때 public String test2() {//이 메소드를 호출 return "test2"; } */ @PostMapping("/test1") public String test1() { return "test1"; } @GetMapping("/test2") public String test2() { return "test2"; } }
GET방식과 POST방식을 동시에 설정하는 방법
@RequestMapping(value="test1",method = {RequestMethod.POST,RequestMethod.GET}) public String test1() { return "test1"; }
'웹페이지 제작을 위한 스프링공부' 카테고리의 다른 글
객체로 파라미터 주입받기 (0) 2020.05.02 파라미터 추출하기 (0) 2020.05.02 java로 셋팅하기 (0) 2020.05.01 xml 로 셋팅 (0) 2020.05.01 java,xml 공통 셋팅 (0) 2020.05.01