'Code'에 해당되는 글 161건
Servlet 예제_현재 시간 출력
Servlet : JAVA에서 HTML 를 사용하기 위해
1. WebServlet 프로젝트 > javaResources > src > package명 > ServletTest.java
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Calendar;
public class ServletTest extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
response.setContentType("text/html");
response.setCharacterEncoding("euc-kr");
Calendar c=Calendar.getInstance();
PrintWriter out=response.getWriter();
out.write("현재시각은 ");
out.write("시 ");
out.write("분 ");
out.write("초입니다.캬캬");
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
2. WebContent > WEB-INF > lib > servlet-api.jar 파일 붙여넣기
3. web.xml 열기
4. 다음 구문 추가 </web-apps> 위에
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
5. 실행하기
'Code > Servlet & JSP' 카테고리의 다른 글
| JSP 예제_계산기 (0) | 2019.06.20 |
|---|---|
| JSP 예제_현재 시간 출력 (0) | 2019.06.20 |
| Servlet 구현 환경 (0) | 2019.06.20 |
| @Annotation (0) | 2019.06.20 |
| Get/Post 방식 (0) | 2019.06.20 |
Servlet 구현 환경
아파치 톰캣 설치 후
lib > servlet-api.jar 를 자바 jdk lib -> 붙여넣기
classpath 수정 (C:\...\lib\servlet-api.jar)
톰캣
- 기본폴더 이동
- WEBAPPS 폴더 안 SERVLETTEST 폴더 생성
- 안에 WEB-INF 폴더 생성
- 안에 3개 폴더 생성
- SRC : 서블릿 클래스로 컴파일 하기 위한 소스 파일들 넣어 두는 것
- CALSSES : 실제로 서비스 될 서블릿 클래스 들어가는 곳
-LIB : 서블릿 클래스 구동되는데 필요한 라이브러리 파일들 넣는 곳
- cmd 에서 만든 자바 컴파일하기
javac -d ../classes *.java
../ (상위 디렉토리) 인 classes 안에 .java라는 확장명 가진 파일 모두 컴파일 하도록!
- jsp 는 xml로 구동됨 -> web.xml 안에 다음 문구 추가
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
- <servlet-name> : servlet 이름
- <servlet-class> : servlet 의 이름. 패키지를 포함한 풀네임
- <servlet-mapping> : servlet 매핑을 위한 태그
- <url-pattern> : 닉네임. 매핑할 url 주소
-도메인에 localhost/ServletTest/test = 로컬호스트/패키지명/닉네임
이클립스에서 구동하기
1. 다이나믹웹 프로젝트 생성
컴파일 -> 이클립스에서 자동으로 해줌
2. servlet-api.jar 를 lib폴더에 넣어줘야함
(환경변수 잘 하면 안해도 되는데 되도록 해주길)
web-inf > lib > servlet-api 넣기
* public class CalcServlet extends httpservlet -> 사용할 수있게 상속받기
3. java resources > src 에 Servlet 새로 생성
- doGet() : 메소드 get/ post 방식임 둘다 쓰고 싶으면 따로 함수 만들어서 사용
- throws -> 예외 처리
response.setContentType("text/html");
response.setCharacterEncoding("euc-kr");
-> html 형태로 출력
PrintWriter : 출력위한 객체
getWriter()를 통해 출력 할 수 있도록
out.write()를 통해 출력할 문장 넣기
'Code > Servlet & JSP' 카테고리의 다른 글
| JSP 예제_현재 시간 출력 (0) | 2019.06.20 |
|---|---|
| Servlet 예제_현재 시간 출력 (0) | 2019.06.20 |
| @Annotation (0) | 2019.06.20 |
| Get/Post 방식 (0) | 2019.06.20 |
| JSP (0) | 2019.06.20 |
CSS
html 태그의 글자색 변경 , 정렬 방식 , 배경색 , 이미지 등 지정
사용의 편리성과 일괄성
Html 문서가 등장한 목적은 간단하고 빠르게 인터넷 상에 정보를 공유할 수 있는 문서를 만드는 것
겉모습은 CSS로 디자인
inline
-태그에 직접 스타일을 지정하는 방법
-하나의 태그에만 원하는 스타일 지정
-같은 스타일을 사용하는 태그가 많다면 스타일 코드를 작성하는 작업이 많아진다는 단점이 있음.
ex) 태그에 스타일 주기
<h2 style = "font-size:30px;" ></h2>
ex) css로 스타일 주기
<style>
h2 { font-size:30px; }
</style>
<link rel="stylesheet" type="text/css" href="css이름.css" >
<style type = "text/css"> @import url("css이름.css");
css 두개 작성 시 밑에꺼가 마지막으로 디자인 먹힘
- id와 class 스타일 주기
<style>
#logo {font-size:20px;}
.test {font-size:10px;}
</style>
<body>
<div id = "logo" >
테스트용1
</div>
<div class = "test" >
테스트용2
</div>
</body>
- 태그와 클래스 조합 : 태그.클래스명 -> 같은 클래스 이름 가지고 있는 애들끼리 같은 속성
클래스 조합 : ex)
<h2 class = "title bold blue"></h2>
css -> .title {} .bold {} .blue {}
'Code > HTML & CSS & JAVASCRIPT' 카테고리의 다른 글
| JAVASCRIPT 예제_오른쪽마우스 막기, 스크롤 금지 (0) | 2019.06.20 |
|---|---|
| JAVASCRIPT 예제_바뀌는 이미지 (0) | 2019.06.20 |
| JAVASCRIPT 예제_현재 시간 출력(setInterval) (0) | 2019.06.20 |
| JAVASCRIPT (0) | 2019.06.20 |
| HTML (0) | 2019.06.20 |
HTML (Hyter Text Markup Laguage)
: webpage를 이동할 수 있도록 만들어진 문장
: <> 태그로 이루어져있음
<HEAD> : Html 문서의 시작과 끝 표시 HTML 문서에 대한 정보를 표시하는 사용 CSS, 자바스크립트 작성하는 부분
<TITLE> : HTML문서의 제목을 표시하는 역
* CSS : 예쁘게 꾸미는 것
* 자바 스크립트 : 동적 페이지로 만들어주는 것
EX)
|
1
2
3
4
5
6
7
8
|
<HTML>
<HEAD> <!--열림-->
<TITLE>내가 처음 만든 HTML 문서</TITLE> <!--페이지 상단 제목-->
</HEAD>
<BODY> <!-- 눈에 보이는 부분-->
내가 처음 만든 HTML 문서!
</BODY> <!--닫힘-->
</HTML>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
<META> : HTML 문서 자체에 대한 설명을 제공하기 위해 사용됨
사용형식 : <META http-equiv ="메타 태그 항목 이름" content = "항목 내용">
<META name ="메타 태그 항목 이름" content = "항목 내용">
닫는 태그 없음. 검색 엔진들이 html 문서에 포함된 검색 키워드 이용하여 검색하므로, 검색엔진에 의해 잘 검색되도록 하기 위해 사용
내 정보 담아 누가 만들었는지, 언제 만들었는지 담는 기능 -> 저작권으로 사용 가능
내 페이지 검색 엔진에 나타나기 하기
<META name = "robots" content = "noindex.nofollow"
<META NAME="Keywords" CONTENT="HTML,CSS,Javascript"> -> HTML, CSS, Javascript 검색하면 내 사이트 올라오도록
<META NAME="description" CONTENT="HTML,CSS,Javascript를 소개합니다."> -> 페이지 설명하는 것
자동으로 다른 페이지 이동
<META http-equiv="refresh" content="5;url=http://www.netmarble.net/"> -> 페이지 이동, 5초 뒤에 넷마블로 가라
제작자 정보 추가하기
filename. author-date,author,email.....
<BODY> 속성
background : 배경 이미지 경로 지정
bgcolor : 색상 문자열, 색상코드 -> 기본 배경색 지정
bgproperies : empty, fixed -> 배경 이미지 스크롤 가능,불가능
하이퍼 링크 색상 조정
alink : 마우스 클릭 링크 색상
link : 방문하지 않은 하이퍼링크 색상
vlink : 이미 방문한 링크 색상
여백
margin : 정식 영역 밖
padding : 영역 안
<P> : 하나의 문단
<BR> : enter와 같은 역할 -> html에선 엔터가 안먹히기 때문에 태그 써주기
<PRE> : 엔터기나 탭키 등 사용자가 입력한 그 모습 그대로 출력함
<HR> : 줄 만들기 with. width : 길이(%)로 하기, color : 색, size : 선 굵기
  : 여러개의 빈칸이나 엔터키 등 모든 공백 문자를 단 하나의 빈칸으로 인식, 여러개의 공백 인식하고자
<blockckquotoe> : 들여쓰기
텍스트 : 본문 제목 <h1>~<h6>
내용 : <p>
정렬 : align - 글자 위치 (기본 left / center, right 줄수있음)
폰트 : font face:글꼴 이름, size : 크기, color:색상, title : 설명
<B> : 글자 굵게
<I> : 기울여 씀
<STRIKE>: 글자의 취소선
<U> : 밑줄
<TT> : 글자를 타자체로
<SUP> : 위첨자
<BIG> : 글자 크게
<marquee> : 페이지에서 눈에 띄게 하고 싶은거 강조하고 싶은거 움직임(모션) 주는 것
ex) <marquee behavior = "sroll">
direction 방향 , up : 위로 , down : 아래로 , left : 왼쪽 (기본값) , right : 오른쪽 \* scrollamount 움직이는 속도
scroll : 옆으로 계속 이동, alternate : 왔다갔다, slide : 끝에 도착하면 종료
목록태그 : 숫자 이용할 때 <OL>, 숫자 안할 때 <UL>
ex) <OL>
<LI></LI>
</OL>
- <dl> : 태그로 정렬을 하기 위해
- <menu> : 오른쪽으로 점차 들여쓰기 할 때 사용
하이퍼링크
<a> : 문장이나 이미지 등에 하이퍼 링크를 만들게 됨
nanme : 문자열, href : url문자열, target: 링크 연결된 페이지 보여질 위치 title : 제목
<img src = '위치'> : 이미지 불러올 때
<a href = "mailto:이메일 주소?subject=안녕하세요"> : 이메일 주소로 메일 보낼 수 있음
'Code > HTML & CSS & JAVASCRIPT' 카테고리의 다른 글
| JAVASCRIPT 예제_오른쪽마우스 막기, 스크롤 금지 (0) | 2019.06.20 |
|---|---|
| JAVASCRIPT 예제_바뀌는 이미지 (0) | 2019.06.20 |
| JAVASCRIPT 예제_현재 시간 출력(setInterval) (0) | 2019.06.20 |
| JAVASCRIPT (0) | 2019.06.20 |
| CSS (0) | 2019.06.20 |
람다식_2
- 클래스 멤버 (필드, 메소드) : 제약 사항 없이 사용 가능.
this -> 일반적으로 익명 객체 내부에서 this는 익명 객체의 참조지만(즉 익명 객체 생성할 때 {} 안에 변수), 람다식에선 this는 람다식을 실행한 객체의참조(전체 클래스)
- 로컬 변수 사용 : 제약 사항 있음 -> 메소드의 매개 변수 또는 로컬 변수 사용 시 final 특성 가져야 함.
why? 메소드 내에서 생성된 익명 객체는 메소드 실행 끝나도 힙 메모리에 존재. 계속 사용 가능
하지만 매개 변수나 로컬 변수는 메소드 실행이 끝나면 스택 메모리에서 사라지기 때문에 익명 개체에서 사용할 수 없어짐
-> 그래서 final로 선언하면 됨(생략 시 알아서 final로 됨) -> 알아서 읽기는 되지만 변경 안됨
ex) ulv.method(20); -> void method(int arg){
int localVar = 40; -> 여기서 arg,localVar은 변경 불가
}
- 표준 API의 함수적 인터페이스
: 자바에서 제공되는 표준 API에서 한개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이요해 익명 구현 객체 표현 가능
EX) Thread thread = new Thread(()->{
......//실행문
}); thread.start();
- java.util.function -> Consumer : 매개값 있고 리턴값 없음
Supplier : 매개값 없고 리턴값 있음
Function : 매개값 있고 리턴값 있음 (주로 매개값을 리턴값으로 매핑(타입변환))
Operator : 매개값 있고 리턴값 있음 (주로 매개값 연산하고 결과 리턴)
Predicate : 매개값 있고 리턴값 boolean (매개값 조사해 true, false 리턴)
- 메소드 참조
: 메소드를 참조해 매개 변수의 정보 및 리턴 타입 알아내어 람다식에서 불필요한 매개 변수를 제거하는 것 목적
ex) 두 개의 값을 받아 큰 수 리턴하는 Math 클래스의 max() 정적 메소드 호출
(left, right) -> Math.max(left,right);
IntBinaryOperator operator = Math :: max; //메소드 참조한다는 의미
- 정적 메소드 : 클래스 이름 뒤에 :: 기호 붙이고 정적 메소드 이름 기술하면 됨 클래스 :: 메소
- 인스턴스 메소드 : 먼저 객체 생성한 다음 참조 변수 뒤에 :: 기호 붙이고 인스턴스 메소드 이름 기술하면 됨
ex) 참조변수 :: 메소드
- 매개 변수의 메소드 참조 : 메소드는 람다식 외부의 클래스 멤버일 수도 있고, 람다식에서 제공되는 매개변수 일수도 있다.
(a,b)->{a.instanceMethod(b);} //a 매개변수의 메소드 호출해 b 매개 변수를 매개 값으로 사용하는 경우도 음
= 클래스 :: instanceMethod
- 생성자 참고 : 메소드 참조는 생성자 참고도 포함한다. = 생성자를 참고한다는 것은 객체 생성 의미
메소드 호출로 구성된 람다식을 메소드 참조로 대치할 수 있듯이, 단순히 객체를 생성하고 리턴하도록 구성한 람다식은 생성자 참조로 대치 가능
(a,b) -> {return new 클래스(a,b);} = 클래스 :: new
-<이것이 자바다2>. 한빛미디어
'Code > JAVA' 카테고리의 다른 글
| 람다식 (0) | 2019.06.20 |
|---|---|
| 제네릭 예제_학생 성적 입출 (0) | 2019.06.20 |
| 제네릭 예제_제네릭 클래스 (0) | 2019.06.20 |
| 제네릭 예제 (0) | 2019.06.20 |
| 제네릭 (0) | 2019.06.20 |
람다식
람다식
: 함수적 프로그래밍( 병렬 처리와 이벤트 지향 프로그래밍에 적합)
자바 코드 간결해지고, 컬렉션 요소를 필터링 하거나 매핑해서 원하는 결과를 쉽게 집계 할 수 있기 때문에
- 람다식 형태 : 매개 변수를 가진 코드 블록이지만, 런타임 시 익명 구현 객체 생성
ex) Runnable runnable = new Runnable(){
public void run(매개변수){..}
}; -> 익명 구현 객체
Runnable runnable = (매개변수)-> {..}; -> 람다식 : 런타임 시 인터페이스의 익명 구현 객체로 생성
- 람다식 기본 문법 : a -> System.out.println(a); ()->{실행문;}
실행문에 return만 있을 시 (x,y)-> x+y;
- 람다식의 형태는 매개변수 가진 코드 블록. 자바의 메소드처럼 보임
-> but,자바는 메소드를 클래스의 구성 멤버로 선언하기 때문 객체 만들어서 사용
인터페이스 변수 = 람다식;
인터페이스 변수에 대입되어 사용 -> 인터페이스의 익명 구현 객체 생성함.
인터페이스는 직접 객체화할 수 없기 때문에 구현 클래스 필요 -> 그래서 람다식이 익명 구현 클래스 생성하고 객체화 함
- 타겟 타입(target type) : 대입될 인터페이스의 종류에 따라 작성 방법이 달라지기 때문에 람다식이 대입될 인터페이스를 람다식의 타겟타입이라 함
1. 함수적 인터페이스 (@Functionallterface)
: 하나의 추상 메소드가 선언된 인터페이스만 람다식의 타겟 될 수 있음. 이런 인터페이스 부르는 말
모든 인터페이스는 람다식의 타겟 타입으로 사용할 수 없음
람다식이 하나의 메소드 정의하기 때문에 두개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용해 구현 객체 생성 불가
- @Functionallterface : 두 개 이상의 추상 메소드 선언되지 않도록 컴파일러가 체킹해주는 기능 -> 두개 이상 시 컴파일 오류 발생
2. 매개 변수와 리턴값 없는 람다식
ex) interface MyFunction{ public void method(); //메소드 없음}
MyFunction fi = ()->{...} //매개 변수 없기 때문에
fi.method(); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨
3. 매개 변수가 있는 람다식
ex)interface MyFunction{ public void method(int x); //메소드 없음}
MyFunction fi = (x)->{...} or x->{...}
fi.method(5); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨
4. 리턴값 있는 람다식
ex) interface MyFunction{ public void method(int x, int y); //메소드 없음}
MyFunction fi = (x,y)->{... return 값;} or (리턴값만 있을 시) (x,y) -> x+y;
fi.method(2,5); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨
-<이것이 자바다2>. 한빛미디어
'Code > JAVA' 카테고리의 다른 글
| 람다식_2 (0) | 2019.06.20 |
|---|---|
| 제네릭 예제_학생 성적 입출 (0) | 2019.06.20 |
| 제네릭 예제_제네릭 클래스 (0) | 2019.06.20 |
| 제네릭 예제 (0) | 2019.06.20 |
| 제네릭 (0) | 2019.06.20 |
@Annotation
@annotation
- java의 소스코드를 설명하는 메타데이터 (데이터에 대한 데이터)
- @어노테이션명
- 소스의 특정 부분에 붙여서 소스 설명. 코드의 실행에 직접 영향 주지 않음
@WebServlet : 속성 값을 통해 해당 servlet과 매핑될 url패턴 저장
xml 파일 별도 설정 없어도 해당 servlet 실행 가능
- servlet name설정
@WebServlet(name="서블릿 이름")
- urlPatterns : 서블릿 url목록 설정
@WebServlet(urlPatterns="/")
@WebServlet(urlPatterns={"/","/home","/webcome"}) 등등
- value : urlPatterns와 동일한 기능. 속성 이름 없이 값만 설정 가능
@WebServlet("/calc")
- class 위에 추가하면 import javax.servlet.annotation.WebServlet;
- 다중 요소(element)를 포함할 수 있다.
- 클래스, 인터페이스, 메소드, 메소드 파라미터, 필드, 지역 변수 위에 배치 가능
- 컴파일 후 자바 코드에 존재하지 않
- annotation은 런타임에 사용할 수 있게 자신 만의 annotation을 정의하는 것이 가능
1. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
2. 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
3. 실행 시(런타임 시) 특정 기능을 실행하도록 정보를제공
- 컴파일러 : 소스코드를 어떻게 처리해야 되는지 표시
@override의 경우 해당 메소드 부모클래스를 오버라이딩한 메소드임을 알려주는 것
-> 런타임 이전에 메소드 문제없이 오버라이딩 되었는 지 검사
- 사용 목적 : 프로그래밍에서 사용하던 xml파일들을 줄이기 위해
n개의 클래스와 n개의 클래스의 xml 로 되어있다면 관리 대상이 두배가 되기 때문
'Code > Servlet & JSP' 카테고리의 다른 글
| Servlet 예제_현재 시간 출력 (0) | 2019.06.20 |
|---|---|
| Servlet 구현 환경 (0) | 2019.06.20 |
| Get/Post 방식 (0) | 2019.06.20 |
| JSP (0) | 2019.06.20 |
| Servlet (0) | 2019.06.20 |
Get/Post 방식
WEB 메소드 : http프로토콜을 이용하여 서버에 무언가를 전달할 때 사용하는 방식
1. GET : url에 데이터 포함해서 전달
서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의값이나 상태 등을 바꾸지 않음
ASCII 캐릭터만 허용
장점 : 캐시 남아있어 전송속도 빠름
단점 : 주소길이(최대 2048) 제한 있어서 많은 양의 데이터를 보내기 어렵
활용 : 서버에서 어떤 데이터를 가져와서 보여줄 때 사용
ex) 글목록 조회, 글조회
2. POST : url에 데이터 포함하지 않고 요청 메세지 본문에 데이터 포함시켜 전달
http 패킷을 통해 정보 전달
문자 한계 없음->바이너리 데이터가 허용되기 때문에 파일 입출력에 이용
장점 : 많은 양의 보내기에도 적합. (GET 길이 제한 해결) 캐시가 남지 않아 보안적인 면에서 유리
단점 : GET 방식보다 속도가 느리
활용 : 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용
ex) 글 저장, 수정
'Code > Servlet & JSP' 카테고리의 다른 글
| Servlet 구현 환경 (0) | 2019.06.20 |
|---|---|
| @Annotation (0) | 2019.06.20 |
| JSP (0) | 2019.06.20 |
| Servlet (0) | 2019.06.20 |
| Web programming (0) | 2019.06.20 |
JSP
- 자바를 이용하여 동적인 웹 페이지를 만들기 위해 Sun사가 개발한 기술
- 서버 페이지를 쉽게 작성할 수 있고, 서블릿과 함께 구동함으로써 서블릿의 기능을 사용할 수 있고, 자바 빈즈, EJB 같은 기술로 보다 강력한 객체 지향적 지원이 가능
- 대규모 프로젝트에 용이
- Conatiner에서 Servlet으로 변경되어 처리 됨.
- JSP 동작 과정
JSP가 사용자의 요청을 받아 Java Bean(DTO, DAO)을 호출하여 적절한 동적인 페이지를 생성한다.
JSP로 작성된 프로그램은 내부적으로 WAS에서 Servlet 파일로 변환
JSP 태그를 분해하고 추출하여 다시 순수한 HTML 웹 페이지로 변환
클라이언트 응답
JSP의 특징
1. 강력한 이식성
- JVM을 이용한 자바 언어의 특성상 어떤 운영체제에서도, 어떤 JSP컨테이너에서도 사용이 가능하므로 한 번 작성한 코드를 별다른 수정 없이 다른 플랫폼으로 얼마든지 이식이 가능
2. 서버 지원의 효율적인 사용
- Thread 기반의 아키텍처를 사용하여 서버 자원을 효율적으로 관리
3. 간편한 MVC 패턴 적용
- MVC Model(Data 처리) - View(화면) - Controller(데이터와 화면을 제어)) 패턴은 웹 개발에서 가장 많이 사용되고 있으며, 이러한 MVC 패턴을 JSP(View)와 자바 빈즈(Model) 그리고 서블릿(Controller)을 이용해 쉽게 구현할 수 있음
4. JSTL, 커스텀 태그 등을 이용한 개발 용이성
*브라우저는 기본적으로 HTML형식의 문서만을 표시할 수 있으며 따라서 사용자의 요구에 맞는 동적인 웹페이지의 표시에는 큰 한계점을 가지고 있다. 그러므로 웹 서버 측에서 사용자의 요구에 따라 자동으로 변화된 HTML형식의 페이지를 생산해 전송해 줄 수 있는 여러 기술이 개발되었고, 그중 자바 진영의 기술이 서블릿이다.
*서블릿은 기본적으로 자바의 모든 API를 그대로 사용할 수 있고, 강력한 객체 지향성 등 자바의 모든 장점을 모두 계승하고 있다.
* servlet과 jsp 차이
| servlet | jsp |
|
- java 안 html - mvc 에서 컨트롤러 - db와 통신에 유용 - 소스 수정 시 .class를 새로 컴파일해줘야 함 |
- html 안 java - mvc 에서 - 요청 결과 바로 나타내는 html 작성에 유리 - JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포) |
- 참조 :https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html
'Code > Servlet & JSP' 카테고리의 다른 글
| Servlet 구현 환경 (0) | 2019.06.20 |
|---|---|
| @Annotation (0) | 2019.06.20 |
| Get/Post 방식 (0) | 2019.06.20 |
| Servlet (0) | 2019.06.20 |
| Web programming (0) | 2019.06.20 |
Servlet
servlet
- Server Side Applet의 약어로 Web 서버 즉, Servlet 컨테이너에서 수행되는 JAVA 클래스
- 자바를 사용하여 웹페이질르 동적으로 생성하는 서버측 프로그램.
- 서버의 응용 프로그램을 구현하는 기술로 서버 프로토콜 중류에 관계 없이 ftp, pop, smtp, http등 여러가지 어플리케이션 계층 프로토콜 기반의 응용 프로그램을 개발 할 수 있음
- Servlet을 활동하는 주요 서버환경은 웹으로 웹환경에서는 http 프로토콜을 사용
- 클라이언트의 요청에 대하여 Servlet 컨테이너에 의해 독립된 스레드 기반으로 서비스가 되는 기술로서 다중 스레드가 서비스가 기본적으로 제공됨. 그러므로 프로세스 기반의 서비스인 CGI에 비해 수행 속도 빠름. 다만 CGI는 모든 web서버가 지원하는 표준기술 인 반면 Servlet은 Web표준 기술 아님.
- 잘정의된 유용한 api을 상속받아 사용
* 컨테이너 : servlet의 생성부터 소멸까지 과정을 관리.
요청이 들어올 때마다 새로운 자바 스레드 만든다. (이것이 Tomcat)
톰켓같은 was가 java파일을 컴파일해서 Class로 만들고 메모리에 올려 servlet객체를 만든다.
* 빈(bean) : 반복적으로 코드를 따로 작성하여 재사용하기 위해 만들어진 클래스. 데이터 처리 담당
servlet의 이점
- mvc 컨트롤러와 뷰의 역할 분담
- 디자이너와 개발자가의 원활한 공동작업 가능
- 유지보수 수월
- 기능의 확장 용이
- 프로그래머가 html,자바스크립트 스타일 시트 등 복잡한 기술을 모두 알아야 할 필요가 있음
- 스레드 기반 동작
- 서블릿 객체가 메모리 상에 한개만 생성
- 한번 메모리 할당된 서블릿 객체는 정해진 시기가 될때까지 메모리 영역에 유지
- 동시에 요청에 대히여 멀티 스레드 동작하므로 다중작업 가능
- 서버와 운영체제에 비의존적
'Code > Servlet & JSP' 카테고리의 다른 글
| Servlet 구현 환경 (0) | 2019.06.20 |
|---|---|
| @Annotation (0) | 2019.06.20 |
| Get/Post 방식 (0) | 2019.06.20 |
| JSP (0) | 2019.06.20 |
| Web programming (0) | 2019.06.20 |