초록/Request
도 장식하고 대신 Response
을 가져 오십시오.
예.프런트 컨트롤러 서블릿에서 :
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
Request request = new RequestImpl(req, res);
Action action = ActionFactory.getAction(req); // Do whatever way you do to locate the `Action`.
Response = action.get(request);
// ...
}
에있어서이 같은 RequestImpl
보기 :
public class RequestImpl implements Request {
private HttpServletRequest request;
private HttpServletResponse response;
public RequestImpl(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
}
public Response newResponse(Status status) {
return new ResponseImpl(response, status);
// Add a boolean responseCreated to avoid creation of multiple responses? Illegal state!
}
public String getParameter(String name) { // Just another example of decorated method.
return request.getParameter(name);
}
// ...
}
이 같은 ResponseImpl
보기 : 당신이 마지막으로 당신의 Action
에서 다음과 같이 사용
public class ResponseImpl implements Response {
private HttpServletResponse response;
public ResponseImpl(HttpServletResponse response, Status status) {
this.response = response;
this.response.setStatus(status.getCode());
}
public OutputStream getOutputStream() {
return response.getOutputStream();
}
// ...
}
:
public ActionImpl implements Action {
public Response get(Request request) {
Response response = request.newResponse(OK);
response.getOutputStream().write("body");
return response;
}
}
(210)
또는, 당신은 또한 모두 HttpServletRequest
및 HttpServletResponse
소요 Context
을 만들고 대신의 Request
것을 전달할 수 있습니다. 평균 MVC 프레임 워크가하는 것보다 적거나 많습니다. 예 : 대신 개혁, 나는뿐만 아니라 API의 기존에 봐 가지고하는 것이 좋습니다이라고 말했다
public ActionImpl implements Action {
public void execute(Context context) {
context.getResponseOutputStream().write("body");
}
}
와
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
Context context = new ContextImpl(req, res);
Action action = ActionFactory.getAction(req); // Do whatever way you do to locate the `Action`.
action.execute(context);
context.render(); // Do here whatever you'd initially to do with the obtained Response.
}
. JSF, JAX-RS 또는 JAX-WS는 사용자가 원하는 작업에 따라 실제로 수행 할 작업 일 수 있습니다. 순수한 취미 목적이 아닌 한)