モジュール内のサーブレット
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
サーブレットまたは JAX-RS を使用して、軽量のWeb統合またはWebエンドポイントをブラウザークライアントに提供できます。 RESTエンドポイントまたはポートレットではなく、サーブレットを使用すると、アプリケーションのUIエクスペリエンス全体を制御できます。 @製品@支持体はベースのアプリケーションをサーブレットおよび埋め込み HTTPホワイトボード サーブレットのために。
ここでは、 サーブレットサンプル と を調べて、独自のサーブレットベースのアプリケーションを作成します。
サーブレットのサンプル
サーブレットサンプル は、 HTTPホワイトボード を使用して、パターン http:// localhost:8080 / o / blade / servlet / *
一致するURLの要求に応答します。
サンプルサーブレットクラスは次のとおりです。
package com.liferay.blade.samples.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.log.LogService;
/**
* @author Liferay
*/
@Component(
immediate = true,
property = {
"osgi.http.whiteboard.context.path=/",
"osgi.http.whiteboard.servlet.pattern=/blade/servlet/*"
},
service = Servlet.class
)
public class BladeServlet extends HttpServlet {
@Override
public void init() throws ServletException {
_log.log(LogService.LOG_INFO, "BladeServlet init");
super.init();
}
@Override
protected void doGet(
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
_log.log(LogService.LOG_INFO, "doGet");
_writeSampleHTML(response);
}
/**
* Dummy contents
*
* @return dummy contents string
*/
private String _generateSampleHTML() {
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<head><title>Sample HTML</title></head>");
sb.append("<body>");
sb.append("<h2>Hello World</h2>");
sb.append("</body>");
sb.append("</html>");
return new String(sb);
}
/**
* Write sample HTML
*
* @param resp
*/
private void _writeSampleHTML(HttpServletResponse resp) {
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
resp.setStatus(HttpServletResponse.SC_OK);
try {
resp.getWriter().write(_generateSampleHTML());
}
catch (Exception e) {
_log.log(LogService.LOG_WARNING, e.getMessage(), e);
resp.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
}
}
private static final long serialVersionUID = 1L;
@Reference
private LogService _log;
}
サンプルサーブレットクラスは、 @Component
アノテーションを使用して、タイプ サーブレット
OSGiサービスを宣言します。 OSGi HTTPホワイトボードを使用して、 http:// localhost:8080 / o / blade / servlet / *
一致するURLのリクエストに応答します。 コンポーネントの osgi.http.whiteboard.context.path
および osgi.http.whiteboard.servlet.pattern
プロパティはサーブレットマッピングを構成するため、 WEB-INF / web.xml
記述子で1つを指定する必要はありません。 。
ポータルWebアプリケーションの WEB-INF / web.xml
は、Liferayのモジュールフレームワークサーブレットマッピングを定義します。
<servlet-mapping>
<servlet-name>Module Framework Servlet</servlet-name>
<url-pattern>/o/*</url-pattern>
</servlet-mapping>
サーブレットマッピングはURLパターン / o / *
から始まります。 @Component
プロパティ "osgi.http.whiteboard.servlet.pattern = / blade / servlet / *"
と組み合わせると、サーブレットサンプルはURLパターン / o / blade / servlet / *
一致します。
独自のサーブレットを開発するには、 Servletサンプルモジュールプロジェクト すべて(または一部)をコピーして変更するか、独自のモジュールにサーブレットを作成します。
サーブレットを作成する
独自のサーブレットを作成する方法は次のとおりです。
-
モジュールプロジェクト作成します。
-
必要な依存関係を追加します。 ここにGradleがあります:
compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1" compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.4.0" compileOnly group: "org.osgi", name: "org.osgi.service.log", version: "1.4.0"
-
javax.servlet.http.HttpServlet
を拡張するサーブレットクラスを作成します。 -
次の
@Component
アノテーションを追加します。@Component( property = { "osgi.http.whiteboard.context.path=/", "osgi.http.whiteboard.servlet.pattern=/blade/servlet/*" }, service = Servlet.class )
service = Servlet.class
:コンポーネントをタイプサーブレット
OSGiサービスにします。 -
次の
@Component
プロパティ
値を設定して、コンテキストパスとサーブレットURLパターンを指定します。"osgi.http.whiteboard.context.path = /"
:サーブレットのコンテキストを設定します。 値をサーブレットのコンテキストパスに置き換えます。"osgi.http.whiteboard.servlet.pattern = / blade / servlet / *"
:サーブレットのマッピングパターンを設定します。 値をサーブレットのパターンに置き換えます。 -
HttpServlet
メソッドをオーバーライドして、サーブレットの動作を実装します。 -
モジュールをデプロイします。
サーブレットが稼働しています。 サーブレットを使用してカスタムユーザーエクスペリエンスを提供する方法は順調です。