특별한딸기이야기
예외처리(선언적인 방법) 본문
교재에 나와있는 예제는 이해하기 힘드므로 과제로 나온 로그인을 가지고 설명
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="login_form" type="com.tistory.special0strawberry.Login_Form"/>
</form-beans>
<global-exceptions>
<exception type="com.tistory.special0strawberry.Login_Process_Exception" key="errors.member.iderror"
scope="request" path="/login.do" />
</global-exceptions>
<global-forwards>
<forward name="success" path="/index.do" module="" redirect="true"/>
</global-forwards>
<action-mappings>
<action path="/index" forward="/index.jsp"/>
<action path="/login" forward="/Login/login_form.jsp"/>
<action path="/login_process" type="com.tistory.special0strawberry.Login_Process_Action" name="login_form"
scope="request" validate="false">
<forward name="fail" path="/login.do"/>
</action>
</action-mappings>
<message-resources parameter="MessageResources"/>
</struts-config>
<!-- 위 부분에서 보아야 할 부분은 global-excpetions이다. 예외가 발생하면 그 예외가 global-exception에서 체크 되고 그에 맞는 키를 찾는다. 키 값을 어디서 찾는가 하면 메세지리소스라는 프로퍼티 파일에서 찾게 되는데 이 프로퍼티 파일은 맨 마지막 부분에 보면 나와있다. 파일 위치는 소스 디렉토리이다. 그럼 찾아온 키 값을 어디서 뿌려주는 가하면 예외 선언한 마지막에 보면 path가 나와 있다. 그 경로로 찾아가게 된다. -->
Login_Process_Action class
package com.tistory.special0strawberry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class Login_Process_Action extends Action
{
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
Login_Form login_information = (Login_Form)form;
Member_Service member = new Member_Service();
int result = 0;
ActionErrors errors = new ActionErrors();
result = member.Login(login_information.getId(), login_information.getPassword());
if(result == 1) //success
{
return mapping.findForward("success");
}
else if(result == 0) // id error
{
throw new Login_Process_Exception();
}
else if(result == -1) // password error
{
errors.add("password", new ActionMessage("password 입력이 이상합니다.", false));
}
else
{
errors.add("unknown", new ActionMessage("알 수 없는 error발생", false));
}
this.saveErrors(request, errors);
return mapping.findForward("fail");
}
}
/* 여기서는 로그인 폼에서 넘어온 액션폼의 값을 받아서 로그인 처리하는 모습이다. 멤버의 로그인은 결과값으로 성공, 아이디에러, 패스워드 에러에 해당하는 값을 반환한다. 소스 밑 부분에 보면 그 결과값에 따른 처리가 if문으로 되어있다. 여기서 눈여겨 봐야 할 부분은 아이디에러 부분, 이 부분은 글로벌 에러로 넘어가게 된다. 패스워드 부분은 프로그래밍적 에러 처리 부분이다.*/
login_form.jsp
<%@
page contentType="text/html;charset=euc-kr"
%>
<%@
page import="org.apache.struts.action.*"
%>
<%@
page import="java.util.*"
%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html>
<head>
<title>
로그인 정보 입력 페이지 입니다.
</title>
</head>
<body>
<html:errors property="errors.member.iderror"/>
<html:errors property="password"/>
<br/>
<form method="post" action="/Struts_Login/login_process.do">
ID :
<input type="text" name="id"/>
<br/>
Password :
<input type="text" name="password"/>
<br/>
<input type="submit" value="확인"/>
</form>
</body>
</html>
<!-- 교재에 나와있는 함수 썼다가 스트레스 엄청 받았다. 강사에게 물어서 해결한 부분이 바로 태그라이브러리 사용법 소스코드가 조금 내 마음에 들지는 않지만 그래도 에러 표시하는데 간단히 사용하게 되니 좋은 것 같다. 나중에 태그 라이브러리를 다시 보게 되면 잘 살펴봐야 겠다는 생각이 든다. -->
'딸기 공부방 > struts and spring' 카테고리의 다른 글
학원 과제 (0) | 2008.11.17 |
---|---|
struts 게시판 참조 블로그 (0) | 2008.11.14 |
예외처리(프로그램적인 방법) (0) | 2008.11.13 |
struts 에러처리에 유용한 plug-in (0) | 2008.11.12 |
View 영역으로 포워딩(Global 포워딩) (0) | 2008.11.12 |