본문 바로가기

안녕하세요!

프로그래밍 언어/Java

[ Java ] DAO, Service 활용한 휴일 등록하기


 

휴일 등록하기


 

HolidayDAO.java


 

private String HOLIDAY_INSERT = 
	"INSERT INTO SQL_HOLIDAY_LIST (YEAR, MONTH, DAY, REMARK) VALUES(?, ?, ?, ?)";

public int insertHoliday(Connection conn, String year, String month, String day, String remark) throws SQLException {
    int resultVal = 0;
    preparedStatement pstmt = conn.prepareStatement(HOLIDAY_INSERT);
    pstmt.setString(1,year);
    pstmt.setString(2,month);
    pstmt.setString(3,day);
    pstmt.setString(4,remark);
    resultVal = pstmt.executeUpdate();
    pstmt.close();
    return resultVal;
}

 

 

 

[ Java ] DAO, VO, Service 활용한 리스트 불러오기

Controller, Service, DAO, VO Controller Controller는 Request를 "어떻게" 처리할 것인지 정의하는 곳이다. @Controller 어노테이션을 사용하여 Controller 기능을 작동시킨다. Service Service는 Request에 대해 "어떠한" 처

pythonchoboman.tistory.com


 

PreparedStatement


 

PreapredStatement를 사용해 쿼리를 실행시킬 수 있도록 한다.

HOLIDAY_INSERT 쿼리문을 연결시켜준다.

?의 개수에 따라 삽입되는 데이터의 개수도 정해진다.

 

setString()


 

setString()은 preparedStatement가 제공하는 메서드이며,

물음표에 매칭시킬 값들을 불러오는 역할을 한다.

preparedStatement.setString(1, year)의 의미는

첫번째 물음표에 year라는 데이터 값을 매칭시킨다는 것이다.

총 4개의 값을 삽입할 것이며, 그 값은 각각 year, month, day, remark 이다.

 

executeUpdate()


 

executeUpdate()는 preparedSteatement로 쿼리문 실행이 되었을 때

행의 개수를 반환하는 역할을 한다.

 

close()


 

데이터는 JAVA 내부가 아닌 외부의 DB단의 자원에 접근하는 것이기에

입출력 시 자원이 낭비될 수 있다.

close() 메서드로 입출력에서 생길 수 있는 자원 낭비를 막아준다.

 

HolidayService.java


 

public class HolidayService {

    WriteLog log = WriteLog.getInstance();

    Connection      conn    = null;
    SqlConnection   sq      = null;
    HolidayDAO      hdDao   = null;

    public HolidayService() {
        hdDao = new HolidayDAO();
    }

    public List insertHoliday(String year, String month, String day, String remark) {

        SqlConnection sq = new SqlConnection();
        String returnStr = "";
        int resultVal = 0;
        sq = new SqlConnection();
    
        try {
            sq.createConnection(Common.DB);
            conn = sq.getConnection();
            conn.setAutoCommit(false);
    
            // DAO 호출
            resultList = hdDao.insertHoliday(conn, year, month, day, remark);
            
            if(resultVal<0) {
            	returnStr = "Fail";
            }
            else {
            	returnStr = "Successs";
            }
            conn.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            returnStr= "SqlErr";
            try {
                log.log("sql_Err", "insertHoliday", e.toString());
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
        finally {
            try {
                if(!conn.isClosed()) {
                    conn.close();
                }
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            sq.closeConnection();
        }
        return returnStr;
    }
}

 

SqlConnection


 

SqlConnection

SQL 서버에 접속학 위한 클래스이다.

sq = createConnection(Common.DB)

createConnection() 메서드를 사용하면 DB와 서버를 연결하는 객체를 만들 수 있고,

각종 쿼리를 실행시킬 수 있게 된다.

createConnection() 메서드에는 인자로 DB에 대한 정보를 넣어주면 된다.

반응형

holiday_insert.jsp


 

function insertHoliday() {
	if(document.frm.year.value=="") {
		alert("등록 년도를 입력하세요.");
		document.frm.year.focus();
		return;
	}
	if(document.frm.month.value=="") {
		alert("등록 월을 입력하세요.");
		document.frm.month.focus();
		return;
	}
	if(document.frm.day.value=="") {
		alert("등록 일을 입력하세요.");
		document.frm.day.focus();
		return;
	}
	if(document.frm.remark.value=="") {
		alert("휴일 상세데 대해 입력하세요.");
		document.frm.remark.focus();
		return;
	}
	document.frm.opcode.value = "insert";
	document.frm.submit();
}

 

document


 

메서드 설명
document.getElementsByTagName() 해당 태그 이름의 요소를 모두 선택
document.getElementById() 해당 아이디의 요소를 선택
document.getElementsByClassName() 해당 클래스에 속한 요소를모두 선택 
document.getElementsByName() 해당 name 속성값을 가지는 요소를 모두 선택
document.querySelectorAll() 해당 선택자로 선택되는 요소를 모두 선택

 

객체 집합 설명 DOM Level
document.anchors name 속성을 가지는 <a> 요소를 모두 반환 1
document.applets applet 요소를 모두 반환 1
document.body <body> 요소를 반환 1
document.cookie HTML 문서의 쿠키를 반환 1
document.domain HTML 문서가위치한 서버의 도메인명을 반환 1
document.forms <form> 요소를 모두 반환 1
document.images <img> 요소를 모두 반환 1
document.links href 속성을가지는 <area> 요소와 <a> 요소를 모두 반환  1
document.referrer 링크되어 있는 문서의 URI를 반환 1

 

document 객체는 웹 페이지 그 자체이다.

웹페이지에 존재하는 HTML 요소에 접근하고자 할 때에는

반드시 document 객체부터 시작해야 한다.

 

focus()


 

focus()는 input 태그를 마우스로 클릭하여

입력 상태로 만들 수 있도록 해준다.

 

submit()


 

submit() 메서드는

동적으로 form을 생성하고 서버에 보내고자 할 때 사용한다.

form.submit()

javascript만으로 form을 전송하고자 할 때 사용한다.

 

<tr>
	<th>Year(년)</th>
	<td class="left">
		<select name="year" style="height:16px; padding:0px">
			<%
				Calendar cal = Calendar.getInstance();
				int curYear = cal.get(Calendar.YEAR);
				for(int i=curYear; i<curYear+10; i++) {
			%>
				<option value='<%=i%>'><%=i%></option>
			<%	
				}
			%>
		</select>
	</td>
</tr>
<tr>
	<th>Month(월)</th>
	<td class="left">
		<input type="text" id="month" name="month" value="" maxlength="20" style="height:16px; padding:0px">
	</td>
</tr>
<tr>
	<th>Day(일)</th>
	<td class="left">
		<input type="text" id="day" name="day" value="" maxlength="20" style="height:16px; padding:0px">
	</td>
</tr>
<tr>
	<th>비고(휴일 상세)</th>
	<td class="left">
		<input type="text" id="remark" name="remark" value="" maxlength="20" style="height:16px; padding:0px">
	</td>
</tr>

 

java.util.Calendar


 

Calendar 클래스는

Java에서 날짜와 시간에 대한 Data 처리 역할을 하는 추상 클래스이다.

추상 클래스인 이유는 나라마다 사용하는 달력 체계가 다르기 때문이다.

 

getInstance()


 

getInstance() 메서드는

싱글턴 패턴으로서 생성자를 private로 선언해

다른 클래스에서 해당 클래스의 인스턴스를 새롭게 생성하지 못하도록 한다.

이는 매번 새로운 객체를 생성하는 것이 아니라,

한 번만 새로운 객체를 생성하고

그 후에는 모든 클래스들이 동일한 인스턴스(객체)를 써야 할 때 사용한다.

 

Calendar 클래스 현재 년도를 불러오고,

for문 안에서 향후 10년의 년도만 선택할 수 있도록 해준다.

마지막으로 option 태그에 i 값을 jsp 표현식인 <%= %>에 불러오면 된다.

 

self.close()


 

<ul><a href="javascript:insertHoliday();" onfocus="this.blur()" alt="등록"><nobr>등록</nobr></a></ul>
<ul><a href="javascript:self.close();" 	  onfocus="this.blur()" alt="취소"><nobr>취소</nobr></a></ul>

 

위에서 생성해두었던 함수 insertHoliday를 불러와 등록 버튼으로 만들어 준다.

self.close() 메서드를 사용해 창을 닫는 버튼도 만든다.

728x90

 

728x90
반응형

loading