학원/JSP

11/23 49-8 [JSP] Action Tag(DynamicPage)

도원결의 2022. 11. 24. 19:40

계절에 따라서 화면구성이 달라지게 하는 동적인 액션태그로 화면을 구성하기 !

 

계절에따라 구현할 페이지를 먼저 만들어 보자

 

1.봄

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!-- Spring.jsp -->
<div style="background-color:green;color:yellow;width:100%;height:200px;" class="d-flex justify-content-center align-items-center">

<h2>화창한 봄 입니다.</h2>

</div>

2. 여름

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <!-- Summer.jsp -->
<div style="background-color:red;color:blue;width:100%;height:200px;" class="d-flex justify-content-center align-items-center">

<h2>더운 여름입니다.</h2>

</div>

 

3.가을

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <!-- Autumn.jsp -->
<div style="background-color:gray;color:black;width:100%;height:200px;" class="d-flex justify-content-center align-items-center">

<h2>스산한 가을 입니다.</h2>

</div>

4.겨울

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <!-- Winter.jsp -->
<div style="background-color:black;color:white;width:100%;height:200px;" class="d-flex justify-content-center align-items-center">

<h2>추운겨울입니다.</h2>

</div>

 

 

5.최종 구현 될 페이지

DynamicPage.jsp

바로적용하기 전

페이지를 선택해서 동적으로 페이지를 삽입하는 법

	<form>
    	<div class="form-group">			
		<select name="pageName" class="custom-select mt-3 custom-select-lg">
			<option value="">페이지를 선택하세요</option>
			<option value="DirectivePage.jsp">DirectivePage.jsp</option>
			<option value="ActionTagPage.jsp">ActiontagPage.jsp</option>					
		</select>
		</div>
    	<input type="submit" value="확인" class="btn btn-info"/>
    </form>
 
 <%
 	//위는 폼이고 밑에서 코드로 작성!
    
    Stirng pageName = request.getParameter("pageName");
    if(pageNAme !=null && pageName.length() !=0 ) {
%>    
  	<jsp:include page="<%=pageName %>" />      
<%   
     }
%>

페이지 선택 전

저 리퀘스트에 null 이 헷깔려서 test해 봤는데 

페이지에서 변수 저장한게 없어서 null 인거임

만약에 페이지에 변수를

 

<%

 페이지명 변수에 저장
String directivePath="DirectivePage.jsp";
String actionPath="ActionTagPage.jsp";
페이지 및 리퀘스트 영역에 속성저장
pageContext.setAttribute("pageVar","페이지영역 입니다.");
request.setAttribute("requestVar","리퀘스트영역 입니다.");

%>

 

이렇게 저장해 놓는다면 

둘 다 리퀘스트 객체는 null 이 아닌

리퀘스트영역 입니다

가 잘 출력 됨 ! 어휴 놀래라

 

이제 진짜 

[계절에 따른 페이지 변환]

계절용은 위에서 코드 작성 했고 중요한 구현하는 코드작성!

*** 계절은 월단위로 구분되니까 캘린더 메소드를 써도 되고 

    나는 simpeldateformat 를 쓸거임

내가 간과한거...

어차피 월만 나올거라 생각해서 타입을 완전 무시한 것 같다

simpeldateformat로 변환되는 타입은 String 임!! 근데 곧 사용할 switch 문에는 Int 타입을 넣어 줘야했는데

그냥 string을 넣어서 오류가 났었음...

아.... 선생님한테 안털린게 다행이다 싶었음...

<% 
    		String season;
  
    		 SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
    	  	 String dateString = dateFormat.format(new Date());   	
             
        /*   켈린더 쓸 땐 이렇게 !
        	 Calendar cal = Calendar.getInstance();
   			 switch(cal.get(Calendar.MONTH)+1){   */
        
    		switch(Integer.parseInt(dateString)){  //String을 Int로 변환해야 함 !  		
    			case 3: 
    			case 4:
    			case 5:season="Spring.jsp"; break;    		
    			case 6:
    			case 7:
    			case 8:season="Summer.jsp"; break;
    			case 9:
    			case 10:
    			case 11:season="Autumn.jsp"; break;
    			default:season="Winter.jsp";    		 		
    		 }   				    		
%>   	   			
    		<jsp:include page="<%=season %>"/>

 

시스템 날짜에 따라서 이렇게 변함 !!