Programming/jsp2014.05.27 10:56
도그고생을 하면서 고민과 고뇌와 검색을 때려보니..
하앍!! 안되면 세션이나 리퀘스트 객체의 attribute 다 출력해봐!!!!
라는 결론에 도달 

<%@ page import="java.util.Enumeration" %>
<%
Enumeration enu = request.getAttributeNames();
while(enu.hasMoreElements())
{
String name = enu.nextElement().toString();
String val = request.getAttribute(name).toString();
out.println("<b>"+name+"</b>:"+val+"<BR>");
} 

[링크 : http://iamafool.tistory.com/88] 

그래서 출력을 때려보니
javax 쪽에서 몇가지 나오는게 있는데

>>> http://localhost:8080/Struts2_board_reply/mboardlist.mu
javax.servlet.include.request_uri:/Struts2_board_reply/tiles/template/menu.jsp
javax.servlet.include.context_path:/Struts2_board_reply
javax.servlet.include.servlet_path:/tiles/template/menu.jsp
javax.servlet.forward.request_uri:/Struts2_board_reply/mboardlist.mu
javax.servlet.forward.context_path:/Struts2_board_reply
javax.servlet.forward.servlet_path:/mboardlist.mu
org.apache.tiles.servlet.context.ServletTilesRequestContext.CURRENT_CONTAINER_KEY:org.apache.tiles.impl.BasicTilesContainer@659c37d0
struts.valueStack:com.opensymphony.xwork2.util.OgnlValueStack@18dec065
org.apache.tiles.AttributeContext.STACK:[org.apache.tiles.BasicAttributeContext@3e79271d, org.apache.tiles.BasicAttributeContext@7c92a617, org.apache.tiles.BasicAttributeContext@e4ec647]
org.apache.tiles.servlet.context.ServletTilesRequestContext.FORCE_INCLUDE:true


http://localhost:8080/Struts2_board_reply/listAction.mu?boardId=user
javax.servlet.include.request_uri:/Struts2_board_reply/tiles/template/menu.jsp
javax.servlet.include.context_path:/Struts2_board_reply
javax.servlet.include.servlet_path:/tiles/template/menu.jsp
javax.servlet.forward.request_uri:/Struts2_board_reply/listAction.mu
javax.servlet.forward.context_path:/Struts2_board_reply
javax.servlet.forward.servlet_path:/listAction.mu
javax.servlet.forward.query_string:boardId=user
struts.request_uri:/Struts2_board_reply/listAction.mu
struts.valueStack:com.opensymphony.xwork2.util.OgnlValueStack@2a8c60ae
struts.view_uri:/board/boardList.jsp 

게시판의 경우 action?boardId= 식으로 추가를 하기에
request_uri와 forward_servlet_path 두개를 합쳐서 적절히 잘라서 써서 해야한다.

<%
  String cpage = request.getAttribute("javax.servlet.forward.servlet_path").toString();
  if (request.getAttribute("javax.servlet.forward.query_string") != null) {
  String cpque = request.getAttribute("javax.servlet.forward.query_string").toString();
  cpage = cpage + "?" + cpque;
  }
  String[] sp = cpage.split("&");
  cpage = sp[0];
%>  

일단 이렇게 하면 액션명부터 쿼리까지 빼내고 사용에 따라 다르겠지만
boardId가 가장 첫 인자라면 첫 인자 까지만 뽑아내서 사용이 가능해진다. 

2014/05/26 - [프로그램 사용/struts2 / tiles] - 스트러츠2 사용시 브라우저 상의 현재 경로얻기 
신고
Posted by 구차니

댓글을 달아 주세요

스트러츠 사용중에
메뉴를 구현하기 위해서 꽁수를 부리려고 하는데..
현재 떠있는 페이지의 경로를 받아오는 방법이 묘연...하다

request.contextPath()를 하면
struts2 + tiles 사용시 타일스 파일이 나오질 않나 개판인데..

오오 스택느님!!!

request.getHeader("referer");

[링크 : http://stackoverflow.com/questions/3481989/how-to-get-the-request-url

근데 먼가 이상해서 실험을 해보니
말그대로 레퍼러..

메뉴에서 사용시 처음에 띄우면 유입 경로가 없기에 null Pointer exception을 띄우며 장렬히 전사한다. 



결론 : 다음글을 확인하시오
2014/05/27 - [Programming/jsp] - 스트러츠2 사용시 브라우저 상의 현재 경로얻기 2
신고
Posted by 구차니

댓글을 달아 주세요