아무튼 개발
article thumbnail
반응형

 

 

오늘은 Struts에 대해 설명하겠다.

Struts1을 배우고 이후에 Struts2까지 배울 예정이다.

 

 

Struts 셋팅
  • 다운로드

먼저 하단의 사이트에서 struts-1.3.10-all 파일을 다운받아준다.

 

https://struts.apache.org/download.cgi#struts2529

 

Download a Release

 

struts.apache.org

 

 

다이나믹웹프로젝트에서 파일명을 Struts로 하여 만들어주고

WebContent 속에 WEB-INF를 만들은 후

알집의 내용을 폴더 내 lib(라이브러리)로 넣어준다.

 

 

  • XML 파일

WEB-INF 파일에는

이렇게 총 3개의 파일을 만들 예정이다.

 

  • struts-config.xml

공용적인 파일 세팅이다.

전체 파일에 대한 것이며 각각의 프로젝트에 대한 각각의 기능을 환경하기 위해서는

밑의 struts-config_temp.xml과 같이 입력해주면 된다.

 

  • struts-config_temp.xml

_temp와 같이 각각의 기능에 대해 파일을 만들어서

원하는대로 입력해주면 된다.

 

하단의 예제를 통해 다시 설명하겠다!

 

  • web.xml

서블릿을 입력할 때와 같다.

url-pattern의 *.do는 확장자를 의미한다. 

.do로 끝나면 action으로 가서 문법 검사 이후에 <param-value>에 있는 파일들을 실행해준다.

 

특히 주의할 점은 xml파일을 만들 때마다 추가해줘야 한다.

 

 

이렇게해서 Struts의 초기 셋팅에 대해 알아보았다.

 


 

게시판 예제

 

기존에 만들었던 게시판 코딩을 활용하여 Struts로 만들어보겠다.

지난 글들을 참고하여 자세한 코딩을 확인하면 좋을 것 같다.

이번에는 게시판보다는 Struts 문법 위주로 설명하겠다.

 

BoardForm.java

 

Form은 Struts의 dto라고 할 수 있다.

사용할 변수들과 게터, 세터를 입력해준다.

 

ActionForm을 상속해줌으로써 BoardForm을 관리한다.

 

 

BoardAction.java

Action은 Struts의 서블릿이라고 할 수 있다.

메소드를 구분하여 각각의 기능에 따라 사용자 정의대로 호출한다.

 

public class BoardAction extends DispatchAction{

	public ActionForward write(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
			throws Exception {		
		return mapping.findForward("created");		
	}
	
	public ActionForward write_ok(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
			throws Exception { 		
		Connection conn = DBConn.getConnection(); 
		BoardDAO dao = new BoardDAO(conn);
		
		BoardForm f = (BoardForm)form;
		
		f.setNum(dao.getMaxNum() + 1);
		f.setIpAddr(request.getRemoteAddr());

		dao.insertData(f);		
		
		return mapping.findForward("save");
	}

 

DispatchAction을 먼저 상속해준다.

기존에 서블릿에서 웹페이지 url을 if/else if로 구분하면 시간이 더욱 걸린다는 점을 보완하여

각각의 메소드를 호출할 것이다.

 

ActionForward메소드에서 ActionForm은 BoardForm의 데이터 내용을 가져오는 기능을 한다.

mapping.findForward의 괄호 속 내용으로 각각의 메소드를 구분할 것이다.

괄호 속 문자를 밑에 나올 xml 파일로 보내준다.

 

write_ok의 경우에는 기존에 블로그에도 작성했던 BoardDAO 파일을 그대로 가져와 DB와 연결을 해주었다.

form은 데이터를 가져오기 위해 입력하였으며 ActionForm의 form은 오브젝트로 넘어오기 때문에 다운캐스팅하였다.

 

 

struts-config_board.xml

이 곳에선 웹페이지의 모든 경로들을 다 담는다.

 

<struts-config>

	<form-beans>
		<form-bean name="boardForm" type="com.board.BoardForm"/>
	</form-beans>
	
	<action-mappings>
		<action path="/board" type="com.board.BoardAction" name="boardForm" scope="request" parameter="method">
			<forward name="created" path="/board/created.jsp"/>
			<forward name="save" redirect="true" path="/board.do?method=list"/>
			<forward name="list" path="/board/list.jsp"/>
			<forward name="article" path="/board/article.jsp"/>
			<forward name="updated" path="/board/updated.jsp"/>			
		</action>
	</action-mappings>
    
</struts-config>

 

  • <action-mappings>

먼저 path에는 .do를 입력해주면 안된다. 이미 xml파일에서 *.do를 입력해주었기 때문에 중복된다.

type과 name에는 데이터를 받기 위한 파일을 입력해주며, 위에 form-beans에서 객체 생성을 해준다.

데이터가 3개면 3개를 가져오게 된다.

 

scope에서 request는 많은 사람들이 객체 생성을 해도 겹치지 않도록 한다. 범위가 1:1이다.

메소드를 구분하기 위함이기에 parameter로 받을 것이며 받는 변수명은 method로 하였다.

 

  • <forward>

action파일에서 넘어온 메소드들을 판별한다.

name에 입력된 값에 따라 path로 연결해주며

insert,update,delete가 있을 경우 redirect를 해준다.

 

 

 


struts의 기본적인 문법과 세팅 방법을 알아보았다.

게시판 만들기 코딩도 다시 한번 살펴보면서 함께 활용할 수 있게 되었다.

 

 

3월 7일 수업 🌖
반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...