BACK END/jsp

JSP와 DB 연결

자코린이 2022. 7. 1. 20:18

스프링을 사용하다보면 JSP만으로 코딩을 할 일이 많이 없습니다.

하지만 적은 인원으로 빠른 개발이 필요한 경우 JSP를 사용할 수 있습니다.

(여러분 그냥 PHP, node, Django 쓰세요...)

일단 jsp 만들 사용하여 backend를 만들려면 서버를 구동시키는 법을 알아야 합니다.

sql과 태그 라이브러리 jar를 다운받아 lib에 넣어주세요.

https://mvnrepository.com/artifact/mysql/mysql-connector-java

 

Maven Repository: mysql » mysql-connector-java

JDBC Type 4 driver for MySQL VersionVulnerabilitiesRepositoryUsagesDate8.0.x8.0.29Central157Apr, 20228.0.28Central269Jan, 20228.0.271 vulnerability Central262Oct, 20218.0.262 vulnerabilities Central214Jul, 20218.0.252 vulnerabilities Central219May, 20218.0

mvnrepository.com

https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl

 

Maven Repository: javax.servlet.jsp.jstl » jstl

 

mvnrepository.com

2022.06.20 - [SERVER/window] - apache tomcat 설정

 

apache tomcat 설정

톰캣 폴더 안에 들어와 webapps 폴더안에 들어오면 아래처럼 나옵니다. 톰캣은 아파치 서버와 다르게 ROOT가 / 이고, 그 안의 /test 처럼 폴더형식을 주고 싶으면 ROOT와 같은 webapps폴더안에 넣어주면

jacorinne.tistory.com

 

설정이 끝나셨고, 서버가 돌아가고 있으면 DB와 연결을 해봅시다.(mysql 은 당연히 깔려있어야 합니다.)

DB, DAO, VIEW 를 분리하여 사용합니다.

분리하여 사용할 경우 코드의 재활용성이 높아집니다.

DB연결을 만들어 줍니다.

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import = "java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>


<%! 


String jdbcDriver ="jdbc:mysql://localhost:3306/DB이름?characterEncoding=UTF-8&serverTimezone=UTC";

String dbUser="user(사용자)";

String dbPass="passwd(비밀번호)";

public ArrayList<HashMap<String,String>> convertResultSetToArrayList(ResultSet rs) 	throws SQLException{
	ResultSetMetaData md = rs.getMetaData();
	int columns = md.getColumnCount();
	ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
		
	while(rs.next()){ 
	HashMap<String,String> row = new HashMap<String,String>(columns);							
	for(int i=1; i<= columns; ++i){
		row.put(md.getColumnName(i), rs.getString(i));
	}
		list.add(row);
	}	
		return list;
	}
	
public ArrayList<HashMap<String,String>> execQuery(String query){
	ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;
	

    try{
 
	Class.forName("com.mysql.jdbc.Driver");
    
     //2.데이터 베이스 커넥션 생성

    conn=DriverManager.getConnection(jdbcDriver,dbUser,dbPass);

     //3.Statement 생성

    stmt=conn.createStatement();

     //4. 쿼리실행

    rs=stmt.executeQuery(query);

	list = convertResultSetToArrayList(rs);
	
    }catch(Exception ex) {

		ex.getMessage();

    }finally {
        if(rs!=null) try{rs.close(); }catch(SQLException ex) {}

        if(stmt!=null) try{stmt.close();} catch(SQLException ex) {}

        if(conn!=null) try{conn.close(); }catch(SQLException ex) {}
    }
	return list;
	}

      %>

 

이제 DAO를 만들어 줍니다.

<%@ include file = "db.jsp" %>

<%! 
public ArrayList<HashMap<String,String>> getData(){
	String query = "SELECT * FROM tb_code;";
	ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
	list = execQuery(query);
	return list;	
}
%>

 

VIEW입니다.

저는 session에 저장하여 사용하였습니다. 

다른 방법도 사용하셔도 됩니다.

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@  include file = "dao.jsp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>view</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<%ArrayList<HashMap<String,String>> list = getData();
  session.setAttribute("list", list);

%>
<c:forEach var="code" items="${sessionScope.list}" varStatus="status">
    <c:out value="${code.CODE_NAME}"/>
</c:forEach>
</body>
</html>

 

여기까지 하시면 데이터가 잘 나오는 것을 확인하실 수 있습니다.

 

'BACK END > jsp' 카테고리의 다른 글

jsp에서 json encode  (0) 2022.07.01