연습문제: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>
<?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>
<%@ 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>
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 |