뉴렉쳐님께 항상감사함을 표합니다!
[서블릿/JSP 강의 11 - 이클립스를 이용한 서블릿 프로그래밍]
컨텍스트명은 Context가 아닌 root로 쓰는게 좋아
ctrl+shift+o (lib 추가)나 ctrl+space 를 잘 이용하자
서블릿 url 매핑법
만일 WEB-INF폴더에 web.xml이 없으면 톰캣 폴더에서 가져오자
<servlet-class>를 수정해주어야 한다.
그리고 서버 재기동한다.
서블릿/JSP 강의 12 - 어노테이션을 이용한 URL 매핑
위처럼 하면 annotation방식으로 매핑이 가능하다.
metadata-complete를 true로 하면 해당 xml에만 매핑정보가 있는걸로 판단한다.
그렇기 때문에 false로 하여, 현재 xml뿐만 아니라 다른 곳에도 매핑 장소가 있다는 것을 알린다.
간단한 실험으로, xml과 anno 둘다 /hello 매핑으로 다른 java파일을 가르키게 해 보았는데 에러 뜬다 ㅋㅋ
xml보다는 anno방식을 선호함
xml은 공용파일이라 사람들끼리 얽혀있지만
anno방식은 각자 만들기가 가능하다.
서블릿/JSP 강의 13 - 서블릿 출력 형식을 지정해야 하는 이유
println의 결과이다
어느것이 정상일까......
explorer가 맞다.
클라단에서는 웹문서를 마크업언어를 렌더링하여 보여준다.
소스보기를 하면
<br>같은 태그가 없기 때문에 줄들이 이어져야 한다.
위와 같은 차이가 여전히 존재한다.
문서 형식을 알려줘야해.
서블릿/JSP 강의 14 - 한글과 콘텐츠 형식 출력하기
한글을 입력하면 위와 같이 깨진다.
원인은 크게 두가지
참고로 저 ISO는 유럽 방식이다.
서버쪽에서 UTF-8로 보내자.
resp.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
이것만으론 불충분하다.
익스플로러는 위와같은 방식으로 바꾸기가 가능하다.
요 헤더에 심어줘야해
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
contentType 해석
char를 UTF-8로 보내니, 언어(한국어) 해석은 요걸로 하면 돼
그리고 이건 html문서야.
서블릿/JSP 강의 15 - GET 요청과 쿼리스트링
사용자에게 출력을 해보았으니 사용자의 입력을 다루어 보자
요청 : 햄버거 주세요, 양파 뺴고요, 아아 샷 두개
서블릿/JSP 강의 16 - 기본값 사용하기
package com.newlecture.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hi")
public class Nana extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("Hello ~~ asd <br/>");
String cnt_ = request.getParameter("cnt");
int cnt = 0;
if (cnt_ != null && !cnt_.equals("")) {
cnt = Integer.parseInt(cnt_);
}
System.out.println("cnt_: " + cnt_); // 디버깅용
if (cnt_ == null) {
cnt_ = "null값";
} else if(cnt_.equals("")) {
cnt_ = "공백 문자열";
}
out.printf("cnt 뒤에 온 QueryString값 : " + cnt_ + "<br/><br/><br/>");
for (int i = 0; i < cnt; i++) {
out.println((i + 1) + ": 안뇽>< Hello Servlet! <br/>");
}
}
}
_cnt 등의 변수명은 jdk 버전이 올라가면서 문제가 되는 것 같다.
cnt_등으로 바꾸어 주도록 하자.
서블릿/JSP 강의 17 - 사용자 입력을 통한 GET 요청
VSCode 로도 가능..
저걸 UTF-8로 바꾸자
500 에러메세지 출력의 경우는 예외/예측치 못한 경우인데
원인은
-서버 톡신 Timeout 시간 지연
- 서버 트래픽 과부하
- 서버 언어의 구문 에러(스크립트 문법 오류)
나는 세번째에 해당한다.
서블릿/JSP 강의 18 - 입력할 내용이 많은 경우는 POST 요청
이걸루 네트워크 인코딩 가능
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Insert title here</title>
</head>
<body>
<div>
<form action="notice-reg" method="POST">
<div><label>제목:</label><input name="title" type="text" /></div>
<div><label>내용:</label></div>
<textarea name="content"></textarea>
<div>
<input type="submit" value="등록" />
</div>
</form>
</div>
</body>
</html>
package com.newlecture.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/notice-reg")
public class NoticeReg extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
String title = request.getParameter("title");
String content = request.getParameter("content");
out.println("==== title ====<br/>");
out.printf(title + "<br/><br/>");
out.println("==== content ====<br/>");
out.println(content + "<br/><br/>");
}
}
한국어 쓰면 깨지는데 이유를 알아보자
서블릿/JSP 강의 19 - 한글 입력 문제
한글로 입력을 멀티바이트로 받아야 하는데,
한 바이트씩 받아서 문제야
request도 인코딩 셋팅해줘야해
tomcat의 server.xml을 건드리는 방식은 좋지 않아
왜냐면 한 와스를 통해서 다른 서블릿도 거쳐가는데 나머지 파일들에 영향을 미치게 돼
서블릿/JSP 강의 20 - 서블릿 필터(Servlet Filter)
요청뿐만 아니라 응답할때 필터를 거치게 할 수 있다!
xml
anno
'Back-end > 기타 (BE)' 카테고리의 다른 글
뉴렉쳐 Servlet & JSP [51 ~ 60강] (0) | 2020.10.07 |
---|---|
뉴렉쳐 Servlet & JSP [41 ~ 50강] (0) | 2020.10.03 |
뉴렉쳐 Servlet & JSP [31 ~ 40강] (2) | 2020.10.03 |
뉴렉쳐 Servlet & JSP [21~30강] (0) | 2020.10.01 |
뉴렉쳐 Servlet/JSP [11~20강] (0) | 2020.10.01 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!