1. app.use(express.urlencoded({extended:true}));
2. app.use(express.json());
action
, name
, target
, method
<input>
, <select>
, <textarea>
, <button>
등등action
: 폼을 전송할 서버 주소 지정name
: 폼을 식벽하기 위한 이름method
: 폼을 서버에 전송할 http 메소드 지정target
: action
속성값에 지정한 스크립트 파일을 현재 창이 아닌 다른 위치에서 열 수 있도록 함get
: 서버 리소스에서 데이터를 요청할 때post
: 서버의 리소스를 새로 생성하거나 업데이트 할 때type
: 인풋 타입name
: 이름 지정. backend
에서 name
으로 key
가 설정된다.readonly
: 읽기 전용(수정 불가)autofocus
: 자동 focusplaceholder
: 짧은 도움말text
: radio
: checkbox
: for
속성 : for
속성에 연결할 요소의 id
를 적어 label
을 클릭해도 해당 요소로 가게 만들 수 있다.fieldset
: 폼 태그 안에 있는 요소들을 그룹화할 때 사용한다.legend
: fieldset
안에 들어가는 태그로, 목적에 맞게 이름을 지정할 수 있다.
legend자리
이름: app.get('/getForm', function(req, res){
console.log(req.query);
res.send('get 요청 성공!');
});
// 콘솔창
{id: 'apple', pw: '1234'}
제출 클릭
app.post('/postForm', function(req, res){
console.log(req.body);
req.send('post 요청 성공!');
});
// 콘솔창
{id: 'banana', pw: '4321'}
app.get('/getForm', function(req, res){
console.log(req.query);
// res.send('get 요청 성공!');
res.render('result', {
title: 'GET 요청 폼 결과 확인하기',
userInfo: req.query,
});
});
app.post('/postForm', function(req, res){
console.log(req.body);
// res.send('post 요청 성공!');
res.render('result', {
title: 'POST 요청 폼 결과 확인하기',
userInfo: req.body,
});
});
form 요소들에 정보가 올바르게 입력되었는지 검사하는 것
required : 필수 값
minlength
/ maxlength
: 최소/최대 문자수
min
/ max
: 최소/최대 값
type
: 입력받는 정보 타입
pattern
: 정규식으로 검사
/
: 정규식을 사용한다는 의미(정규표현식을 //
으로 감싼다.)^
: 시작$
: 끝[]
: 범위[a-z]
: a부터 z까지 중 문자 하나[가-힣]
: 한글의 모든 음절 범위를 표현{}
: 개수{2, 4}
: 2개 부터 4개까지()
: 그룹 검색 및 분류.
: 임의의 글자 하나+
: 1개 이상의 글자*
: 0개 이상의 모든 문자?
: 0~1번 반복되는 문자열<form action="/postForm" name="login" method="post">
<input
type="text"
name="id"
placeholder="ID"
pattern="^([a-zA-Z0-9가-힣]){4,}$"
title="대소문자, 한글, 숫자, 4글자 이상"
required
/>
<input
type="password"
name="pw"
placeholder="PW"
pattern="^([a-z0-9]){8,12}$"
title="소문자, 숫자로 8자리 이상 12자리 이하"
required
/>
</form>