본문 바로가기

Learning/HTML&JavaScript

Post 방식으로 페이지 이동하기

jsp에서 <a>태그에 href값을 주면 get방식으로 넘어간다. 

하지만 post로 넘기고 싶다면?

=> onClick이벤트로 자바스크립트 함수를 추가하고 그 함수안에서 post로 넘기면 된다.

 

 

1. 컨트롤러로 넘기는 값이 없을때

(1) JSP (form 태그로 안감싸도 된다.)

1
<a href="javascript:void(0)" onClick="javascript:goPost()">클릭시 POST로 페이지 </a>
cs

(2) Javascript 함수 (method는 post, 컨트롤러 주소는 goPost.do)

1
2
3
4
5
6
7
function goPost(){
    let f = document.createElement('form');
    f.setAttribute('method''post');
    f.setAttribute('action''goPost.do');
    document.body.appendChild(f);
    f.submit();
}
cs

 

(3)Controller (goPost.do로 호출되고 post.jsp라는 페이지로 이동한다)

1
2
3
4
@PostMapping("goPost.do")
public String go_post(){
    return "post";
}
cs

 

전달하는 값은 없지만 굳이 PostMapping으로 페이지 이동을 해야할때 사용 

 

 

2. 컨트롤러로 넘기는 값이 있을때

(1) JSP (jstl 태그의 값을 인수로 넘겨준다고 쳤을때)

1
<a href="javascript:listView('${list.userid}')">유저아이디</a>
cs

이전에는 보통 다음과 같이 getMapping으로 넘어가도록 했었다.

1
<a href="getView.do?userid=${list.userid}">유저아</a>
cs

 

 

(2) Javascript 함수

hidden 타입의 input태그를 만들어서 그 value값에 전달하고자 하는 인수를 집어넣고, userid란 이름으로 넘기겠다는 뜻이다.

method는 post, 컨트롤러 주소는 view.do이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function listView(userid){
    let f = document.createElement('form');
    
    let obj;
    obj = document.createElement('input');
    obj.setAttribute('type''hidden');
    obj.setAttribute('name''userid');
    obj.setAttribute('value', userid);
    
    f.appendChild(obj);
    f.setAttribute('method''post');
    f.setAttribute('action''view.do');
    document.body.appendChild(f);
    f.submit();
}
cs

 

(3)Controller

1
2
3
4
5
6
@PostMapping("view.do")
public String getView(String userid, Model model){
    User userView = userService.view(userid);
    model.addAttribute("userView", userView);
    return "view";
}
cs

 

 

'Learning > HTML&JavaScript' 카테고리의 다른 글

과제-반응형 웹 만들고 이력서와 회원가입 페이지 연결하기  (0) 2020.08.04
반응형 웹 디자인  (0) 2020.08.04
DOM, BOM  (0) 2020.08.04
자바스크립트 함수 2  (0) 2020.08.03
자바스크립트 함수 1  (0) 2020.07.31