'전체'에 해당되는 글 54건

임시저장, 비공개

java servlet(서블릿) 정리

서블릿 : JSP 표준이 나오기 전에 만들어진 표준, 자바로 웹 어플리케이션을 개발할 수 있도록 하기 위해 만들어졌다.


서블릿 개발 과정

1. 서블릿 규약에 따라 자바 코드 작성

2. 자바 코드를 컴파일해서 클래스 파일을 생성

3. /WEB-INF/classes 폴더에 클래스 파일을 패키지에 알맞게 배치

4. web.xml 파일에 서블릿 클래스 설정

5. 톰캣 등의 컨테이너를 실행

6. 웹 브라우저에서 확인


서블릿 클래스 구현

- HttpServlet 클래스를 상속받음 -> 처리하고자 하는 HTTP 방식(method)에 따라 알맞은 메소드를 재정의해서 구현해야 한다.

- HttpServletRequest와 HttpServletResponse는 각각 JSP의 request와 response 기본객체에 해당한다.


응답 전송

응답을 전송하기 앞서 response.setContentType() 메소드를 통해 응답의 컨텐츠 타입을 지정해야 한다.

ex) response.setContentType("text/html; charset=utf-8");


이후 웹 브라우저에 데이터를 전송하려면 response.getWriter()로 문자열 데이터를 출력할 수 있는 PrintWriter를 구해야 한다.


web.xml로 서블릿 클래스 등록하기

서블릿을 등록하기 위한 두 가지 설정

- 서블릿으로 사용할 클래스

- 서블릿과 URL 간의 매핑


서블릿 등록


<servlet>

<servlet-name>서블릿을 참조할 때 사용할 이름</servlet-name>

<servlet-class>서블릿으로 사용할 클래스의 완전한 이름</servlet-class>

</servlet>


서블릿 매핑

- <url-pattern>은 한번 이상 사용할 수 있다.

- <url-pattern>은 웹 어플리케이션 경로를 제외한 나머지 경로를 기준으로 적용된다.

<servlet-mapping>

<servlet-name>매핑할 서블릿의 이름</servlet-name>

<url-pattern>매핑할 URL 패턴 ex) /main</uri-pattern>

<servlet-mapping>


애노테이션 이용하기

- 서블릿 3.0 버전부터는 @WebServlet 애노테이션을 사용하면 web.xml 파일에 따로 등록하지 않아도 서블릿으로 등록된다.

- @WebServlet(urlPatterns = "매핑할 url 패턴" (배열형태로 두 개 이상의 URL 패턴 등록 가능)

- 애노테이션을 사용하여 서블릿을 등록할 때는 해당 서블릿이 범용적으로 사용되는 서블릿인지를 파악해야 한다.

-> 처리해야할 url 패턴이 변경될 때마다 속성값을 변경하고 다시 컴파일해야한다.



'임시저장, 비공개' 카테고리의 다른 글

10월 계획  (0) 2020.10.07
계획  (0) 2020.09.18
임시저장, 비공개

10월 계획

공부(목표)


말일까지 JSP 책 끝내기

(17장 서블릿, 19장 서블릿 컨텍스트, 커스텀태그, JSTL, EL, 중점으로)


11월


자바의신1,2(중요 포인트만)

스프링(토비랑 최범균 스프링5 사기)


12월

컴활, 스프링


1월 스프링 프로젝트 + 부트

2월 스프링 프로젝트 + 부트 + 리액트

3월 자소서 및 지원



추가

DB, 디자인패턴, 코테, JS

영어

'임시저장, 비공개' 카테고리의 다른 글

java servlet(서블릿) 정리  (0) 2020.10.28
계획  (0) 2020.09.18
임시저장, 비공개

계획

1. 취준

- 최범균 jsp 마무리(10월15일까지)

- 최범균 스프링 교재 구매하여 공부

- 포트폴리오 준비

- 컴활 가능하면 올해안에 실기 마무리

- 짜투리로 토이플젝하기(리액트 혹은 바닐라스크립트, 타입스크립트)

2. 부업(커넥트, 메이플)

  - 커넥트 주 10만원 목표 달성하기

  - 메이플 한달 10억 목표로 하루 우르스와 주간퀘

3. 자기관리

  - 틈틈이 스트레칭, 물 많이 마시기, 상체 운동 시작해보기


'임시저장, 비공개' 카테고리의 다른 글

java servlet(서블릿) 정리  (0) 2020.10.28
10월 계획  (0) 2020.10.07
programming/Java

문자열(String) 객체에 대한 비교연산 #equals? #==?

두 객체가 같은지 비교하고 싶다.


String A = "aaa";

String B = "aaa";


위의 두 A, B 객체는 같다고 할 수 있을까?


상등연산자 '=='로 참조자료형을 비교하려고 사용하면 그 주소값이 같은지 확인한다.

그렇다면 A와 B 모두 상수형 문자열 "aaa"를 가리키기 때문에 같은 주소값을 같는 객체로 true가 나와야한다.


System.out.println(A==B);


컴파일하여 실행해보면 콘솔창에 "true"가 출력되는 것을 볼 수 있다.


String A = "aaa";

String B = new String("aaa");


위의 경우에는 어떨까?

결과는 "false"가 출력된다.

왜냐하면 두 객체의 '값'은 같을지라도 A가 가리키는 "aaa"와, B가 가리키는 "aaa"는 같은 메모리 주소에 위치하지 않고 각각 다른 장소에 저장되어있다. 그렇기에 '=='를 사용하면 "false"를 반환한다.


하지만 현실세계에서 "aaa"와 "aaa"는 같다. 그렇기에 당연히 프로그램에서도 동일한 객체로 인식하게끔 프로그래밍하고 싶을 것이다.



equals() :: 객체가 같은지 비교하는 메소드


모든 클래스에서는 아래와 같은 메소드를 사용할 수 있다.


public boolean equals(Object obj)


위의 메소드는 현재 객체와 매개 변수로 넘겨받은 객체가 같은지 확인한다. 같으면 true를, 다르면 false를 리턴한다.


따로 내가 저런 메소드를 생성하지 않았는데 어떻게 사용할 수 있을까?

왜냐하면 보이지 않지만 자바의 모든 클래스는 java.lang.object 클래스를 상속하고있다.

object 클래스에 관해서는 더 자세히 포스팅하겠다. 구글에서 검색하면 아주 좋은 설명들이 많다.


String A = "aaa";

String B = new String("aaa");


System.out.println(A.equals(B));


위와 같은 코드를 실행하면 정상적으로 "true"가 출력된다.


하지만 일반적으로 String을 제외한 객체들의 경우 위와 같은 코드로는 "false"가 출력된다.

이에 대한 포스팅은 다음에..





개발용어

동기와 비동기에 대한 해석 #동기 #비동기 (19.08.06)

동기와 비동기


- 현실에서 의미?

동기(synchronous)

: 같은 시기, 또는 같은 기간

= 동기생

ex) 대학 동기


비동기(asynchronous)

: 동시에 발생하지 않는

- 프로그래밍에서 의미?
동기식 구조에서 A코드와 B코드가 있을 때, A코드의 실행이 완료될 때 까지 B코드는 대기.
비동기식 구조에서는 A코드에게 작동을 지시한 뒤 B코드를 실행, 이후 A코드는 실행이 완료되는대로 결과를 출력
현실과 프로그래밍에서의 의미가 너무 달라 혼란이 야기됨.

- 동기식 구조

아래 synchronous.js 파일을 실행하면

1
2
3
console.log("첫번째");
console.log("두번째");
console.log("세번째");
cs
당연히? 이런 결과가 나온다.

이처럼 위와 같이 해당 코드가 실행되고 난 후 그 다음 코드가 실행되는 방식을 동기식 처리라고 한다.


- 비동기식 구조
아래 Asynchronous.js 파일을 실행하면


1
2
3
4
5
6
7
8
9
10
11
12
console.log("첫번째");
 
setTimeout(()=>{
  console.log("두번째");
}, 0)
 
console.log("세번째");
console.log("네번째");
console.log("다섯번째");
console.log("여섯번째");
console.log("일곱번째");
console.log("여덟번째");
cs
setTimeout의 시간을 0으로 설정했음에도 불구하고,

위와 같은 실행결과가 나온다.

이를 컴퓨터 관점에서 생각해보면,

1. 첫 번째 라인에서 console.log("첫번째");를 접근하여 콘솔창에 첫번째 라는 결과를 출력한다.

2. 세 번째 라인에서 setTimeout() 메소드를 접근한다. 해당 메소드가 비동기적 메소드임을 인지하고, 이를 비동기를 처리하는 다른 프로그램에게 맡긴다.

3. setTimeout() 메소드를 다른 프로그램에 맡긴 후 곧바로 다음라인(일곱번 째)을 실행하여 세번째 라는 결과를 출력한다.

4. setTimeout() 메소드를 맡아 처리한 프로그램은 비동기적 API를 제외한 모든 코드가 실행된 후에 결과를 출력한다.


두 방식의 효용


- 동기식 구조

어떤일을 처리하는 동안 다른 프로그램은 정지상태가 되므로 실제 CPU가 느려지는 것은 아니지만 시스템 전체적으로 효율이 떨어지게 된다.

설계가 간단하고 직관적이지만 결과가 반환될 때 까지 대기해야 한다.


- 비동기식 구조

동기 방식에 비해 설계가 복잡하지만 결과가 주어지는 시간이 더 소요되어도 그 시간동안 다른 작업을 할 수 있)으므로 좀 더 효율적으로 자원을 사용할 수 있다.


- Ajax(Asynchronous Javascript And XML)

웹 어플리케이션 개발에 사용되는 기술 그룹

  • 자바스크립트를 이용한 비동기 통신으로 데이터를 불러올 수 있다.
  • 페이지의 갱신없이 서버와 비동기 통신이 가능하다.
  • 새로고침없이 부분 로딩이 되므로 성능이 개선되어 속도가 빠르다.
  • 별다른 플러그인없이 이용할 수 있다.
  • HTTP 전송 중에도 사용자가 웹 어플리케이션과 상호작용을 할 수 있다.




개발용어

비즈니스 로직(Business Logic)이란? #비즈니스로직 (19.07.26)

비즈니스 로직(Business Logic)이란?


- 업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부를 말한다.

- 데이터 처리를 수행하기 위해 데이터를 활용하여 계산, 판단, 가공 등을 하는 '로직'을 의미한다.

- 대부분의 클라이언트 프로그램은 사용자 인터페이스와 비즈니스 로직으로 구성되며, 서버 프로그램은 대부분 비즈니스 로직으로 구성된다.

- 프로그래밍에서 비즈니스 로직은 요구사항을 직접 해결하는 영역이기 때문에 유지보수에 신경쓰지 않는다면 생산성과 품질이 저하된다.



Network

HTTP에 대해서 간략하게 알아보기 #HTTP (19.07.23)

HTTP(Hypertext Transfer protocol)란?


- 간단히 말해서 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜을 말한다.

- 네트워크 7계층 중 최상위인 애플리케이션 계층의 프로토콜로 TCP/IP 위에서 작동한다.

- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.



HTTP 기반 시스템의 구성요소


- HTTP는 서버/클라이언트 모델을 따른다.

- 요청은 하나의 개체, 사용자 에이전트(브라우저)에 의해 전송된다

- 각각의 개별적인 요청들은 서버로 보내지며, 서버는 요청을 처리하고 response라고 불리는 응답을 제공한다.



HTTP의 장단점


  • 장점
    • 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버 간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있다.
    • 불특정 다수를 대상으로 하는 서비스에는 적합하다.
  • 단점
    • 해당 객체의 요청을 처리하고 연결을 끊어버리기 때문에 클라이언트의 이전 상황에 대해 알 수가 없다.(Stateless)
    • 위와 같은 특징 때문에 쿠키와 같은 기술을 통해 세션을 만들도록 한다.


'Network' 카테고리의 다른 글

GET과 POST 방식의 비교 정리 #GET #POST (19.07.14)  (0) 2019.07.14
Network

GET과 POST 방식의 비교 정리 #GET #POST (19.07.14)

HTTP 요청 방식?


 사용자는 원하는 페이지로 이동하기 위해 URL을 브라우저의 주소창에 입력한다. 사용자는 단순히 URL을 입력하였지만 서버 내부에서는 클라이언트의 요청에 응답하기위해서 처리해야 한다. 여기에 클라이언트가 서버로 요청을 보내는 방법 HTTP Method에는 GET, POST, PUT, DELETE 등 여러가지가 있고 대체로 GET과 POST가 사용된다.


GET 방식

  • URL에 변수(데이터)를 포함시켜 요청한다.

  • 데이터를 Header(헤더)에 포함하여 전송한다.

  • URL에 데이터가 노출되어서 보안에 취약하다.

  • 전송하는 길이에 제한이 있다.

  • 캐싱할 수 있어 전송속도가 빠르다.

* Cashing(캐싱) : 최초 접근 후, 또 요청할시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것


POST 방식

  • URL에 변수(데이터)를 포함하지않고 Body(본문)에 포함한다.

  • URL에 데이터가 그대로 표출되진 않아 GET방식보다 보안에 우수하다고 할 수 있다. -> 클라이언트 측에서 보내는 데이터는 전부 볼 수 있기때문에 보안을 생각한다면 암호화를 해야한다.

  • 전송하는 길이에 제한이 없다.

  • 캐싱할 수 없다.

 

'Network' 카테고리의 다른 글

HTTP에 대해서 간략하게 알아보기 #HTTP (19.07.23)  (0) 2019.07.23

푸터바

태그

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

  • Today :
  • Yesterday :
  • Total :