Skip to main content

2 posts tagged with "웹 프로그래밍"

View All Tags

· 5 min read

Ch6.Servlet 2 1.Servlet 작동순서

  • 클라이언트에서 servlet요청이 들어오면 서버에서는 sevlet컨테이너를 만들고, 요청이 있을 때마다 스레드가 생성된다.

  • 웹브라우저 -> 웹서버 -> 웹어플리케이션 서버(WAS) -> Servlet 컨테이너(스레드 생성, Servlet 객체 생성)

  • CUI 서버는 요청마다 프로세스 생성하여 서버에 부하가 크다, Java 서버는 JVM에서 스레드 생성하여 부하가 크지 않다.

    2.Sevlet LifeCycle

  • Servlet의 사용도가 높은 이유는 빠른 응답 속도 때문

  • Servlet은 최초 요청 시 객체가 만들어져 메모리어 로딩되고, 이후 요청 시에는 기존의 객체를 재활용하게 된다. 동작속도가 빠름(Server 종료시, Servlet.java 파일 수정시 메모리에서 삭제)

  • Servlet 객체생성 -> Init() 호출 -> service(), doGet(), doPost() 호출 -> destroy() 호출

    3.Servlet 선처리, 후처리

  • Servlet의 라이프 사이클중 init()과 destroy() 메소드와 관련하여 선처리(init() 전)와 후처리(destroy()후) 작업이 가능

  • Servlet 객체생성 -> 선처리(@PostConstruct) -> Init()호출 -> service(), doGet(), doPost() -> destroy() 호출 -> 후처리(@PreDestroy)

  • service(): doGet(), doPost() 없으면 service() 실행, doGet(), doPost(), service() 있으면 service() 실행

Ch7.Servlet 3 1.HTML form tag

  • HTML form tag는 서버쪽으로 정보를 전달할 때 사용하는 태그
  • input
    • type: 태그 종류 지정(text, password, submit, checkbox, radio, reset etc.)
    • name: input 태그 이름
    • value: name에 해당하는 값(ex. name = value)
  • type = text
    • 일반적인 데이터를 입력하기 위해 사용
    <input type="text" name="name" size="10" />
  • type = password
    • 로그인, 회원가입 페이지 등에서 비밀번호 입력하기 위해 사용
    <input type="password" name="password" size="10" />
  • type = submit
    • form내의 데이터를 전송할 때 사용
    <input type="submit" value="전송" />
  • type = reset
    • form내 데이터 초기화할 때 사용
    <input type="reset" value="초기화" />
  • type = checkbox
    • 여러개 데이터 전송 할 때 사용
    <input type="checkbox" name="hobby" value="read" />독서서
    <input type="checkbox" name="hobby" value="cook" />요리
  • type = radio
    • 여러 개의 데이터 값 중 하나만 선택해서 전송 할 때 사용
    <input type="radio" name="major" value="kor" />국어
    <input tpye="radio" name="major" value="eng" />영어
  • select
    • 리스트형태의 데이터를 사용
    <select name="protocol">
    <option value="http">http</option>
    <option value="ftp">ftp</option>
    </select>
  • form 태그 - input 태그들의 값을 서버로 전송하기 위한 정보를 담고 있다
<form action="FormEx" method="post"></form>
  • FormEx: 요청하는 컴포넌트 이름(join.jsp, info.html, HWorld) - post: 요청을 처리하는 방식(post,get)

    2.Servlet Parameter

  • Form 태그의 submit 버튼을 클릭하여 데이터를 서버로 전송하면, 해당파일(Servlet)에서는 HttpServletRequest 객체를 이용하여 Parameter값을 얻을 수 있다

  • HTML파일

<form action="FormEx" method="post">
<input type="text" name="name" size="10" />
<input type="text" name="id" size="10" />
<input type="submit" value="전송" />
</form>
  • Servlet파일

  • getParameter(name)

  • getParameterValues(name) //list 받는 용도

  • getParameterNames()

  • String id = request.getParameter("id"); String name = request.getParameter("name");

    3.한글처리

  • Tomcat 서버 기본 문자 처리방식 IOS-8859-1 방식, 개발자가 별도의 인코딩 안하면 한글이 깨져 보이는 현상 발생

  • GET,POST 방식에 따라 한글 처리 방식 차이 있음

  • GET방식 요청

<server.xml
>수정 -
<Connector URIEncoding="EUC-KR">
- Post방식 요청 -
<request.setCharacterEncoding() 메소드 이용>
- doPost() -
request.setCharacterEncoding("EUC-KR");</request.setCharacterEncoding()
></Connector
></server.xml
>

· 3 min read

JSP Servlet

Ch1. 웹 프로그래밍

  • 인터넷이란: 1개 이상의 네트워크가 연결되어 있는 형태
  • http(Hyper Text Transfer Protocol)
  • 웹 프로그램의 동작
  • 클라이언트 → 웹서버 → 웹어플리케이션서버(WAS) → 데이터베이스

Ch2. 설치

  • Apache Tomcat 7.0
  • Eclipse 설치 → 인텔리J 무료판은 구성하는 방법 모르겠음 tomcat쪽이 안나옴.

Ch3. JSP

  • JSP 특징:

    • 동적 웹어플리케이션 컴포넌트
    • .jsp 확장자
    • 클라이너트 요청에 동적으로 작동하고, 응답은 html을 이용
    • jsp는 서블릿으로 변환되어 실행
    • MVC 패턴에서 View로 이용됨
    • JSP(View), Servlet(Controller), DB(Model)
  • 아키텍처

    • .jsp file(Java 파일로 변환) → Java file(helloworld_jsp.java)(컴파일) → class file(helloworld_jsp.class)
  • jsp 파일을 가져다가 html로 만듬.

Ch4. Servlet

  • 특징

    • 동적 웹 어플리케이션 컴포넌트
    • .java 파일
    • 클라이언트에 요청에 동적으로 작동, 응답은 html 이용
    • java thread 이용 하여 동작
    • MVC패턴에서 Controller로 이용됨
  • servlet 은 HttpServlet 상속 받음

  • doGet, doPost 메소드 사용

  • localhost:8181/servlet/com.javalec.ex.HW 하면 보안상 문제 or 편의상 좋지 않아서 web.xml 에서 맵핑 하거나, 어노테이션으로 맵핑

Ch.5 Servlet

 Servlet(interface) → GenericServlet(abstract) → HttpServlet
doGet(HttpServletRequest request, HttpServletResponse response)
response.setContentType(“text/html”);
PrintWriter writer = response.getWriter(); ← 웹브라우저 출력하기 위한 스트림
write.println(“<html>”);
  • request 객체에 정보가 담겨 웹서버로 전달, 받은 데이터를 확인하여 대응 되는 서비스 response 객체에 담아서 전달
  • 요청방식
    • get: URL값으로 정보가 전송되어 보안에 약함 → doGet()함수가 처리
    • post: header를 이용해 정보가 전송되어 보안에 강함 → doPost() 함수가 처리
  • doGet(): html내 form태그의 method 속성이 get일 경우 호출, 웹브라우저의 주소창을 이용하여 servlet을 요청한 경우에 호출
  • doPost(): form태그 속성이 post일 경우 호출
  • 컨텍스트 패스(Context Path): WAS(Web Application Server)에서 웹어플리케ㅣ션을 구분하기 위한 path, 이클립스에서 프로젝트 생성하면 자동으로 server.xml에 추가 된다.