지난 시간에 이어서 체인 리절트를 이용한 액션 체인 연결에 대해 공부해보도록 하겠습니다.
처음 이 페이지를 보는 분은 "1편"을 먼저 참고해주세요^^
이번 프로젝트를 통해 배워 볼 핵심은, 회원 등록 페이지가 성공적으로 진행되었다면(결과값이 잘 나왔다면) 자동으로 다음 액션인 로그인이 이어질 수 있도록 만들어보는 것입니다.
당연한 과정이겠죠? 스트럿츠2에서는 체인 리절트 라는 것을 이용해서 이 작업을 진행합니다.
|-- 처음 회원가입 페이지를 출력할 액션
|-- 회원가입 정보를 저장할 액션
|-- 로그인 정보를 조회할 액션
이렇게 나뉠 수 있겠고, 회원가입 페이지를 통해 가입이 정상적으로 진행된 후 화면에 출력될 메시지는
"회원가입이 완료되었습니다."라는 메시지와 " 아무개 로 로그인 하였습니다." 라는 메시지가 되겠습니다.
따라서 두 메시지의 액션 진행이 필요하고 그 연결을 자동으로 해주도록 체인설정 해주는 것이 목적이겠네요.
두 액션 파일명은 "UserRegAction", "LoginAction" 입니다.
바로 코딩을 하면서 알아보도록 할게요
많은 사람과 공유할 수 있도록, 로그인 필요없는 추천 한번 부탁드릴게요^^
양질의 정보로 보답할게요~
web.xml (필터 디스패쳐 등록)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Web0922</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 여기에 코드기술하세요 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
UserRegAction.java
action 패키지에 UserRegAction .java 클래스의 액션파일을 생성해주는데, ActionSupport 를 extends 하도록 합니다.
package action;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class UserRegAction extends ActionSupport{
/* 사용할 프로퍼티 변수 설정 후,
* 이클립스에서 |-- 마우스 오른쪽 버튼클릭
* |-- source
* |-- Generate getters and setters
* |-- selectall
* |-- 확인
* 자동으로 getter/setter 메소드가 생성됩니다.
* private 변수로 생성했기 때문에 반드시 메소드로 값 입력과 출력을 할 수 있습니다.
*/
private String Id;
private String Pass;
private String Name;
private String Msg;
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getPass() {
return Pass;
}
public void setPass(String pass) {
Pass = pass;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getMsg() {
return Msg;
}
public void setMsg(String msg) {
Msg = msg;
}
//디폴트 실행 메소드 execute() 생성해줍니다.
public String execute() throws Exception{
Msg = Id + " 님의 회원가입이 정상적으로 이루어졌습니다.";
return SUCCESS;
}//end
} //class End
LoginAction.java
action 패키지 아래에 LoginAction.java 파일 생성(Action 인터페이스를 상속받는다)
package action;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action{
private String Id;
private String Pass;
private String Name;
private String Msg;
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getPass() {
return Pass;
}
public void setPass(String pass) {
Pass = pass;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getMsg() {
return Msg;
}
public void setMsg(String msg) {
Msg = msg;
}
//디폴트 실행 메소드 execute() 생성해줍니다.
public String execute() throws Exception{
if(Msg==null){
Msg="";
}else{
Msg=Msg;
}//if end
Msg += Id + "로 로그인 하셨습니다.";
return SUCCESS;
}//end
}//class END
userRegForm.jsp(회원가입 페이지)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<html>
<head><title>[userRegForm.jsp]</title></head>
<body>
<h1>[userRegForm.jsp]</h1>
<form action="UserRegAction.action">
<table border=1>
<tr>
<td bgcolor=skyblue><b>아이디:</b> </td>
<td> <input type=text name="userId" value="${userId}"> </td>
</tr>
<tr>
<td bgcolor=skyblue><b>비밀번:</b> </td>
<td> <input type=text name="userPW" value="${userPW}"> </td>
</tr>
<tr>
<td bgcolor=skyblue><b>이 름:</b> </td>
<td> <input type=text name="userName" value="${userName}"> </td>
</tr>
<tr>
<td colspan=3 align="center">
<input type="submit" value="보내기">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</body>
</html>
userRegSuccess.jsp
( UserRegAction 실행 후 이어서 LoginAction 까지 자동실행 된 결과 페이지)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<html>
<head><title>[userRegSuccess.jsp]</title></head>
<body>
<h1>[userRegSuccess.jsp]</h1>
<b><font color=blue size=6>회원가입 성공</font></b><br>
<h1>
아이디: ${Id} <br>
비밀번: ${Pass} <br>
이 름: ${Name} <br>
${Msg}<br>
</h1>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="Web0724" extends="struts-default">
<action name="UserRegForm">
<result>/jsp/userRegForm.jsp</result>
</action>
<action name="UserRegLoginAction" class="action.UserRegAction">
<interceptor-ref name="params" />
<result name="success" type="chain" >
<param name="actionName">LoginAction</param>
<param name="namespace">/Web0724</param>
</result>
</action>
<action name="LoginAction" class="action.LoginAction">
<interceptor-ref name="chain" />
<interceptor-ref name="params" />
<result name="success">/jsp/userRegSuccess.jsp</result>
</action>
</package>
</struts>
**** 에러사항 및 질문은 댓글에 남겨주세요. 감사합니다. ****
'IT > Struts2' 카테고리의 다른 글
OGNL ( Object Graph Navigation Language ) (0) | 2013.07.29 |
---|---|
스트럿츠2 태그 - 로그인 처리 (0) | 2013.07.29 |
chain result (체인리절트) 활용하기 - 1편 (0) | 2013.07.25 |
스트럿츠2 한글 에러 발생 처리 (0) | 2013.07.25 |
ActionSupport 클래스를 이용한 action (0) | 2013.07.25 |