(Portal 개발 독서 노트) Ajax Portlet
9652 단어 비동기AjaxPortlet
1단계: AjaxPortlet의 기반으로 일반적인 포틀릿을 만듭니다.
- public class DateTimePortlet extends GenericPortlet {
- @RenderMode(name = "view")
- public void showHomePage(RenderRequest request,
- RenderResponse response)throws ...{
- ...
- getPortletContext().getRequestDispatcher(
- response.encodeURL("/WEB-INF/jsp/home.jsp"))
- .include(request, response);
- }
- }
2단계: jsp 페이지에서 브라우저의 XMLHttpRequest 대상을 사용하여 요청을 보내고 응답을 받습니다.
- <%@include file="include.jsp"%>
- <script type='text/javascript'>
- function <portlet:namespace/>setCurrentDateTime() {
- var xhr = new XMLHttpRequest();
- ...
- var url =
- "<%=request.getContextPath()%>/DateTimeServlet"
- xhr.open("GET", url, true);
- xhr.send();
- }
- </script>
- <table>
- <tr>
- <td><b><a href="#"
- onclick="<portlet:namespace/>setCurrentDateTime();"
- style="color: black;">Refresh</a></b></td>
- </tr>
- </table>
- <br/>
- <!-- div , ajax -->
- <div id="<portlet:namespace/>messageText">
- </div>
웹 페이지에서Refresh 하이퍼링크를 클릭하는 이벤트 처리 함수로 setCurrentDateTime () 를 정의했습니다. 이 방법에서 브라우저의 XHR 대상을 만들고 DateTime Servlet에 대한 연결을 열고 Http GET로 접근하며 비동기적인 연결 (true 매개 변수) 으로 XHR로 이 요청을 보내고 바로 되돌아오는 js 방법을 정의했습니다.
3단계: XHR에서 보낸 요청을 처리하기 위해 서버에서 서브렛을 정의합니다. 2단계에서 XMLHttpRequset이 보낸 것은 GET 요청이기 때문에 이에 대응하기 위해doGet의 실현을 정의해야 합니다.
- public class DateTimeServlet extends HttpServlet {
- public void doGet(HttpServletRequest request,
- HttpServletResponse response) ... {
- SimpleDateFormat sdf =
- new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss a");
- OutputStream outStream = response.getOutputStream();
- StringBuffer buffer = new StringBuffer();
- buffer.append("Hello World (<i> "
- + sdf.format(new Date()) + " </i>)");
- outStream.write(buffer.toString().getBytes());
- }
- }
DateFormat를 만든 다음 HttpServletResponse 출력 흐름을 열고 포맷된 날짜와 다른 문자열을 HTML Fragment 형식으로 출력 흐름에 기록합니다.
4단계: 서브렛이 반환한 결과에 응답하기 위해 페이지에 js 함수를 정의한 다음 지정한
에 렌더링
- <script type='text/javascript'>
- function <portlet:namespace/>setCurrentDateTime() {
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function() {
- //readyState 4 XMLHttpRequest Complete, Data
- if(xhr.readyState == 4) {
- var messageText = document.getElementById("<portlet:namespace/>messageText");
- messageText.innerHTML = xhr.responseText;
- }
- };
- var url =
- "<%=request.getContextPath()%>/DateTimeServlet";
- xhr.open("GET", url, true);
- xhr.send();
- }
- </script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백과 처리콜백이란, 말 그대로 나중에 실행되는 코드를 말합니다. 일반적인 화살표 함수에서, {} 부분이 콜백에 해당된다고 볼 수 있습니다. 이벤트 중심 언어인 자바스크립트는 다음과 같이 여러 함수를 입력했을 때, 결과를 기다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.