jhs0129
프로그래밍
jhs0129
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자격증
      • SQLD
      • 정보처리기사
    • 프로젝트
      • html csss js - todolist
      • JSP 방명록
      • 졸업작품
    • 공부기록
      • Java
      • Spring
      • Spring Security
      • Algorithm
      • JPA
      • DB
      • Servlet JSP
      • html
      • 기술공유
    • 잡다한 생각

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • NHN Cloud
  • spring
  • spring boot
  • github
  • spring framework
  • Spring Security
  • rest docs
  • Spring Security Login
  • oAuth2
  • spring data jpa
  • codedeploy
  • AWS
  • 프로젝트
  • 스프링
  • EC2
  • 스프링 프레임워크
  • 스프링시큐리티
  • JPA
  • cicd
  • nhn cloud 강의

최근 댓글

최근 글

티스토리

반응형
250x250
hELLO · Designed By 정상우.
jhs0129

프로그래밍

Servlet
공부기록/Servlet JSP

Servlet

2021. 8. 21. 14:51
320x100
반응형
@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 파일을 만들어서 처리

320x100
반응형

'공부기록 > 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
    '공부기록/Servlet JSP' 카테고리의 다른 글
    • Servlet
    • Servlet
    • Servlet-간단한 덧셈기 만들기
    • Servlet-Tomcat
    jhs0129
    jhs0129
    공부기록 남기기

    티스토리툴바