Request response session 객체를 가져오는 방법
방금 작은 예를 썼지만 페이지의 속성 값은 모두setter getter 방법을 통해 값을 부여한 것을 발견했습니다. (이곳에는 구성에 대한 프레임워크, 예를 들어tapestry, 마찬가지로 기능이 강한ognl 표현식을 사용한 것 같습니다) 만약에 리퀘스트를 통해 어떤 값을 얻으려면struts2에서 어떻게 얻었을까요?
다들 아시다시피 struts1에서는
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { }
Request,respongse 대상이 있습니다.
그러면 struts2에서 두 가지 방법으로 이 대상을 얻을 수 있어요.
1. 비IoC 방식
위의 객체를 얻으려면 키 Struts 2에서com.opensymphony.xwork2.ActionContext 클래스.정적 방법 getContext () 를 통해 현재 Action의 상하문 대상을 얻을 수 있습니다.이 상대가 있으면 우리가 다른 몇 명의 상대를 얻으면 처리하기 쉽다
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession();
세심한 친구는 이곳의session이 맵의 대상이라는 것을 알 수 있다. Struts2의 밑바닥에 있는session은 모두 맵 형식으로 봉인되어 있다. 우리는 이 맵을 직접 조작해서session에 대한 쓰기와 읽기 조작을 할 수 있고 HttpSession 대상을 직접 조작하지 않아도 된다.
그리고 org.apache.struts2.ServletActionContext는 보조 클래스(Helper Class)로 이러한 객체를 빠르게 가져올 수 있도록 도와줍니다.
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
만약session의 속성 (Attribute) 에 접근하고 싶을 뿐이라면,ActionContext를 통해서도 가능합니다.getContext().getSession()에서 세션 범위(Scoped)의 객체를 가져오거나 추가합니다.
2. IoC 방식(이런 방식은tapestry에서도 이렇게 실현된다)
IoC 방식을 사용하려면 먼저 IoC 용기(Container)가 어떤 대상을 얻고 싶은 의사를 알려주고 해당하는 인터페이스를 통해 이를 해야 한다.구체적 실현
public class IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
private String message;
private Map att;
private HttpServletRequest request;
private HttpServletResponse response;
public String getMessage() {
return message;
}
publicvoid setSession(Map att) {
this.att = att;
}
publicvoid setServletRequest(HttpServletRequest request) {
this.request = request;
}
publicvoid setServletResponse(HttpServletResponse response) {
this.response = response;
}
@Override
public String execute() {
att.put("msg", "Hello World from Session!");
HttpSession session = request.getSession();
StringBuffer sb =new StringBuffer("Message from request: ");
sb.append(request.getParameter("msg"));
sb.append("<br>Response Buffer Size: ");
sb.append(response.getBufferSize());
sb.append("<br>Session ID: ");
sb.append(session.getId());
message = sb.toString();
return SUCCESS;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java에서 HttpRequest Header를 가져오는 몇 가지 방법이 포털은 모든 응용 프로그램의 입구이다. 사용자가 포털에 로그인한 후에 다른 시스템에 들어가면 유사한 단일 로그인(SSO)이 필요하다.각 서브시스템에 들어갈 때 다시 로그인할 필요가 없다. 물론 유사한 기능은 전문...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.