본문 바로가기
IT/Struts2

chain result (체인리절트) 활용하기 - 2편

by Jeami 2013. 7. 25.
반응형


스트럿츠2





지난 시간에 이어서 체인 리절트를 이용한 액션 체인 연결에 대해 공부해보도록 하겠습니다.

처음 이 페이지를 보는 분은 "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="보내기">  &nbsp;

<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>



**** 에러사항 및 질문은 댓글에 남겨주세요. 감사합니다. ****



반응형

loading