좀... 허접한 구조도...
아래는 DB에 있는 banner 테이블.
알아보기 어렵지만 정리하는 차원에서 작성해본다.
나는 뭘 해도 꼭 순서대로 정리를 해야 직성이 풀린다.
■ 동작 순서
- DBManager에서 Connection 객체를 받고 반납
- index.jsp에서 servlet으로 배너 데이터 요청
- servlet에서 배너 데이터를 BannerServiceImpl로 요청
- service 측에서 Dao 측으로 DB에서 sql문으로 배너 문자열들을 select * 한 결과를 반환
- index.jsp에서 출력!
그 외 index.jsp도 있음!
■ BannerServlet.java
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import service.BannerService;
import service.BannerServiceImpl;
@WebServlet("/banners")
public class BannerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//banner 문자열 목록을 JSON으로 전달
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
BannerService banner = new BannerServiceImpl();
List<String> list = banner.selectAll();
Gson gson = new Gson();
String jsonArr = gson.toJson(list);
PrintWriter out = response.getWriter();
out.print(jsonArr);
}
}
■ BannerDaoImpl.java
(Dao는 Interface므로 생략)
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import common.DBManager;
public class BannerDaoImpl implements BannerDao {
private static BannerDaoImpl instance = new BannerDaoImpl();
public static BannerDao getInstance() {
return instance;
}
@Override
public List<String> select() {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<String> list = new ArrayList<>();
String sql = "select * from banner";
try {
con = DBManager.getConnection();
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
list.add(rs.getString(1));
}
}catch (Exception e) {
e.printStackTrace();
}
finally {
DBManager.releaseConnection(con, ps, rs);
}
return list;
}
}
■ BannerServiceImpl.java
이것도 interface는 생략
package service;
import java.util.List;
import dao.BannerDao;
import dao.BannerDaoImpl;
public class BannerServiceImpl implements BannerService {
private static BannerDao banner = BannerDaoImpl.getInstance();
@Override
public List<String> selectAll() {
List<String> list = banner.select();
return list;
}
}
추가로 MEAT-INF 밑에 context.xml에 아래 코드를 추가해야한다.
<Resource name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:xe"
username="본인 데이터 베이스 이름"
password="비밀번호"
maxTotal="20"
maxIdle="10"
maxWaitMillis="-1"/>
- 추가로 gson과 ojdbc.jar 라이브러리도 추가해야함...
■ 결론
이렇게 2초마다 바뀌는 배너 만들 수 있다.
기억해보자..!
'Programming > Web' 카테고리의 다른 글
[AWS] AWS VPC와 Subnet 설정 (2) | 2024.06.09 |
---|---|
[Next.js] Next.js Routing 이모저모 (0) | 2024.05.29 |
[Servlet & JSP] get, post 만들기 (0) | 2023.06.16 |
JavaScript Tutorial (0) | 2023.06.16 |
Web 시작 (0) | 2023.06.16 |