|
SSISO Community검색 |
|
SSISO Community메뉴 |
|
SSISO Community카페 |
|
블로그 카테고리 |
|
|
struts-config.xml로 검색한 결과 |
|
등록일:2008-03-16 00:36:04 작성자: 제목:Struts에서 ActionForm 사용하기 |
|
ActionForm의 역할
• HTML 폼("<input type='text' name='phone'/>" 형식)으로 부터 받은 입력은 ActionForm 빈으로 전달
되고(ActionForm 객체에 대해 setPhone(request.getAttribute(“phone”) 과 같은 호출이 일어난다), 프
라퍼티(파라미터)에 대한 검증이 끝나면 폼으로 부터 받은 입력 값을 잘 정돈된 자바빈 데이타로 만들어
Action 에 전달한다.
• 주의: ActionForm 객체를 직접 이용해서 작업을 수행(비지니스 프로세스 수행 - 모델 부분)을 해서는 안
된다! - 모델 부분은 컨트롤러와 뷰와 완전히 분리된 상태로 작성해야 한다. ActionForm은 컨트롤러에 속
한다.
• ActionForm 을 구현하려면..
• org.apache.struts.action.ActionForm 클래스를 상속 받아야 한다.
• 각 프라터티는 HTML Form의 Input의 name과(<input name=””/>) 같은 이름을 가져야 한다.
• 각 프라퍼티별로 Setter와 Getter가 있으면 된다. Setter와 Getter가 꼭 둘 다 있을 필요는 없다.
• 각 프라퍼티는 되도록 String 과 boolean 형으로 만든다. 잘못 입력한 데이터를 다시 사용자의 입력화면
에 보여주려면 잘 못 입력한 데이타가 String 으로 보전되어 있어야 하기 때문이다. ActionForm의 프라퍼
티를 int 등의 형으로 만들면 사용자가 잘못 입력한 데이터 중에서 숫자가 아닌 부분이 모두 사라지게 되
기 때문에 무엇을 어떻게 잘 못 입력했는지 알 수 없게 된다.
• 각 프라퍼티들을 ActionForm 객체에 채우기 전에 먼저 초기화 작업을 거치고 싶다면 “public void reset
(ActionMapping mapping, HttpServletRequest request)” 메소드를 구현해야 한다.
• 파라미터 값을 ActionForm에서 Action으로 전달하기 전에 유효성 검증 과정을 거치려면 “public
ActionErrors validate(ActionMapping mapping, HttpServletRequest request)” 메소드를 구현해야 한
다. (ActionErrors를 리턴한다는 것 주의)
• struts-config.xml에 다음과 같은 부분을 추가하여, ActionForm을 등록한다. 등록된 ActionForm은 여러
Action에서 사용될 수도 있다.
ex)
<struts-config>
<form-beans>
<form-beans name="폼의이름" type="myproject.form.FormClass"/>
</form-beans>
</struts-config>
• ActionMessages의 역활
ActionMessages의 역활은 기본적으로 컨트롤러(그중에서도 ActionForm과 Action)에서 수행도중 발생한 오류나 기타 메시지들을
저장한후 뷰 단에서 보여 줄 수 있도록 하는 역활을 한다.
이제, ActionForm과 ActionMessages를 기본적으로 사용한 얘제를 보여준다. 사용자가 넘긴 username과 password 파라미터가
빈 값이거나 공백등을 포함한다면 ActionForm에서 오류가 발생하여 다시 로그인 폼으로 돌아가서 잘못된 부분에 대한 에러 메시지
를 출력하는 예제이다.
또한 로그아웃 기능을 포함하고, 로그인 폼은 POST방식으로 전달되도록 하며, 몇몇 JSP 페이지들은 Action이 불필요하더라도
모든 JSP가 스트럿츠 컨트롤러를 통해 보여질 수 있도록 설정한 예제이다.
• WEB-INF/config/struts-config.xml을 다음과 같이 작성한다.
ex)
<?xml version="1.0" encoding="UTF-8" ?>
<struts-config>
<form-beans> <!-- Login2를 위한 ActionForm 설정 -->
<form-bean name="login2Form" type="strutsguide.forms.Login2Form"></form-bean>
</form-beans>
<global-forwards> <!-- Login2 의 로그인 폼 화면으로 이동하기 위한 global forward -->
<forward name="login2Form" path="/login2/loginForm.do" redirect="true" />
</global-forwards>
<action-mappings>
<action path="/Welcome" forward="/Welcome.jsp" />
<!-- // Login2를 위한 Action Mapping 시작 -->
<!-- 로그인 폼 화면 출력 액션 -->
<action path="/login2/loginForm" forward="/login2/loginForm.jsp" />
<!-- 로그인을 수행하는 액션 -->
<action path="/login2/login" type="strutsguide.actions.Login2Action" name="login2Form"
validate="true" scope="request" input="/login2/loginForm.jsp">
</action>
<!-- 로그 아웃 수행 액션 -->
<action path="/login2/logout" type="strutsguide.actions.LogoutAction" />
<!-- // Login2 를 위한 Action Mapping 끝 -->
<action path="/login1/logInForm" forward="/login1/logInForm.jsp" />
<action path="/login1/logIn" type="strutsguide.actions.Login1Action" validate="false">
<forward name="success" path="/login1/logInSuccess.jsp" redirect="true" />
<forward name="fail" path="/login1/logInFail.jsp" />
</action>
</action-mappings>
<!--
login2에서 메시지 출력에 사용할 프라퍼티 파일.
strutsguide.resource 패키지의 application.properties 파일임을 의미한다.
-->
<message-resources parameter="strutsguide.resources.application" />
</struts-config>
• loginForm.jsp 다음과 같이 작성
<%@page contentType="text/html; charset=euc-kr"%>
<%@taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html"%>
<%@taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic"%>
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>로그인 폼</title>
</head>
<body>
<h1>로그인 폼</h1>
<logic:present name="userInfo" scope="session">
<%-- session 스코프에 "userInfo" 라는 Attribute가 존재하면 이 부분이 실행된다. --%>
<b>이미 로그인 하셨습니다.</b><br />
로그인한 사용자명 : <bean:write name="userInfo" property="userName" scope="session"/><br />
전화번호 : <bean:write name="userInfo" property="phone" scope="session"/><br />
이메일 : <bean:write name="userInfo" property="email" scope="session"/><br />
<html:link action="/login2/logout">로그아웃하기</html:link>
</logic:present>
<logic:notPresent name="userInfo" scope="session">
<-- session 스코프에 "userInfo"라는 Attribute가 존재하지 않으면 이 부분이 실행된다.--%>
<b>로그인 하십시오.</b><br/>
</logic:notPresent>
<!-- 폼의 데이터를 "login.do"로 전송한다. -->
<html:form action="/login2/login" method="POST" focus="username">
<html:messages id="msg" message="true">
<%--
ActionMessages.GLOBAL_MESSAGE 키로 저장된 ActionMessage 객체가 없다면 이 부분은 실행되지 않는다.
--%>
<b><bean:write name="msg"/></b> <br />
</html:messages>
Username : <html:text property="username"/>
<html:messages id="msg" property="invalidUsernameError">
<%--invalidUsernameError 라는 키로 저장된 ActionMessage 객체가 없다면 이 부분은 실행되지 않는다. --%>
<b><bean:write name="msg"/></b>
</html:messages>
<br />
Password : <html:password property="password" redisplay="false"/>
<html:messages id="msg" property="invalidPasswordError">
<%-- invalidPasswordError 라는 키로 저장된 ActionMessage 객체가 없다면 이 부분은 실행되지 않는다. --%>
<b><bean:write name="msg"/></b>
</html:messages>
<br />
<html:submit value="로그인"/> <html:reset value="초기화" />
</html:form>
</body>
</html:html>
[출처] [본문스크랩] Struts에서 ActionForm 사용하기|작성자 어린양이
http://blog.naver.com/dlckdeo81/41814127 |
|
|
|
|
|