Category Archives: JSP/Servlet

정적 자원 (js, css) 들을 브라우저에서 캐싱(cache) 하지 못하도록 처리하기.

By | 9월 11, 2014

  방법 1) 정적 자원 로딩(import) url 뒤에 버전을 나타내는 구분자 붙이기.   * 브라우저가 1분 이상 정적 자원들을 캐싱하지 못하도록 막고 싶을 경우, 공통 heaer jsp 파일 소스코드 예시 <% request.setAttribute(“buildVer”, DateUtil.getCurrentDate(“yyyyMMddHHmm”)); //현재일시의 DateFormat을 리턴해 주는 사용자정의 메서드 getCurrentDate()가 있다고 치자. %> <script src=”${contextPath}/js/common.js?${buildVer}”></script>           나머지 방법들은 기회가 되면…  … Read More »

JSTL EL escape 하기

By | 5월 18, 2012

* 어쩌다 한번 JSTL이나 EL 문법을 html 화면으로 보여주기 위해 escape 해야 할 경우가 있다.    – JSTL : &lt;, &gt; 활용   – EL : 역슬래쉬(\) 활용

JSTL에서 세션 값을 가져올 때 세션명에 점(dot)이 들어가 있을 경우?

By | 4월 12, 2012

점(dot)은 EL에서 getter 역할을 하는 연산자이므로 다음과 같이 사용하자 >, < !! (참고 : 아래 예문에서 .language는 해당 객체가 가진 속성이다.) ${sessionScope[“org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE”].language} * 참고 – 위의 값을 JSTL의 변수(var)로 선언하고 싶을 때는? => 따옴표를 escape! <c:set var=”localeLanguage” value=”${sessionScope[\”org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE\”].language}”/>    

현재 JSP 페이지의 경로(path) 얻어오기

By | 4월 9, 2012

* 일단 JSP를 WebContent(혹은 webapp) 하위에 바로 넣는 경우는 거의 없고    대개 WEB-INF 하위로 숨긴다고 볼 때, 다음의 방법을 조합하여 얻어올 수 있을 것 같다. 1. root ~ WebContent 까지의 경로      어떻게든얻어온 ServletContext.getRealPath(“/”); 2. WEB-INF ~ JSP까지의 경로    어떻게든얻어온 ServletConfig.getServletName();

jsp의 커스텀태그(custom tag) 작성 관련

By | 4월 9, 2012

* tld 파일 예제     <?xml version=”1.0″ encoding=”UTF-8″?>     <taglib 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/web-jsptaglibrary_2_0.xsd” version=”2.0″>     <tlib-version>1.2</tlib-version>      <uri>frameone</uri>            <tag>        <description>포맷에 맞게 날짜를 표시한다.</description>        <name>dateFmt</name>        <tag-class>xx.xxx.xxxxx.DateFormatTag</tag-class>        <body-content>empty</body-content>        <attribute>            <name>infmt</name>        … Read More »

getRequestDispatcher().forward() 이후 IllegalStateException 에 대하여

By | 4월 4, 2012

실험적으로 얻은 지식에 의하면, getRequestDispatcher().forward() 가 실행되어도, 바로 그 시점에 리턴되는 것이 아니라forward() 작업과는 비동기적으로, 그 이후의 코드도 끝까지 실행되는 것으로 보인다. 그런데 문제는 그 이후의 코드에서 response를 write 하는 등의 코드가 존재하면IllegalStateException 이 발생한다는 것이다. 그러므로 getRequestDispatcher().forward() 이후에 return 을 붙이는 것이, 안전하면서도 내가 원하는 결과를 얻을 수 있는 패턴이라는 생각이 든다. * 참고링크      http://www.xyzws.com/Servletfaq/does-the-requestdispatcherforward-include-method-return/15   http://www.coderanch.com/t/360595/Servlets/java/RequestDispatcher-forward-method-returns-asynchronously

[펌글] ServletRequest의 getRequestDispatcher()와 ServletContext의 getRequestDispatcher()의 다른 점.

By | 4월 4, 2012

– 출처 : http://www.theserverside.com/news/thread.tss?thread_id=28471 –     The servletRequest’s getRequestDispatcher() can take a relative path while    ServletContext’s getRequestDispatcher() can not(can only take relative to the     current context’s root).     For example      with ServletContext both        -> request.getRequestDispatcher(“./jsp/jsppage.jsp”) – evaluated relative to the path of the request        ->… Read More »

CXF 서블릿 사용시 jsp도 사용할 수 있도록 하기 (JSP파일별로 서블릿 맵핑)

By | 6월 13, 2011

최초 CXF서블릿 사용시 url-pattern 을 활용하여 특정 요청에 한해서만 CXF서블릿으로 보내려고 했었으나, (/ocp/* 와 같은 형태 시도) 잘 되지 않아서 결국 CXF서블릿의 url-pattern을 /* 으로 그대로 유지하고, jsp를 파일 한 개를 하나의 서블릿인 것 처럼 맵핑하여 사용하게 되었다. 이렇게 할 경우 서블릿 맵핑을 jsp 파일 한 개가 추가될 때마다 추가해 주어야 한다는 문제점이 있으나, 달리 방법이… Read More »

JSP의 pageContext 내장객체의 findAttribute(String str) 메소드

By | 8월 28, 2009

  JSP의 pageContext 내장객체의 findAttribute(String str) 메소드는 해당하는 이름을 가진 속성을 page => request => session => application 순서로 검색하여 그 중에서 첫번째로 이름이 일치하는 값을 리턴한다. 이것은 곧 EL 에서 ${    } 를 사용하여 속성값들을 가져오는 것과 동일하다. * 참고 링크     JSP Expression Language (EL) 

[펌글] Apache Commons Validator의 validation.xml 설명 (ver 1.1.3)

By | 8월 24, 2009

– 출처 : http://cafe.naver.com/richprogrammer.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1098 – ※ validation.xml 예제 – 시작   <?xml version=”1.0″ encoding=”UTF-8″> <!DOCTYPE form-validation PUBLIC “–//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN” “http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd”>   <form-validation>        <global>        <!– 반복적으로 사용되는 문자열을 상수 형태로 정의 –>      <!–우편번호 상수 123-456 형태–>      <constant>           <constant-name>postalCode</constant-name>           <constant-value>^\d{3}-^\d{3}$</constant-value>      </constant>       … Read More »

[펌글] web.xml에서 정의 할 수 있는 환경설정 내용

By | 8월 21, 2009

– 출처 : web.xml에서 정의 할 수 있는 환경설정 내용 – 종류 필수 관련기술 이름  설명  필터 예 struts2  FilterDispacther  스트럿츠2 컨트롤러 필터 아니오 sitemesh  PageFilter  사이트메쉬 페이지 필터 아니오 sitemesh  FreeMarkerPageFilter  사이트메쉬 프리마커 페이지 필터 아니오 sitemesh  VelocityPageFilter  사이트메쉬 벨로시티 페이지 필터 아니오 struts2  ActionContextCleanUp  컨텍스트 클린업 필터 서블릿 아니오 dwr  DWRServlet  DWR 서블릿 아니오… Read More »

커스텀태그의 리턴값을 jstl 변수로 설정할 때

By | 8월 14, 2009

# 커스텀태그의 리턴값을 변수로 설정해야 할 경우 다음과 같이 하면 잘 되지 않을 경우가 있다.   (아마 따옴표문제가 아닌가 싶은데 안되는 이유를 정확히는 모르겠음) <c:set var=”totalRateFormatted” value=”<fmt:formatNumber value=’${totalRate}’ maxFractionDigits=’0’/> “> # 그럴 때에는 다음과 같이 <c:set> 의 value 속성으로 변수값을 설정하지 말고 <c:set> 의 body 로서 변수값을 설정해 보자. <c:set var=”totalRateFormatted”>      <fmt:formatNumber value=”${totalRate}” maxFractionDigits=”0″/><%– c:set… Read More »

[펌글] 스레드 안전한 ServletContext 만들기

By | 8월 3, 2009

– 출처 : http://www.4te.co.kr/544 – 스레드 안전이란 말은 어떤 속성에 set을 한 다음 get을 하기 전에 다른 무엇인가가 해당 속성에 set을 해서 내가 set한 속성 값을 그대로 get하지 못하는 경우를 말한다. ServletContext에서도 스레드 안전이 보장되지 못한다. 즉 다음과 같이 코딩하게 되면 잘못된 결과가 리턴될 수도 있다는 말이다.     public void doGet(HttpServletRequest request, HttpServletResponse response)        … Read More »

[펌글] ServletContext 이용하기

By | 8월 3, 2009

– 출처 : http://www.4te.co.kr/542 – ServletConfig는 해당 서블릿에서만 사용할 수 있지만 Web App 내에서 공통적인 내용을 가져다 사용하려면 ServletContext를 사용할 수 있다. ServletContext는 ServletConfig와 마찬가지로 web.xml을 사용하며, 따라서 바로 사용하려면 String만 사용할 수 있다. 하지만, ServletContextListener를 이용하면 객체 역시 Web App 전역에서 사용할 수 있다. ServletContextListener는 서블릿이 로딩 되기 전, 컨테이너(ex:톰캣) 차원에서 initialize 하고 destroy 하게… Read More »

[펌글] ServletConfig 이용하기

By | 8월 3, 2009

– 출처 : http://www.4te.co.kr/540 – web.xml에 config 정보를 정의하고 해당 내용을 servlet에서 불러와 사용할 수 있다. 사용 방법은 다음과 같다. 1. web.xml 작성   <!– ServletConfig Test Start… –>   <servlet>       <servlet-name>BeerParamTests</servlet-name>       <servlet-class>com.example.TestInitParams</servlet-class>       <init-param>          <param-name>adminEmail</param-name>          <param-value>likewecare@wickedlysmart.com</param-value>      </init-param>      <init-param>          <param-name>mainEmail</param-name>          <param-value>blooper@wickedlysmart.com</param-value> … Read More »