22.02.17 서블릿 (Servlet) 기초

최고고·2022년 2월 17일
0
post-custom-banner

서블릿 (Servlet)

-서버상에서 작동하는 자바기반의 웹 어플리케이션 프로그래밍 기술 Server+Applet(자바 프로그램이 웹 서버에서 자동으로 설치되어 동작하는 프로그램
-방대한 정보를 관리할 데이터베이스가 필요하고, 다양한 정보를 얻을 DB에서 얻거나 저장하기위해 PHP,ASP,서블릿/JSP 등 언어가 등장
-확장자 .java
-java Multi Thread 를 이용해 동작->속도, 메모리면 효율성
-기본적으로 서버는 웹서버와 WAS로 구성 되어 있다.
-클라이언트 요청(request)에 동적으로 작동하고 응답(ressponse)은 HTML을 이용 => http 통신규약
-Web Application Server: 서버안에서 프로그램을 만들어서 구동할 수 있는 환경을 가지고 있다 / 요청한 페이지의 로직, DB와 연동을 처리할 수있는 비즈니스 로직이 구현되어야 하는 웹 어플리케이션 서버 =>서블릿/JSP를 구동시키는것은 WAS인데 구동시키기위해서는 자바 컴파일러가 필요 하기때문에 JDK설치 필수
-Common Gateway Interface : 서버안에서 프로그램으로 옮겨갈 수 있는 통신 규약
-httpservlet 클래스를 상속받아 사용
-서비스 메소드를 만들어 사용

서블릿 컨테이너

웹서버와의 통신 지원, 멀티쓰레드 지원 및 관리 등
https://velog.io/@han_been/%EC%84%9C%EB%B8%94%EB%A6%BF-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88Servlet-Container-%EB%9E%80 참고하기

Dynamic Web Project 생성하기

1.new-dynamic web project 생성하기
2.new-servlet 생성
3.패키지 이름 지정 - 클래스이름 지정 next
4.url맵핑 지정해도 되고 안해도 됨(클래스생성하고 바꿔줄수있기때문) next
5.Inherited atract method 체크, 요청방식에 따라 체크

  • src/main/java : java 소스파일(servlet파일)이 위치하는디렉토리
  • webapp : HTML,CSS,JS,JSP,이미지 파일등의 웹 콘텐츠가 위치하는 디렉토리
  • webapp/WEB-INF/lib : 자바 아카이브 파일(.jar)이 위치하는 디렉토리

어노테이션으로 URL맵핑

  • URL맵핑
    @WebServlet("/문자열")
    사용자가 직접 요청하는 것이아니라 다른 이름으로 요청하면 해당하는 클래스를 보여주는 것 => 맵핑
    -서블릿을 동작시키기 위해 실제 자바 클래스 이름 대신 사용하는 문자열
    -서블릿 클래스명을 공개하지않기 위함

요청, 응답 객체

  • request객체
    -사용자의 요청을 통해 정보를 담고 있는 객체
    정보 - 접속하는 ip주소, 데이터, 쿠키, ...등등
  • request.getRemoteAddr();
    -클라이언트 ip주소를 가져오는 기능
    String ip = request.getRemoteAddr(); String변수에 담아줌
  • 내PC주소 나타내는 방식
    localhost 콘솔창에 (Ipv6주소)
    cmd창에서 ipconfig 검색시 (Ipv4주소)
  • response 객체
    -사용자에게 응답을 해주는 객체 HTML만들어서 응답, 페이지 이동
  • response.setContentType("text/html; charset=euc-kr");
    -응답할 페이지의 어떤형식의 데이터를 보내줄지 인코딩방식 설정하는 것!
    //인코딩 : 컴퓨터가 이해할 수 있도록 암호화(<->디코딩)
    ㄴ한글 인코딩방식 : euc-kr, utf-8 떄 뷁 같은 글자는 깨짐..

데이터 전송 조건 form 1.action 2.name 3.submit 클라이언트에서 서블릿 클래스에 요청하는 방식

form method="get"또는"post" action="서블릿이름"
1.action ="url mapping"서블릿파일
2.name 어떤 값을 가져옴
3.submit전송시점
사용자 요청에 가져오는 방식이 두가지 ! 가져오는 값들에 대한 인코딩이 필요함 -> 콘솔창에 나타남

  • get방식 (기본값)
    -form태그에 method="get"
    -주소창을 타고 넘어가기 때문에 서버에로 보내는 데이터를 사용자가 직접 볼 수 있다.
    -255자 이하 적은데이터 전송할때
    -주소입력란에 직접 서블릿요청을 url입력시 get방식으로 인식
    -a태그를 통한 하이퍼링크를 통해 서버가 요청되는 경우에도 get방식으로 요청됨
    -url ->쿼리스트링:어떤페이지의 정보를담음
    -내 url 주소 : http: // localhost: ____/contextpath/서블릿path(url mapping문자열)?name=value
    -sever.xml에서 인코딩해줌
    -> 인코딩방식설정
    severs폴더 - server.xml - source탭 - 63번째줄쯤 Connector URIEncoding="EUC-KR"

  • post방식
    -form태그에 method="post"
    -html header 를 타고 넘어가 보안에 강함
    -많은데이터를 전송할때나, 데이터 노출되면 안되는 회원가입과 같은 정보
    -일반적인 폼에서는 post방식을 사용함
    -수집한 정보를 request.getCharacterEncoding("");으로 인코딩
    일종의 통로로 자바코드안에서 printWriter out으로 출력스트림에 out.print("");

  • 출력 스트림
    -클라이언트에게 결과를 돌려주기위해서 doGet(), doPost()의 HttpServletResponse로부터 PrintWriter형의 출력스트림객체를 얻어와야됨
    PrintWriter out = response.getWriter();
    printWriter 객체 얻어오고, println()호출시 브러우저에 HTML코드를 보내주어 결과를 볼 수 있다
    예)

    out.print("< html>< head>< title>출력하기< /title>< /head>");
    out.print("< body>안녕하세요!< /body>< /html>");

---->실행결과를 HTML문서로 응답해주기 때문에 response로부터 얻어온 출력스트림인 out객체의 출력메소드 print에 일일이 HTML태그를 기술해 줘야 됨!
-사용이끝나면 안전하게 닫아주기 out.close();

post-custom-banner

0개의 댓글