Java Web Application 발전 - 1

David Jeon·2023년 2월 7일
1

Springboot 기초 과정

목록 보기
2/4
post-thumbnail

1. Servlet

1.1 Servlet 프로젝트 생성

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" 클릭

  • Group Id: samlple
  • Artifact Id: servletweb


6) 프로젝트 생성 완료

7) Java class 디렉토리 생성

  • Folder name에 "java" 입력 후 "Finish" 버튼 클릭

8) 하위 Package 생성

  • Package name에 "servlet" 입력 후 "Finish" 버튼 클릭

1.2 Servlet Class 생성 및 코딩

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.3 web.xml 설정

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.4 Tomcat 설정 및 Servlet 실행 확인

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

서버에 호출된 로그를 확인

2. JSP + Bean

2.1 JSP 페이지 호출

1) JSP에 내용 수정
Hello World! 아래에 문구 추가

<h2>This is index.jsp</h2>

2) JSP 확인 URL : http://localhost:8080/servletweb/index.jsp

2.2 Java Bean Class 작성

  • Java Bean 이란 특정한 일을 처리하는 Class로 객체지향 프로그래밍(Object Oriented Programing)의 5가지 설계원칙을 따르도록 구현해야 한다.

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" 버튼 클릭

== 서버 로그 확인 ==

  • 한글 입력후 테스트 실습 및 해결

3. EJB(Enterprise Java Beans)

3.1 About J2EE

  • 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..

3.2 EJB Component

  • EJB Component는 Java Beans와 유사한 Business Logic의 구현체임

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컨테이너를 쓰기 위한 코드가 많음
- 특정 환경에 쉽게 종속적
- 낮은 개발 생산성
- 재사용하기 쉽지 않음
- 자동화된 테스트가 불가능
- 디버깅의 어려움

profile
코딩이 즐거운 아저씨

0개의 댓글