연습문제:image.action=>

랜덤한 이미지가 화면에 나오도록 만들기

- 이미지는 root/image/폴더안에 넣으세요

- 예: image/image1.jpg, image/image2.jpg

- jsp 파일: <img src="./image/image1.jpg">


↓↓↓↓↓↓↓↓↓


1. www.localhost:8080/프로젝트명/Image.action

2. /* -> struts2 -> org.apache.struts2.dispatcher.FilterDispatcher 실행

3. struts.xml 파일을 찾아서 Image라는 네임의 액션을 찾는다

4. 그 액션에 class 속성이 있다면

4-1. 클래스의 객체를 하나 생성한다

4-2. 객체.execute(); 실행한다 

5. 그 액션에 class속성과 method 속성이 있다면 method를 실행한다.

6. return "success" 라면

<result name="success"> /~~.jsp 보여준다 </result>

7. return "false" 라면

<result name="false"> /~~.jsp 보여준다 </result>



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>
	
	<!--  파일 포함시키기
	     struts-default.xml은 자동으로 포함됩니다-->
	<include file="struts_study.xml"></include> 
	
	
	<!--  tutorial이라는 패키지명을 default로 셋팅 
		   www / index.html /  tutorial 이 모두 default 	 -->
    <package name="tutorial" extends="struts-default">
    
    	<!--  요청할때 http://localhost:8080/s1.Hello/HelloWorld.action
    	                    ip / port /프로젝트명/패키지명/액션네임.action 
    		     http://localhost:8080/s1.Hello/tutorial/HelloWorld.action    	
    	-->
    	
    	<!--    HelloWorld.action 이라는 요청이 오면 
    	         tutorial.HelloWorld클래스 실행하고
    		     return이 success 라면 root/helloWorld.jsp를 사용자에게 보여준다 
    	 -->
    	 
    	 <!--  class="..안의 execute()를 실행해라  "  
    	 		execute()메서드를 실행하기 위해서는 객체를 생성해야만 하는데
    	 		그 객체생성작업을 struts가 합니다. 
    	 		1. new HelloWorld().execute();
    	 		2. String message = "Hello, World~~~~~~~! <hr/> hi"; 
    	 		3. => success 리턴 
    	 		4. 결과가(즉 리턴이) "success"라면 
    	 		5. helloWorld.jsp를 보여줘 
    	  -->
        <action name="HelloWorld" class="tutorial.HelloWorld"  
             method="myTest">          
            <result name="success">/helloWorld.jsp</result>
        </action>
        
      <!-- 이미지 랜덤 호출 -->
      <action name="Image" class="tutorial.ImageSelect" method="select">
          <result name="succ">/DefaultAction.jsp</result>
          <result name="fail">/study.jsp</result>
      </action>   
      
        	<!--  
        		jsp의 mvc모델에서는 컨트롤러 역활을 java 클래스가 하는데에 비해
                struts2 에서는 컨트롤러 역활을 struts.xml 이 합니다.     
               	구조는 동일     
       		-->
        
                                              
    </package>
    
    <!--  기본 페이지를 설정할 때 package를 따로 잡자 -->
	<package name="def" extends="struts-default">
	
	  <!--  default-action-ref 기본 페이지를 ~ 무엇으로 하겠다  -->           
      <default-action-ref name="DefaultAction"  />         
      
      <!-- 기본 페이지 요청이 왔을 때 실행할 class와 보여줄 page -->
      <action name="DefaultAction" class="tutorial.DefaultAction"> 
        	<result>/DefaultAction.jsp</result>
      </action>
      
                                   
   </package>
</struts>


DefaultAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	DefaultAction page <br />
	기본 페이지 ${message}<br />
	<img src="${imgsrc }"><br/>
</body>
</html>


ImageSelect.java
package tutorial;

import java.util.Random;

public class ImageSelect {
	
	String imgsrc;
	
	public ImageSelect(){
		System.out.println("ImageSelect 객체 실행중");
	}
	
	public String getImgsrc() {
		System.out.println("getter 메서드 실행중");
		return imgsrc;
	}
	
	public String select(){
		
		System.out.println("select 명령 실행중");
		int i =new Random().nextInt(4);//1,2,3,4
		imgsrc="./image/image"+i+".png";
		
		return "succ";
		//return "fail";
	}
	
}


※ 리턴 값을 succ로 하면 <result name="succ">/DefaultAction.jsp</result> 화면이 뜨고,

    리턴 값을 fail로 주면 <result name="fail">/study.jsp</result> 화면으로 실행된다.




'Struts2 > 2012.04월 강좌(MySQL)' 카테고리의 다른 글

1일차 한글 깨짐 현상  (0) 2012.06.04
1일차 form  (0) 2012.06.04
1일차 기본 페이지 설정 및 요청  (0) 2012.06.04
1일차 파일 포함시키기  (0) 2012.06.04
1일차 struts  (0) 2012.06.04

+ Recent posts