@WebServlet("/hello")
public class Nana extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.println("hello");
}
}
* java8버전은 tomcat9버전 사용 10버전 호환이 안되는지 사용 에러
- Annotation을 이용해서 URL 매핑 - web.xml에서 추가적인 servlet을 설정을 할 필요가 없음
- 단 web.xml에서 metadata-complete = "false"로 설정해 줄 것
@WebServlet("/web url")
여러명이서 만들 때 프로그램을 분리된 상태에서 다루도록 하기 위해서 web.xml이 아니라 Annotation을 사용해서 지정
- 출력형식을 지정을 할때 각 브라우저마다 출력형식을 알려주지 않으면 자의적으로 해석을 함
한글이 깨지는 이유 - ISO-8859-1 인코딩 방식을 톰캣이 기본적으로 사용
해당 인코딩 방식을 UTF-8방식으로 변경해야 함
@WebServlet("/hi")
public class Nana extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8"); // 인코딩 방식 지정
resp.setContentType("text/html; charset=UTF-8"); //콘텐츠타입 지정
PrintWriter out = resp.getWriter();
for(int i=0; i<10; ++i)
out.println("안녕 <br>");
}
}
- 사용자의 요청 처리 - GET, POST
- GET요청 - 무엇을 달라고 하는 요청에 옵션이 있을 수 있음
localhost/hello?cnt=3
hello?cnt=3 : 요청, cnt=3 : 쿼리스트링(문자열로 입력)
hello?cnt=3 => "3"
hello?cnt= => ""
hello? => null
hello => null
@WebServlet("/hi")
public class Nana extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8"); // 인코딩 방식 지정
resp.setContentType("text/html; charset=UTF-8"); //콘텐츠타입 지정
PrintWriter out = resp.getWriter();
String cnt_ = req.getParameter("cnt");
int cnt = 10;
if(cnt_ != null && !cnt_.equals(""))//null 혹은 빈문자열이 아닌경우
cnt = Integer.parseInt(cnt_); // 문자열로 입력
for(int i=0; i<cnt; ++i)
out.println("안녕 <br>");
}
}
- 사용자에게 입력을 받아서 처리하기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="hi">
<div>
"안녕"을 몇번 듣고 싶으세요?
</div>
<div>
<input type = "text" name = "cnt">
<input type = "submit" value = "출력">
</div>
</form>
</body>
</html>
* form action : /hi web 열기 - WebServlet annotation과 동일ㅅ
* input name = 값을 전달 할때의 변수 이름, value = 화면에 보여줄 이름
- post요청
get요청이 url의 파라미터로 보냈다면 post요청은 http body 부분에 담아서 서버로 보냄
데이터 전송의 길이 제한이 없고 용량이 큰 데이터를 보낼 때 사용, 외부적으로 드러나지 않아서 보안에 유리
html form을 통해서 서버로 전달
<body>
<form action="notice-reg" method="post"> --post방식으로 지정
<div>
제목 : <input name = "title" type = "text">
</div>
<div>
내용 : <br>
<textarea name = "content"></textarea>
</div>
<div>
<input type = "submit" value = "등록">
</div>
</form>
</body>
입력을 받을때도 request.setCharacterEncoding을 UTF-8로 설정을 해서 받아야 한글 깨지는 현상을 고칠 수 있음
- 서블릿 필터
모든 서블릿이 가지는 request, response의 동일한 설정을 한번에 먼저 처리를 하도록 도움
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest req
, ServletResponse resp
, FilterChain chain)
throws IOException, ServletException {
//before filter
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, resp);//요청이 들어오면 다음 흐름 넘김
//after filter
}
}
filter 파일을 만들어서 처리
'공부기록 > Servlet JSP' 카테고리의 다른 글
JSP시작 (0) | 2021.09.27 |
---|---|
Servlet (0) | 2021.09.13 |
Servlet (0) | 2021.08.24 |
Servlet-간단한 덧셈기 만들기 (0) | 2021.08.21 |
Servlet-Tomcat (0) | 2021.08.12 |