봉봉의 개인 블로그

2017-06-07-P 본문

학원에서 배운것들/TEA - P

2017-06-07-P

봉봉이네 2017. 6. 7. 09:52

JSP


Thread

Thread란

하나의 프로세스 내에서 해당 프로세스가 할당받은 자원을 공유하며 실행되는 독립적인 작업단위로 프로세스의 자원을 참조할뿐 새로 할당받을 필요가 없기 때문에 프로세스를 생성하는 것보다 훨씬 빠른 생성 속도를 가진다.


멀티 스레드(Thread) 예제

멀티 스레드란 예를들어 main메서드가 실행되고 그안에 스택형태로 일을 처리한다.

하지만 멀티 스레드는 main메서드와 또다른 run 이라는 스택을 새로만들어

cpu가 main스택의 일과 run 스택의 일을 조금씩 분할하여 처리하게 되는데

처리속도가 빠르기 때문에 우리 눈에는 동시에 일을 처리하는거 같아 보이기 때문에


멀티 스레드 라고 한다.

예제)

위 사진과 같이 만드는게 멀티 스레드 이다

설명을 먼저하자면 스택에 하나 생성되고 main 메서드가 실행되 안에 있는 처리를 시작합니다.

먼저 mt 라는 객체와 mr 이라는 객체를 만들고 이때 mt 의 객체는 MainTest의 객체이고 mr 의 객체는

Thread 의 객체입니다.그렇게 만들어진 객체로 mr.start를 통해 Thread 객체 안에 run을 로딩해서 새로운 스택을 만들고 34~38번문과 같이 MainTest 객체안에 printB의 메서드를 실행합니다. 먼저 그렇게 스택(run)이 새롭게 만들어지고 나면 스택(main)에서는 start가 종료되고 그 아래 printA메서드가 로딩되어 실행됩니다.

즉 스택(run)을 먼저 만들고 printB 를 실행하면서 스택(main)의 일도 실행하는데 양쪽 스택의 일을 조금씩 분할하여 처리합니다.

**참고로 여기서 16번과 같이 Thread.sleep 을 통해 1초에 한번씩 일을 처리하게 만듭니다 만약 이게없다면

일을 너무 빠르게 처리해서 A가먼저 일처리가 끝나고 B 가 출력되는것처럼 보이게 된다.

즉 sleep 은 Thread를 잠깐 쉬는거라고 생각하면된다.**

구조를 잠깐 그리자면

main

MyThread 객체 생성

Start통해 새로운 스택(run)로딩 후 종료

printA 메서드 실행

Start를 통해 생성된 스택(run)

printB 메서드 실행

이런식의 구조라고 생각하면된다.


모델2해보기

간단한 계산하는 기능을 구현한다고 해보자.

먼저 html 파일에서 수 2개를 받고 값을 넘겨주는 화면을 먼저 만들어줍니다.

위와 같이 코드를 적어서

위 사진과 같은 화면을 만들어 줍니다.

그후 form 이 이동하는 부분은 servlet 부분을 호출하고 있는것이다. 즉

Calservice.do 를 요청하면 

위 사진에 13번 줄과같이 Calservice.do 라고 맵핑된 servlet이 요청된다고 보면된다.

post 방식으로 보냈기 떄문에 dopost 부분에 18~41번과 같이 코드를 만들어줍니다.

dopost 안에서는 문자열로 받아온 number1 과 number2 를 int 형으로 형변환 하여 각각의 변수에 담아 준다음

CalService 클래스 타입으로 생성하여 cs 안에 주소값을 담습니다 .그후 switch 안에 case 에 따라서 cs 주소값 안에 있는 메서드를 다르게 해서 연산을하고 result 받아줍니다

그 후 39번 문을 통해서 Calview 를 요청하고 그안에 request 와 response 를 보낼껀데 그전에 먼저 40번 문을 통해서 먼저 request 안에 result 의 값을 추가해서 값을 넘겨 줍니다.

그러면 이안에 필요한 연산들에 대해 메서드를 만들어 보자면

이런식으로 정리가 되어있다. 딱히 설명은 하지 않겠다.

그후 받음 Calview 에서는 아래와 같이 적혀있다.

Calview 에는 이와같이 적어 값을 입력해서 넘겼을때

이런식으로 화면에 뿌려지게 된다 이때 주소창의 Calservice.do 라고 되어있는건 요청한건 결국 Calservice.do 이기 때문이다.



JSTL대해 간단하게 알기

jstl 은 jsp에서도 굳이 스크립트립을 이용해 java 를 써서 표현했던걸 굳이 사용하지 않게끔 만들어줍니다.먼저

위 사이트에서 JSTL 파일을 다운로드 받아서

위와 같이 lib 안에 추가해줍니다.

그후

 

여기서 보면 먼저 2번문처럼 taglib 을 추가하게 되면 10~12번과 같이 if 문 같은걸 스크립트립 java 코드를 사용하지 않고도 구현할수 있게 된다.



web.xml 파일 이용해서 맵핑(mapping) 하기

먼저  프로젝트를 우클릭해서 java EE Tools 들어가서 Generate Deployment Desciptor Stub 눌러주게 되면 lib 안에 web.xml 파일이 생겨있을것이다.그후 아래와 같은 파일과 코드를 만들어줍니다.

그런데 @WebServlet("/Calservice.do") 과 같이 맵핑이 되어있지않는다.

즉 요청을 할수 있게 만들어야한다. 그래서 여기서 

이런식으로 web.xml파일안을 위 사진과 같이 만들어주게 되면 맵핑을 할수 있게된다.



'학원에서 배운것들 > TEA - P' 카테고리의 다른 글

2017-06-09-P  (0) 2017.06.09
2017-06-08-P  (0) 2017.06.08
2017-06-02-P  (0) 2017.06.02
2017-06-01-P  (0) 2017.06.01
2017-05-31-P  (0) 2017.05.31
Comments