본문 바로가기
Programming/Web

[Servlet & Jsp &DB] 2초마다 변하는 배너 만들기

좀... 허접한 구조도...

아래는 DB에 있는 banner 테이블.

알아보기 어렵지만 정리하는 차원에서 작성해본다.
나는 뭘 해도 꼭 순서대로 정리를 해야 직성이 풀린다.



■ 동작 순서

  1. DBManager에서 Connection 객체를 받고 반납
  2. index.jsp에서 servlet으로 배너 데이터 요청
  3. servlet에서 배너 데이터를 BannerServiceImpl로 요청
  4. service 측에서 Dao 측으로 DB에서 sql문으로 배너 문자열들을 select * 한 결과를 반환
  5. 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