저번에 만들었던 파일을 재활용합니다. public 폴더 안에 login.html 과 output.html 파일 만들어주기. 타이틀에서도 알 수 있듯이 login에서 ID와 password를 입력하면 output.html에서 보여지게 할겁니다.
1
2
3
4
5
6
7
8
9
10
11
12
//login.html
...
<body>
<formmethod="post"action = "/output">
<h4>아이디</h4>
<inputtype="text"name="id">
<h4>패스워드</h4>
<inputtype="password"name="password">
<buttontype="submit">전송</button>
</form>
</body>
...
Route 설정하기
라우팅은 애플리케이션 엔드 포인트(URI)의 정의, 그리고 URI가 클라이언트 요청에 응답하는 방식을 말합니다. 쉽게는 그냥 url을 지정하는 것이라고 생각하시면 될 듯 합니다. 이전에는 url에 정보를 담아 던지는 방법밖에 없어서 url자체가 길어지고 지저분 할 수 밖에 없었다고 하는데 라우팅을 통해서 간단한 url을 제공할 수 있습니다.
하지만 너무 제멋대로 실제 파일구조와 너무 다른 url을 생성한다면 같이 일하는 사람에게 욕먹음…
login.html 파일을 /login으로 url지정하기
1
2
3
router.route('/login').get((req, res)=>{
res.render('login.html');
});
위에서 /public 경로를 지정해 주었기 때문에 render에서는 이후 파일 이름만 넣어 줍니다.여기에서 확장자도 같이 넣어 주도록 합니다. 안그럼 오류나.. route에는 실제 url에 들어갈 이름 지정.
oupput.html파일을 /output으로 url지정
1
2
3
router.route('/output').post((req, res)=>{
res.render('output.html');
});
그리고 맨 끝에는 미들웨어에 router객체를 등록하는 태그를 넣어줍니다.
1
2
app.use('/', router);
//미들웨어에 router객체를 등록
login.html에서 넘어온 정보를 output.html에 뿌려주기
생각보다 넘나 간단한 것. 위에서 라우터 등록하는 부분에 user정보를 렌더합니다(?)
1
2
3
4
5
6
//app.js
router.route('/output').post((req, res)=>{
console.log('output 처리함')
var user = {id:req.body.id, password:req.body.password}
res.render('out.html', user);
});
그리고 헷갈려서 여태 보지 않았던 output.html을 봅시다. body안에 정보를 넣어 줍니다. 이때 태그는 <%= %>이런 형식의 태그를 씁니다.
1
2
3
4
5
6
7
8
9
10
//output.html
<body>
<h1>Express서버에서 응답한 결과입니다.</h1>
<p>
<%=id %>
</p>
<p>
<%=password %>
</p>
</body>
app.js에서 user의 id와 password를 키값으로 등록을 했기 때문에 HTML안에서는 간단하게 키값으로만 쓸 수 있습니다.
이제 node app.js로 노드를 서버를 실행시키고 localhost:3000/login에 들어가 정보를 입력하면 output으로 이동하는 것을 확인할 수 있습니다.