-
스트럿츠2 에서 쿠키 사용하기.카테고리 없음 2011. 8. 3. 21:56
이거 찾느라 힘들었다... 웹은 전문이 아니기에.. 차라리 서블릿으로만 구성하는게 정신상 이로울 지도 모르는 일이다. 어설프게 아는게 병이다. ㅠㅠ 나처럼 고생 하는 사람이 없길 바라며 스트럿츠2 서블릿에서 response request 를 얻어와서 쿠키를 생성 / 조회 / 삭제 하는 코드만 정리해보았다.
package ememomo.cookie;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.tomcat.util.http.Cookies;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class CookieUserAction extends ActionSupport implements ServletResponseAware, ServletRequestAware{
HttpServletResponse res = (HttpServletResponse)ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);
HttpServletRequest req = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
Cookie c[] = null;
@Override
public String execute() throws Exception {
//쿠키 생성
Cookie ck = new Cookie("cookiename", "cookievalue");
ck.setPath("/");
ck.setMaxAge((1000 * 60) * 2);
res.addCookie(ck);
//쿠키목록
c = req.getCookies();
for(int i=0; i<c.length; i++){
System.out.println("쿠키이름 : " + c[i].getName() + " 값 : " + c[i].getValue());
//쿠키 삭제
if(c[i].getName().equals("cookiename")){
Cookie delck = new Cookie("cookiename", "");
delck.setPath("/");
delck.setMaxAge(0);
res.addCookie(delck);
}
}
return super.execute();
}
@Override
public void setServletResponse(HttpServletResponse res) {
// TODO Auto-generated method stub
this.res = res;
}@Override
public void setServletRequest(HttpServletRequest req) {
// TODO Auto-generated method stub
this.req = req;
}
}
결과는
쿠키이름 : JSESSIONID 값 : 643697DC23A520F1C20ECD9139E03FC4
쿠키이름 : cookiename 값 : cookievalue
이런식으로 나온다. apache was 에서 JSESSIONID 를 만들므로 조건을 줄때 이부분은 배제하고 처리해야 한다.댓글