summary
먼저 아파치 톰캣이 이클립스에 연동되어있다고 가정한다.
서블릿으로 웹요청을 받아들여 디비랑 통신하기 위한 코드에 대한 템플릿이다.
DB와의 통신은 서블릿 코드에서 DBConnect.java를 통해 디비에 접속하고 Dao를 통해 질의문을 작성한다.
프로젝트 생성
이클립스 > File > New > Dynamic Web Project
서블릿 파일 생성
File > New > Servlet > 아래 코드
package templete_server.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.ResultSet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class GetData */ @WebServlet(name = "GetData", urlPatterns = { "/GetData" }) public class GetData extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public GetData() { super(); // TODO Auto-generated constructor stub } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); ///////////////////////////////////////////////////////////////// // HTML SOURCE CODE out.println("<html>"); out.println("<head>"); out.println("<title>Servlet GetData</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet GetData at " + request.getContextPath() + "</h1>"); out.println("<p>"); out.println("get data : " + request.getParameter("id")); out.println("</body>"); out.println("</html>"); out.println(""); // HTML SOURCE CODE ///////////////////////////////////////////////////////////////// String id = request.getParameter("id"); System.out.println(id); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }
DB Connect ( Mysql)
jdbc나 mysql 드라이버는 'WebContent > WEN-INF > lib' 안에 넣어주어야 한다.
첫 번째 코드는 DB를 연결하기 위함이고, 두 번째 코드는 질의문을 서버에 작성할 수 있다.
DBConnector.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnector { private String driver = "com.mysql.jdbc.Driver"; private String url = "jdbc:mysql://localhost:3306/dbschema?useUnicode=true&characterEncoding=UTF-8"; private String user = "userid"; //DB user ID private String pwd = "password"; //DB user Password private Connection conn = null; public Connection getConnection(){ try{ Class.forName(driver); }catch(ClassNotFoundException e){ System.out.println("BusInfoSystem : 드라이버 로딩 실패(getConnection)"); System.out.println(e.getMessage()); } try{ conn = DriverManager.getConnection(url,user,pwd); }catch(SQLException e){ System.out.println("BusInfoSystem : DB 연결 실패(getConnection)"); System.out.println(e.getMessage()); } return conn; } }
tempateDao.java
package templete_server.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class templateDao { private DBConnector dbc; public templateDao() { dbc = new DBConnector(); } public int getData(int arg1) { int result = 0; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = new String("select * from dbtable where ID = ?;"); conn = dbc.getConnection(); try { ps = conn.prepareStatement(sql); ps.setInt(1, arg1); rs = ps.executeQuery(); rs.first(); while (true) { result = rs.getInt("id"); if (rs.isLast()) break; rs.next(); } } catch (Exception e) { e.printStackTrace(); } finally { closeDB(rs, ps, conn); } return result; } /** * DataBase 자원 반환 * * @param rs * @param ps * @param conn */ private void closeDB(ResultSet rs, Statement ps, Connection conn) { if (rs != null) { try { rs.close(); } catch (Exception e) { } } if (ps != null) { try { ps.close(); } catch (Exception e) { } } if (conn != null) { try { conn.close(); } catch (Exception e) { } } } }
'대학 생활 > JAVA' 카테고리의 다른 글
[JAVA 코딩습관] BigDecimal 객체 생성, 비교 (0) | 2014.12.10 |
---|---|
[JAVA 코딩습관] BigInteger 객체 사용법 (0) | 2014.12.03 |
[JAVA 코딩습관] Boolean 객체 사용법 (0) | 2014.10.24 |
[JAVA] Swing GTKLookAndFeel JAVA1.8에서 실행할 때 (0) | 2014.09.26 |