📌 JSONWriter
- JSONWriter
JSON 형태의 key, value 데이터를 HTML로 출력하는 역할
int num=Integer.parseInt(request.getParameter("num"));
Map<String, Object> map=new HashMap<>();
map.put("num", 1);
map.put("name", "김구라");
map.put("isMan", true);
JSONWriter.valueToString(map)
📌 JS fetch() 함수
- fetch 함수
- 페이지 전환없이 요청 및 응답을 수행하도록 지원하는 함수
- Default로 GET 요청 방식을 사용
- 응답 객체로부터 JSON 포멧 또는 HTML의 응답 전문을 반환받을 수 있다.
- 구조
fetch("주소+queryString", HTTP전송 방식)
.then((res) => {return res.json(); or res.text();})
.then((data) => {console.log(data)});
↪ 1. res.json() : 응답 파일에서 JSON으로 넘겨줬을 경우
↪ 2. res.text() : 응답 파일에서 XML or HTML로 넘겨줬을 경우
- 사용 함수
- new URLSearchParams(form 데이터) : form 요소의 input 요소 name을 Query String 형태로 변환하기 위한 함수
- new FormData(form) : form 요소의 입력 데이터들을 가져오는 함수
- encodeURIcomponent(value) : Object 형태의 데이터 value를 인코딩하여 반환하는 함수
- 버튼 fetch() 함수 적용
document.querySelector("#requestBtn").addEventListener("click", ()=>{
fetch("get_data.jsp?num=1")
.then((res)=>{
return res.json();
})
.then((data)=>{
console.log(data);
let info=`
<p>번호:\${data.num}</p>
<p>이름:\${data.name}</p>
<p>남자여부:\${data.isMan}</p>
`;
document.querySelector("#one").innerHTML=info;
});
});
document.querySelector("#myForm").addEventListener("submit", (e)=>{
e.preventDefault();
const form=document.querySelector("#myForm");
const qs=new URLSearchParams(new FormData(form)).toString();
fetch("insert.jsp", {
method:"POST",
headers:{"Content-Type":"application/x-www-form-urlencoded; charset=utf-8"},
body:qs
})
.then((res)=>{
return res.json();
})
.then((data)=>{
console.log(data);
});
});
📌 parameter 인코딩
- url 파라미터 인코딩
JS : encodeURIcomponent(value)
Java : URLEncoder.encode(value)
<!-- JavaScript에서의 파라미터 인코딩 -->
encodeURIcomponent(url.value);
String encodedUrl=URLEncoder.encode(url);
📌 Filter
- Filter
클라이언트 요청이 서버로 가기 전에 Filter할 수 있는 구현 클래스
- Filter 구현
1. Filter 인터페이스를 implements 한다.
2. @WebFilter(필터 요청 보낸 경로)
↪ urlPatterns = {"/경로1/", "경로2/", ....} 로 지정가능
3. destroy(), doFilter(), init() 메소드를 구현한다.
- doFilter() 메소드
ServletRequest 객체 : HttpServletRequest의 부모 클래스
ServletResponse 객체 : HttpServletResponse의 부모 클래스
FilterChain 객체 : 클라이언트로부터 받은 요청을 서버로 channing하기 위한 객체
↪ chain.doFilter(request, response) : 요청, 응답 메시지를 서버로 연결시킴
📌 File
- file 업로드
- 파일 다운로드를 위해서는 원본 파일명, 저장된 파일명, 파일 크기 정보가 필요하다.