휴일 등록하기
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;
}
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
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[ Java ] Dao, Service 활용한 휴일 삭제하기 (22) | 2023.12.19 |
---|---|
[ Java ] DAO, VO, Service 활용한 리스트 불러오기 (58) | 2023.12.07 |
[ Java ] Long과 long의 차이점 (60) | 2023.11.29 |
[ Java ] What is the Wrapper Class? (20) | 2023.11.29 |