반응형
**작업 순서
1. Dynamic Web project 생성(struts)
2. WEB-INF -> lib 에
struts,ibatis,JSTL 관련 jar 파일 복사
antlr-2.7.2.jar
commons-beanutils-1.8.0.jar
commons-chain-1.2.jar
commons-digester-1.8.jar
commons-fileupload-1.1.1.jar
commons-io-1.1.jar
commons-logging-1.0.4.jar
commons-validator-1.3.1.jar
oro-2.0.8.jar
struts-config.xml
struts-core-1.3.10.jar
struts-taglib-1.3.10.jar
struts-tiles-1.3.10.jar
ibatis.jar
jstl.jar
standard.jar
3. WEB-INF 에
struts-config.xml 생성(struts 설정 파일)
4. META-INF 에
context.xml 생성(connection pool 설정 파일)
5. WEB-INF의
web.xml에 struts 관련 설정 및
connection pool 설정
6. 패키지 및 jsp 파일용 폴더 생성
패키지 : action InsertAction, DeleteAction
dao BoardDao, ibatis 설정 파일(Board.xml SqlMapConfig.xml)
vo BoardVO
form BoardForm
폴더 : board list.jsp, write.jsp, ...
7. jsp -> action -> dao (or dao-> action -> jsp )
jsp , XXXAction 생성
Dao에 메소드 추가 순서로 작업
8. struts-config.xml 에
mapping 정보 추가
9. server Restart 다시 7번부터 반복
**실습
1. web-inf 에서 board 폴더를 만들고 write.jsp 파일을 생성한다.
(web-inf 폴더 아래 있는 jsp 파일은 url 입력으로는 절대 접근 불가능하다.)
2. lib에 board_config.xml을 추가한다.
3. web.xml에 다음과 같이 config 값을 바꿔준다.
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/board-config.xml</param-value>
</init-param>
4. board-config.xml에서 다음과 같이 action-mapping 를 추가하면 외부에서 접근할수 없는 페이지에 접근 가능하다.
<action-mappings>
<action path="/write" forward="/WEB-INF/board/write.jsp"></action>
</action-mappings>
http://localhost/struts/write.do
이런식으로 주소를 입력해주면 web-inf 내부에 있는 페이지로 이동되게 된다.
5. write.jsp 에 html 코드를 사용하여 화면을 만들어준다.
6. 또 글 목록을 보여주기 위한 list.jsp를 만들고 html 코드를 작성해 준다.
7. 기존의 프로젝트에 이미 struts 관련 라이브러리가 있기 때문에
jstl, ibatis 관련 라이브러리만 추가시켜준다.
apache-tomcat-6.0.18\webapps\examples\WEB-INF\lib
jstl.jar
standard.jar
ibatis-2.3.4.726\lib
ibatis-2.3.4.726.jar
8. META-INF 폴더에 context.xml 를 생성하고 connection pool 을 설정해 준다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Connection Pool 설정 파일 -->
<Context>
<Resource name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
username="scott" password="tiger" maxActive="20"
maxIdle="10" maxWait="-1"/>
</Context>
9. web.xml에서 자원참조 설정을 해준다.
<resource-ref>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
10. src 에서 패키지를 생성해준다.
action, form, dao, vo
11. 게시문의 정보를 전달하기 위한 BoardVO 를 생성한다.
private int no;
private String title;
private String writer;
private String content;
private int hit;
private int groupNo;
private Date regdate;
private String fileName;
12. 기존의 테이블에서 첨부파일 이름을 저장하기 위한 속성을 추가한다.
alter table board2
add filename varchar2(50)
13. BoardDao 클래스를 작성
dao 클래스는 single tone 으로 작성한다.
static 멤버변수로 자기 자신을 생성하고, static 함수를 통해 객체를 리턴해 주도록 작성한다.
14. BoardDao 에 ibatis 설정을 해 준다.
dao 패키지에 Board.xml 과 SqlMapConfig.xml 파일을 생성하고
Board.xml 에 쿼리문을 추가시켜준다.
<select id="list" resultClass="vo.BoardVO">
select no, title, writer, hit, groupNo, regdate
from board2
</select>
SqlMapConfig.xml 파일에 Connection Pool 설정을 해 준다.
<!-- Connection Pool 설정 -->
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/myoracle"/>
</dataSource>
</transactionManager>
dataSource type="JNDI" 으로 설정해 두명 ibatis 가 tomcat 에서 생성한 Connection Pool을 가져와서 사용한다.
그리고 쿼리를 실행할 mapper 파일을 설정해 준다.
<!-- mapper 파일 등록 -->
<sqlMap resource="dao/Board.xml"/>
15. BoardDao 클래스에서 쿼리를 실행할 메소드를 생성한다.
우선 sql 을 얻어오기 위해 SqlMapClient 객체를 얻어온다.
private SqlMapClient mapper;
private BoardDao() {
try{
Reader reader = Resources.getResourceAsReader("dao/SqlMapConfig.xml");
mapper = SqlMapClientBuilder.buildSqlMapClient(reader);
}catch(IOException e){
e.printStackTrace();
}
반환할 자료가 다수이기 때문에 queryForList() 메소드를 사용한다.
public List<BoardVO> getList() throws SQLException{
return mapper.queryForList("list");
}
16. action 패키지에 Action을 상속받는 ListAction 클래스를 만들고
excute() 메소드를 오버라이드 해 준다.
메소드 내부에서 BoardDao 객체를 얻어오고 getList() 메소드를 호출하여 리스트를 얻어온다.
그리고 request 의 어트리뷰트로 리스트를 세팅 하고
/WEB-INF/board/list.jsp 페이지로 포워드 한다.
17. list.jsp 에서 jstl 을 이용하여 넘어온 리스트를 화면에 그려주도록 한다.
jstl 을 사용하기 위해 taglib 를 추가시킨다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
다음과 같이 forEach 를 사용하여 리스트를 반복하여 그려준다.
<c:forEach var="board" items="${boardList}">
<!-------------그린게시판 첫번째줄시작 번호. 제목. 작성일. 조회------------>
<tr bgcolor="f7f7f7">
<td height="24" align="center">${board.no }</td>
<td><a href="freeboard_view.htm" class="purple_bbs">${board.title }</a></td>
<td align="center">${board.writer }</td>
<td align="center">${board.regdate }</td>
<td align="center">${board.hit }</td>
</tr>
<!-------------그린게시판 두번째줄시작 ----->
<tr bgcolor="e4e4e4">
<td height="1" colspan="5"></td>
</tr>
</c:forEach>
18. board-config.xml 에 다음과 같이 action-mapping 을 추가시켜준다.
<action-mappings>
<action path="/write" forward="/WEB-INF/board/write.jsp"></action>
<action path="/list" type="action.ListAction"></action>
</action-mappings>
ListAction.java
Board.xmlBoardDao.javaSqlMapConfig.xml
BoardVO.java
board-config.xml
struts-config.xml
web.xml
list.jsp
write.jsp
1. Dynamic Web project 생성(struts)
2. WEB-INF -> lib 에
struts,ibatis,JSTL 관련 jar 파일 복사
antlr-2.7.2.jar
commons-beanutils-1.8.0.jar
commons-chain-1.2.jar
commons-digester-1.8.jar
commons-fileupload-1.1.1.jar
commons-io-1.1.jar
commons-logging-1.0.4.jar
commons-validator-1.3.1.jar
oro-2.0.8.jar
struts-config.xml
struts-core-1.3.10.jar
struts-taglib-1.3.10.jar
struts-tiles-1.3.10.jar
ibatis.jar
jstl.jar
standard.jar
3. WEB-INF 에
struts-config.xml 생성(struts 설정 파일)
4. META-INF 에
context.xml 생성(connection pool 설정 파일)
5. WEB-INF의
web.xml에 struts 관련 설정 및
connection pool 설정
6. 패키지 및 jsp 파일용 폴더 생성
패키지 : action InsertAction, DeleteAction
dao BoardDao, ibatis 설정 파일(Board.xml SqlMapConfig.xml)
vo BoardVO
form BoardForm
폴더 : board list.jsp, write.jsp, ...
7. jsp -> action -> dao (or dao-> action -> jsp )
jsp , XXXAction 생성
Dao에 메소드 추가 순서로 작업
8. struts-config.xml 에
mapping 정보 추가
9. server Restart 다시 7번부터 반복
**실습
1. web-inf 에서 board 폴더를 만들고 write.jsp 파일을 생성한다.
(web-inf 폴더 아래 있는 jsp 파일은 url 입력으로는 절대 접근 불가능하다.)
2. lib에 board_config.xml을 추가한다.
3. web.xml에 다음과 같이 config 값을 바꿔준다.
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/board-config.xml</param-value>
</init-param>
4. board-config.xml에서 다음과 같이 action-mapping 를 추가하면 외부에서 접근할수 없는 페이지에 접근 가능하다.
<action-mappings>
<action path="/write" forward="/WEB-INF/board/write.jsp"></action>
</action-mappings>
http://localhost/struts/write.do
이런식으로 주소를 입력해주면 web-inf 내부에 있는 페이지로 이동되게 된다.
5. write.jsp 에 html 코드를 사용하여 화면을 만들어준다.
6. 또 글 목록을 보여주기 위한 list.jsp를 만들고 html 코드를 작성해 준다.
7. 기존의 프로젝트에 이미 struts 관련 라이브러리가 있기 때문에
jstl, ibatis 관련 라이브러리만 추가시켜준다.
apache-tomcat-6.0.18\webapps\examples\WEB-INF\lib
jstl.jar
standard.jar
ibatis-2.3.4.726\lib
ibatis-2.3.4.726.jar
8. META-INF 폴더에 context.xml 를 생성하고 connection pool 을 설정해 준다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Connection Pool 설정 파일 -->
<Context>
<Resource name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
username="scott" password="tiger" maxActive="20"
maxIdle="10" maxWait="-1"/>
</Context>
9. web.xml에서 자원참조 설정을 해준다.
<resource-ref>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
10. src 에서 패키지를 생성해준다.
action, form, dao, vo
11. 게시문의 정보를 전달하기 위한 BoardVO 를 생성한다.
private int no;
private String title;
private String writer;
private String content;
private int hit;
private int groupNo;
private Date regdate;
private String fileName;
12. 기존의 테이블에서 첨부파일 이름을 저장하기 위한 속성을 추가한다.
alter table board2
add filename varchar2(50)
13. BoardDao 클래스를 작성
dao 클래스는 single tone 으로 작성한다.
static 멤버변수로 자기 자신을 생성하고, static 함수를 통해 객체를 리턴해 주도록 작성한다.
14. BoardDao 에 ibatis 설정을 해 준다.
dao 패키지에 Board.xml 과 SqlMapConfig.xml 파일을 생성하고
Board.xml 에 쿼리문을 추가시켜준다.
<select id="list" resultClass="vo.BoardVO">
select no, title, writer, hit, groupNo, regdate
from board2
</select>
SqlMapConfig.xml 파일에 Connection Pool 설정을 해 준다.
<!-- Connection Pool 설정 -->
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/myoracle"/>
</dataSource>
</transactionManager>
dataSource type="JNDI" 으로 설정해 두명 ibatis 가 tomcat 에서 생성한 Connection Pool을 가져와서 사용한다.
그리고 쿼리를 실행할 mapper 파일을 설정해 준다.
<!-- mapper 파일 등록 -->
<sqlMap resource="dao/Board.xml"/>
15. BoardDao 클래스에서 쿼리를 실행할 메소드를 생성한다.
우선 sql 을 얻어오기 위해 SqlMapClient 객체를 얻어온다.
private SqlMapClient mapper;
private BoardDao() {
try{
Reader reader = Resources.getResourceAsReader("dao/SqlMapConfig.xml");
mapper = SqlMapClientBuilder.buildSqlMapClient(reader);
}catch(IOException e){
e.printStackTrace();
}
반환할 자료가 다수이기 때문에 queryForList() 메소드를 사용한다.
public List<BoardVO> getList() throws SQLException{
return mapper.queryForList("list");
}
16. action 패키지에 Action을 상속받는 ListAction 클래스를 만들고
excute() 메소드를 오버라이드 해 준다.
메소드 내부에서 BoardDao 객체를 얻어오고 getList() 메소드를 호출하여 리스트를 얻어온다.
그리고 request 의 어트리뷰트로 리스트를 세팅 하고
/WEB-INF/board/list.jsp 페이지로 포워드 한다.
17. list.jsp 에서 jstl 을 이용하여 넘어온 리스트를 화면에 그려주도록 한다.
jstl 을 사용하기 위해 taglib 를 추가시킨다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
다음과 같이 forEach 를 사용하여 리스트를 반복하여 그려준다.
<c:forEach var="board" items="${boardList}">
<!-------------그린게시판 첫번째줄시작 번호. 제목. 작성일. 조회------------>
<tr bgcolor="f7f7f7">
<td height="24" align="center">${board.no }</td>
<td><a href="freeboard_view.htm" class="purple_bbs">${board.title }</a></td>
<td align="center">${board.writer }</td>
<td align="center">${board.regdate }</td>
<td align="center">${board.hit }</td>
</tr>
<!-------------그린게시판 두번째줄시작 ----->
<tr bgcolor="e4e4e4">
<td height="1" colspan="5"></td>
</tr>
</c:forEach>
18. board-config.xml 에 다음과 같이 action-mapping 을 추가시켜준다.
<action-mappings>
<action path="/write" forward="/WEB-INF/board/write.jsp"></action>
<action path="/list" type="action.ListAction"></action>
</action-mappings>
ListAction.java
Board.xmlBoardDao.javaSqlMapConfig.xml
BoardVO.java
board-config.xml
struts-config.xml
web.xml
list.jsp
write.jsp