1) STS > Package Explorer 영역에서 우측버튼 클릭 후 "New > Project..." 선택
2) "Maven > Maven Project" 선택 후 "Next" 버튼 클릭
3) Default로 선택된 "Use Defult Workspace location" 확인 후 "Next" 버튼 클릭
4) Filter에 "apache.maven" 입력 후 아랫부분의 "maven-archetype-webapp"을 선택 후 "Next" 버튼 클릭
5) "New Maven Project" 창에 아래와 같이 입력 후 "Finish" 클릭
6) 프로젝트 생성 완료
7) Java class 디렉토리 생성
8) 하위 Package 생성
1) "src/main/java/servlet" 에서 우측 버튼을 크릭하고 "New > Class"를 선택
2) Name에 "HelloServlet" 입력 후 "Finish" 클릭
3) "HelloServlet.java" Code 창에 Servlet 소스 코딩
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("[HelloServlet] /hello invoked.");
response.setContentType("text/html");
request.setCharacterEncoding("utf8");
response.setCharacterEncoding("utf8");
PrintWriter out = response.getWriter();
out.println("<html><head></head><body>");
out.println("<h1>Hello, world</h1><h2>This is HelloServlet</h2>");
out.println("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// not use.
}
}
4) "Class cannot be resolved..." 오류를 없애기 위해 POM File에 "Servlet Library" 설정
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
5) "X" 표시를 클릭하여 우측팝업 창에서 "Import 'HttpServlet'(javax.servlet.http)" 선택
동일하게 빨간줄로 표시된 클래스를 Import 해주고 "Ctrl+S" 클릭하여 소스 저장
1) Package Explorer View에서 "src > main > webapp > WEB-INF > web.xml"을 더블 클릭하여 XML에 servlet 설정을 추가한다.
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Archetype Created Web Application</display-name>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
1) "Servers" View에서 우측버튼 클릭 후 "New > Server" 선택
2) "Apache > Tomcat v8.5 Server" 선택 후 "Finish" 클릭
3) 생성된 Tomcat 서버 (Tomket v8.5 Server at localhost...) 클릭
4) "Tomket v8.5 Server at localhost..." 위에서 우측 버튼 클릭 후 "Add and Remove..." 선택
5) 왼쪽의 "Available:" 목록에서 "servletweb" 을 선택 후 "Add" 버튼 클릭 후 "Finish" 클릭
6) Servers View에 "servletweb" 프로젝트가 추가된 것을 확인
7) Servers View의 "Tomket v8.5 Server at localhost..." 위에서 우측 버튼 클릭 후 "Start" 선택
우측 Console 창에 Tomcat 서버가 실행되는 로그를 확인
8) 브라우져를 실행하여 hello servlet이 호출되는 것을 확인
URL : http://localhost:8080/servletweb/hello
서버에 호출된 로그를 확인
1) JSP에 내용 수정
Hello World! 아래에 문구 추가
<h2>This is index.jsp</h2>
2) JSP 확인 URL : http://localhost:8080/servletweb/index.jsp
1) "src/main/java" 하위에 "beans" Package 생성
- 생성 실습
2) "src/main/java/beans" 하위에 "HelloBean.java" Class 생성
- 생성 실습
== HelloBean.java 소스 ==
package beans;
public class HelloBean {
private String helloString = "Hello World!";
public void setHelloString(String helloString) {
System.out.println("[HelloBean.setHelloString()] = ["+ helloString +"]");
this.helloString = helloString;
}
public String getHelloString() {
System.out.println("[HelloBean.getHelloString()] = ["+ helloString +"]");
return helloString;
}
public String sayHello(String sayHello) {
System.out.println("[HelloBean.sayHello(String sayHello)] = ["+ sayHello +"]");
return sayHello;
}
}
3) (JSP 개발을 위해) "src/main/webapp" 하위에 "hello" Package 생성
- 생성 실습
4) "src/main/webapp/hello" 하위에 requestHello.jsp 파일 생성
- 생성 실습
5) requestHello.jsp 구현
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<h2>Say Hello~!</h2>
<h2>한글 테스트</h2><br/><br/><br/>
<form method='post' action='responseHello.jsp'>
인사말 입력 : <input type="text" name="helloText" />
<input type="submit"/>
</form>
</body>
</html>
6) responseHello.jsp 구현
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="hello" class = "beans.HelloBean" />
<%! // 전역변수 선언
String reqString = "";
%>
<%
// Java Code
// request.setCharacterEncoding("UTF-8");
reqString = request.getParameter("helloText");
%>
<html>
<body>
<h2>Response Hello~!</h2>
<h2>한글 테스트</h2><br/><br/>
Bean Default Hello : <%=hello.getHelloString()%><br/><br/>
<jsp:setProperty name="hello" property="helloString" value="<%=reqString%>" />
Bean Default Hello : <%=hello.getHelloString()%><br/><br/>
Request String : <%=hello.sayHello( reqString )%>
</body>
</html>
7) Tomcat 실행 실습
8) 브라우져로 "requestHello.jsp" 호출
URL : http://localhost:8080/servletweb/hello/requestHello.jsp
9) 인사말을 입력 후 "Submit" 버튼 클릭
== 서버 로그 확인 ==
Oracle의 J2EE(Java Enterprise Edition) 정의 : Application Server는 J2EE(Java 2 Enterprise Edition) 1.4 기술을 구현합니다. J2EE 플랫폼은 Application Server의 응용 프로그램 구성 요소, API 및 런타임 컨테이너와 서비스를 설명하는 표준 사양 집합입니다.
J2EE 지원 기능
1) Servlet, JSP, Applet : Web Application 지원
2) JMS(Java Message Service) : 비동기 메세지 처리
3) JDBC(Java Database Connectivity) : 데이터베이스 처리용 API
4) JTA(Java Transaction API) - 트랜잭션 처리, 분산 트랜잭션 지원
5) JNDI(Java Naming and Directory Interface) : 디렉토리 서비스
6) Java Mail API
7) EJB - 분산 애플리케이션을 지원하는 컴포넌트 기반의 객체
Etc..
1) EJB 종류
- EntityBean : 데이터 추상화 Bean (Object Relational Mapping), Spring JPA와 동일
- SessionBean : 비즈니스 로직 구현용 Bean
- Message-driven Bean : JMS 연동 Bean
2) EJB 특징
- EJB를 구동하기 위해서는 Weblogic, JBOSS와 같은 EJB Container를 지원하는 고가의 Web Application Server가 필요함
- EJB Pool을 이용하여 동시접속자에 따른 EJB의 수를 조절 가능
- 대량의 트랜잭션을 안정적으로 처리
- 초기 JSP<->EJB, EJB<->EJB 간 RMI over IIOP 통신함
=> Spring에 대항하기 위해 LocalBean을 만듬
- EJB 분산 처리가 가능함
3) EJB 단점
- 서비스 속도가 느림(JSP -> EJB, EJB -> EJB)
- 비즈니스 로직보다 EJB컨테이너를 쓰기 위한 코드가 많음
- 특정 환경에 쉽게 종속적
- 낮은 개발 생산성
- 재사용하기 쉽지 않음
- 자동화된 테스트가 불가능
- 디버깅의 어려움