struts2 리절트(result) – 동적
result
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)
요청정보 또는 세션의 사용자 정보에 의해 result 페이지를 동적으로 변경해야 하는 경우 또는
Action에서 result 결과 페이지를 임의로 설정하고 싶은 경우가 있다. Struts2에서는 struts.xml에서 Action의 Property를 읽는 것이 가능하다. (EL 사용)
이전 로그인 예제를 변경하여 동적으로 result를 생성해 보자.
Struts.xml에서 Action의
Property인 id 값을 동적으로 읽어내고 이 값을
login_ok.jsp로 parameter로 넘겨
login_ok.jsp에서 id 값을 출력하는 예제이다. 만약 result의 type이
dispatcher인 경우라면 login_ok.jsp로
parameter로 넘길 필요 없이 Action Property 값은 JSP에서 출력이 가능하다. (dispatcher인 경우 forward로 전달된다) 하지만 본 예제에서는 result의 type을
redirect로 하였기 때문에 새로운 request 객체가 생성되어 정상적인
경우라면 login_ok.jsp에서는 id 값을 알아낼
방법이 없다.
1.
LoginAction.java
package login.action;
import login.dao.LoginDAO;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action {
String id;
String pwd;
public String execute() throws Exception {
LoginDAO dao = new LoginDAO();
if (dao.loginChk(id, pwd)) {
return
SUCCESS;
}
else {
return
LOGIN;
}
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
2.
LoginDAO.java
package login.dao;
public class LoginDAO {
public boolean loginChk(String id, String pwd)
{
//DB연결 후 넘어오는 사용자
정보를 가지고 로그인 체크
//본 예제에서는 id가 test이면 로그인 성공
if ("test".equals(id)) {
return
true;
}
else {
return
false;
}
}
}
3. /login/login.jsp ,
/login/login_ok.jsp
[login.jsp]
<%@ page pageEncoding="euc-kr" %>
<html>
<body>
<form
action="login.action">
아이디 : <input type="text"
name="id"/><br>
비밀번호 : <input type="text"
name="pwd"/>
<input
type="submit"/>
</form>
</body>
</html>
[login_ok.jsp]
<%@ page pageEncoding="euc-kr" %>
${param.id}님 환영합니다.
4.
/WEB-INF/src/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="struts2"
extends="struts-default">
<action name="login"
class="login.action.LoginAction">
<interceptor-ref name="params"/>
<result
name="success"
type="redirect">/login/login_ok.jsp?id=${id}</result>
<result
name="login">/login/login.jsp</result>
</action>
</package>
</struts>
5. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
6. 결과확인
http://localhost:8080/result/login/login.jsp
댓글 없음:
댓글 쓰기