2022. 6. 13. 16:10ㆍProgramming의 세계/HTML
개발 환경 구축 전에 자바에 tomcat이 연결되어야 한다. Tomcat 과 웹서버는 한 세트라고 보면 되는데,
간단하게 설명을 읽어보며 그 이유를 파악해보겠다.
Apache Tomcat란?
아파치 톰캣(Apache Tomcat)은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다. 톰캣은 관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있다. 그리고, 톰캣은 HTTP 서버도 자체 내장하기도 한다. 아파치 톰캣은 Apache Licence, Version 2를 채용한 오픈소스 소프트웨어로서, 자바서버 페이지이나 자바 서블릿를 실행하기 위한 서블릿 컨테이너를 제공하며, 상용 웹 애플리케이션 서버에서도 서블릿 컨테이너로 사용하는 경우가 많다. 버전 5.5 이후는 기본적으로 Java SE 5.0 이후를 대응한다
출처 : 위키백과
자바빈즈
동적 콘텐츠 개발을 위해 자바 코드를 사용하여 자바 클래스로 로직을 작성하는 방법.
즉, JSP 페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바코드를 따로 분리하여 작성하는 것이 자바빈즈다.
자바빈즈를 사용하는 이유 : 화면을 출력하는 부분과 데이터를 처리하는 로직 부분을 구분하여 작성하면 프로그램의 효율을 높일 수 있는데, 이 때 로직 부분의 코드에 자바빈즈라는 클래스를 사용함.(가독성과 재사용성이 그 이유)
JSP와 자바빈즈의 흐름
① 웹 브라우저가 JSP 페이지에 요청을 전송한다.
② JSP 페이지는 자바빈즈와 통신한다.
③④ 자바빈즈가 데이터베이스에 연결된다.
⑤ JSP 페이지가 브라우저에 응답한다.
구성 : 멤버 변수인 프로퍼티(Property)와 데이터를 가져오거나 저장하는 메소드로 구성.
규칙 : ①프로퍼티는 private 접근 지정자로 설정(public 접근 지정자는 c언어 스러운 설정)
② 맴버 변수인 프로퍼티마다 Getter/Setter() 메소드가 존재해야 함.
Getter() 메소드는 맴버 변수에 저장된 값을 가져올 수 있는 메소드고, Setter() 메소드는 멤버 변수에 값을 저장할 수 있는 메소드다.
DTO(Data Transfer Object : 데이터 접근 객체)란?
DTO는 순수하게 데이터만을 가지는 객체로 private 필드와 getter, setter만을 가지는 객체. DAO는 Data Access Object로 데이터베이스에 접속하여 데이터를 조회하거나 수정/삭제하는 객체
특징
① 레코드가 50개이면 DTO 객체도 50개
② 사용자가 입력한 값을 객체형태로 받을 수 있게 클래스 구성
③ 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 객체
자바빈즈는 일종의 DTO 클래스라고 볼 수 있다.
이를 통해 만든 데이터 클래스에
이제는 데이터접근 클래스를 만들어 상품정보를 설정하면 된다.
자바빈즈로 사용할 Product.java(DTO의 모습)
private String name;
private int unitPrice;
private String description;
private String manufacturer;
private String category;
private long unitsInsStock;
private String condition;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(int unitPrice) {
this.unitPrice = unitPrice;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public long getUnitsInsStock() {
return unitsInsStock;
}
public void setUnitsInsStock(long unitsInsStock) {
this.unitsInsStock = unitsInsStock;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
TIP!! 쉽게 Getter Setter 지정하기
1) 화면에서 오른쪽 클릭 -> Source -> Generate Getters and Setters... 선택
2) getter/setter 생성 원하는 변수를 선택하고 Generate 클릭하면 완성!
DAO(Data Access Object : 데이터 접근 객체)란?
데이터의 data에 접근하기 위한 객체DataBase 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위해 사용하며, DAO의 경우 DB와 연결할 connection까지 설정되어 잇는 경우가 많다.
① 주 목적: inset, delete, update, select 등 레코드 처리.
② DTO 객체를 데이터베이스 서버에 저장
③ SQL을 직접 실행하는 기능을 가짐
④ JSP에서 데이터베이스 접속 로직을 beans로 작성하여 DB 정보 변경시 쉽게 변경사항을 구현할 수 있음.
DAO 예제
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestDao {
public void add(TestDto dto) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test","root","root");
PreparedStatement preparedStatement = connection.prepareStatement("insert into users(id, name, password) value(?,?,?)");
PreparedStatement.setString(1, dto.getName());
PreparedStatement.setInt(1, dto.getUnitPrice());
PreparedStatement.setString(1, dto.getDescription());
PreparedStatement.executeUpdate();
PreparedStatement.close();
connection.close();
}
}
자바빈의 사용
products.jsp
//<jsp:useBean id="빈이름" class="자바빈 클래스명" scope="범위 />
<jsp:useBean id = "user" class="com.person.personInfo" scope="page"/>
<%=user%>
다음과 같이 <jsp: useBean> 액션태그를 이용한다.
아니면
ProductRepository.java
// 싱글턴 패턴
private static ProductRepository instance = new ProductRepository();
public static ProductRepository getInstance() {
return instance;
}
에 싱글턴 패턴으로 작성한뒤
Products.java/Product.java
ProductRepository repository = ProductRepository.getInstance();
로 불러온다.
리스트에 저장한 경우,
Product.java
private String id;
private String name;
private int unitPrice;
public Product( String id, String name, int unitPrice) {
this.id = id;
this.name = name;
this.unitPrice = unitPrice;
}
ProductRepository.java
ArrayList<Product> products = new ArrayList<>();
public ProductRepository() {
Product phone = new Product("P1234", "iPhone 6s", 800000);
products.add(phone);
}
products.jsp
<% List<Product> products = repository.getAllProducts();
for (int i = 0; i < products.size(); i++) {
Product product = products.get(i);
%>
<h3><%= product.getName() %></h3>
<% } %>
과 같이 화면에 출력할 수 있다.
D.O.N.E !!!

'Programming의 세계 > HTML' 카테고리의 다른 글
[JSP] JSP 짧고 굵게 배워보기(시작페이지 만들기) (0) | 2022.06.09 |
---|---|
[JSP] JSP 짧고 굵게 배워보기(환경 구축 및 구동 확인) (0) | 2022.06.08 |
[CSS] 초간단 프론트엔드 화면 구성 (0) | 2022.05.30 |
[CSS] div 정렬 vs table 정렬 (0) | 2022.05.30 |
[CSS] display, border의 이해와 속성, 예시 (0) | 2022.05.30 |