JSP request, reponse 객체 이해하기


JSP 스크립트릿,선언,표현식





JSP 지시자


page 지시자: import 하고 속성 선언


include 지시자 : 페이지안에 다른 페이지 넣어준다.

반복되는 페이지 넣기 위해 사용


JSP 태그의 개념



JSP도 Servlet과 같은 원리로 동작하기 때문에 다른 CGI 언어에 비해서 속도가 빠르다.



JAVA 백준 2455번 지능형 기차


특정 Servlet이 생성될 때 초기에 필요한 데이터(예를 들어 특정 경로, 아이디 정보)들을 초기화 파라미터라고 하며, web.xml에

기술하고 Servlet파일에서는 ServletConfig 클래스를 이용해서 접근합니다.

방법 1. 초기화 파라미터를 web.xml에서 기술

방법 2. Servlet 파일에 직접 기술



첫번째 방법. 초기화 파라미터를 web.xml에서 기술

우선 web.xml 파일을 만들기 위해서

위와 같이 프로젝트 오른쪽 클릭 -> JAVA EE Tools -> Generate Deloyment Descriptor Stub 를 하여 web.xml을 생성한다.


그 후 java 파일에 getInitParam 메소드를 이용해 String 변수에 web.xml에서 가져온 값을 저장할 수 있다.



첫번째 방법. Servlet 파일에서 직접 기술

이렇게 Servlet 파일안에서 바로 기술해준다.


지금까지 두 가지 방식으로 Servlet 데이터값을 초기화 하는 것을 설명했다.

web.xml으로 사용하는 방법은 프록시사용할때나 db접근시 계정이랑 비밀번호 설정을 하드코딩하는걸 막을 수 있을거라고 생각한다.




다음은 Servlet 데이터 공유이다

web.xml에 데이터를 기술하고 Servlet에서 공유하는 간단한 방법이다.


어떤 특정한 Servlet 에서만 초기의 데이터만 들고 와야한다 -> 첫번째 방법

모든 Servlet이 데이터를 공유해야한다. -> 두번째 방법


정리 


데이터를 특정서블릿에서만 공유를 하겠다 (servletConfig 사용)

모든 서블릿에 다 공유하겠다.(servletContext 사용)

웹 어플리케이션을 감시하는 리스너를 만들수 있다. (servletContextListener 사용)



JAVA 관련 사이트


JAVA 기술 커리큘럼


'프로그래밍 > JAVA' 카테고리의 다른 글

자바 다운그레이드  (0) 2018.08.26
자바빈(DTO), DAO  (0) 2018.07.28
스트레티지 패턴  (0) 2018.07.23
Java for-each 쉽게 이해하기  (0) 2018.07.19
JAVA 싱글턴 패턴  (0) 2018.07.19


최소공배수를 구하는 방법중에는 두 수의 최대공약수를 구한다음 두 수를 곱해주고 최대공약수 만큼 그 수를 나눠주면 구할 수 있는 공식이있다.

A와 B 두 수 중에서 작은 수가 적어도 그 수만큼 반복을 해줘야지 최대공약수를 구할 수 있다. 즉 , Math()로 입력받은 두 수 중에 작은 수를 찾은 뒤 최대공약수를 

아래와 같이 찾을 수 있다. 코드를 보자.

 

JAVA 백준 1676번 팩토리얼 0의 개수


처음에 팩토리얼 한 값을 문자열에 저장해 하나씩 0과 비교하서 COUNT 세려고 했는데 N의 값이 일정치 이상 넘어가니 변수형 long도 감당하지 못하게 된다. 그래서 규칙을 찾으려 노력했다. 처음에 하나의 규칙을 찾았다.

이렇게 2의 배수와 5의 배수가 만나면 뒤에 0이 들어가는 값이 만들어진다. 

이것을 보면 5가 곱해져 있는 만큼 0이 더해지는 것을 알 수 있다. 즉, 5가 한번 곱해졌으면 0의 count가 1증가, 어느 값에 5가 2번 곱해져 있으면 0의 count가 2증가한다는 것을 볼 수 있다. (뒤에 값을 기준으로 한다)

나중에 50값은 5가 2번 곱해져 있는것과 동시에 2도 하나 곱해져 있다. 100의 값은 5가 2번, 2가 2번 곱해져있다. 50이나 100을 5의 배수가 몇번 곱해져 있는지 알고 위해 2와 5를 계속 나눠주는 것이다.





먼저 이 문제를 풀기 위해서 이항 계수가 뭔지 알아야 한다. 이항계수는 경우의 수를 계산할 때 N개의 서로 다른 물건 중에서 K개의 물건을 선택하는 것을 N개에서 K개를 선택하는 조합 이라고 한다. 즉, N개 중에서 서로다른 K개를 고르는 조합의 수 이다.


스트레티지 패턴은 기능을 부품화 하는 것을 말한다.


이 패턴을 사용하면 클라이언트와 무관하게 독립적으로 알고리즘을 변경할 수 있고(quickSortbubbleSort), 클라이언트는 독립적으로 원하는 알고리즘을 사용할 수 있다. 즉 이 패턴은 클라이언트에게 알고리즘이 사용하는 데이터나 그 구조를 숨겨주는 역할을 한다. strategy 패턴은 알고리즘을 사용하는 곳과, 알고리즘을 제공하는 곳을 분리시킨 구조로 알고리즘을 동적으로 교체할 수 있다.


스트레티지 패턴(Strategy Pattern)

알고리즘 군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다.

스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.

 

조금 말이 어려울 것입니다쉽게 말하면어떤 객체를 만들 때 객체가 가지는 기능들이 다양하게 존재할 것 니다이러한 기능들을 추상화 하여 언제든지 적용할수 있게 만드는 것 입니다즉 기능을 부품화 하는 것 입니다.

예를 들어 포니와 그랜저 자동차가 있습니다포니에 들어가는 기어 연결부분과 그랜저에 들어가는 연결부분이 동일하다고(추상화하면저급기어중급기어고급기어를 만들어 두고 상황에 따라서 적당한 기어를 적용할수 있을것 입니다즉 포니에는 저급기어를그랜저에는 고급기어를 적용하는것 입니다.

이렇게 기능을 부품화하여 구조를 만드는 것을 스트레티지라고 생각하시면 됩니다.

 

개인적으로 실무에서 가장 많이 사용했고알아두면 아주 유용하게 사용할 수 있는 패턴 입니다노파심에 말씀 드리면한번에 모든 것을 알 수는 없습니다그리고 안다고 하여도 실제 본인의 개발 소스에 적용하시란 쉽지 않습니다꾸준히 살펴보고고민해 보는 자세가 중요 합니다.

 

이번에 살펴 볼 예제는 로봇을 프로그램으로 만들어 보는 것 입니다.

시나리오

1.로봇 모양은 팔다리머리몸통으로 이루어져 있습니다.
2.모든 로봇은 기본적으로 걷고달릴 수 있어야 합니다.
3.Super로봇은 날수 있고미사일을 쏠 수 있으며레이저 검을 가지고 있습니다.
4.Standard 로봇은 날수는 없지만 미사일을 쏠 수 있습니다그리고 레이저 검은 없지만목검은 가지고 있습니다.
5.Low 로봇은 날수도 없고미사일을 쏠 수도 없습니다그리고 레이저검 또는 목검도 없습니다.

 

위 3가지 형태의 로봇을 만들어 보도록 하고추후 다른 로봇을 만들어야 할 경우를 생각하여 유연한 프로그램을 만들어 보도록 합니다.  

​1. 상속, 추상클래스를 하지 않고 일반적으로 class를 만들고 메소드를 만들면 코드에 양이 많아지고 똑같은 기능에 코드를 반복적으로 코딩을 해야하는 불편함이 있다. 나중에 다른 사용자가 기능을 추가하기 불편하다.

​exntends = 상속

2. 위에 class (super, standard, Low) 에서 공통적인 기능들은 따로 Robot.class를 만들어서 상속 기능을 통해 코드를 줄여서 효율적으로 만들수 있다.

상속 - 공통적인 기능 : 걷고, 달린다, 로봇 모양은 팔, 다리, 머리, 몸통 이다.

abstract = 추상클래스

3. 새로운 사용자가 로봇을 만들려고할때 ​

​메소드를 추상화 시켜놓고 무조건 구현하게 만든다

( 날다, 미사일, 레이저검(목검) 기능​

​  public abstract void actionFly();
  public abstract void actionMisail(); 
  public abstract void actionKnife();  )


참고: https://www.youtube.com/watch?v=YqqkElW8PR0&list=PLieE0qnqO2kTyzAlsvxzoulHVISvO8zA9&index=22

  http://hwan1402.tistory.com/9




'프로그래밍 > JAVA' 카테고리의 다른 글

자바빈(DTO), DAO  (0) 2018.07.28
JAVA 관련 사이트 기술 커리큘럼  (0) 2018.07.25
Java for-each 쉽게 이해하기  (0) 2018.07.19
JAVA 싱글턴 패턴  (0) 2018.07.19
자바 interface(인터페이스)  (0) 2018.07.18

+ Recent posts