この記事の出所:GitHubにはこちらをクリック・ || GitEEは・こちらをクリック
まず、コアAPIの紹介
1、サーブレット実装プロセス
サーブレットは、動的なリソースに属しJavaWeb(サーブレット、フィルタ、リスナー)、の3つの成分の一つです。アクションが要求を処理するサーブレットで、サーバーがサーブレットにリクエストを送信することは、通常のサーブレットに必要な、処理された受信:要求トランザクションを受信するステップと、処理要求、完全な応答。
2、コアAPIの紹介
API | 役割を説明して |
---|---|
ServletConfig | サーブレットの初期化パラメータを取得したServletContextオブジェクト。 |
ServletContext | 全体の動的なWebアプリケーションのリソースとの間のデータ共有。 |
ServletRequest | パッケージHTTPリクエスト情報、リクエストを作成。 |
ServletResponseを | パッケージHTTPレスポンス情報、要求を作成。 |
二、のServletConfigインタフェース
1.インターフェイスの概要
サーブレットを作成するための初期化コンテナサーブレット、ServletConfigオブジェクトに、オブジェクトを通過し、このサーブレットのinit()メソッドによって、オブジェクトに格納されています。コア機能:1初期情報を取得するために、2のgetのServletContextオブジェクト。
2、コードケース
- プロファイル
<servlet>
<init-param>
<param-name>my-name</param-name>
<param-value>cicada</param-value>
</init-param>
<servlet-name>servletOneImpl</servlet-name>
<servlet-class>com.node02.servlet.impl.ServletOneImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletOneImpl</servlet-name>
<url-pattern>/servletOneImpl</url-pattern>
</servlet-mapping>
- APIの使用法
public class ServletOneImpl implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
String servletName = servletConfig.getServletName() ;
System.out.println("servletName="+servletName);
String myName = servletConfig.getInitParameter("my-name") ;
System.out.println("myName="+myName);
Enumeration paramNames = servletConfig.getInitParameterNames() ;
while (paramNames.hasMoreElements()){
String paramKey = String.valueOf(paramNames.nextElement()) ;
String paramValue = servletConfig.getInitParameter(paramKey) ;
System.out.println("paramKey="+paramKey+";paramValue="+paramValue);
}
ServletContext servletContext = servletConfig.getServletContext() ;
servletContext.setAttribute("cicada","smile");
}
}
三、のServletContextインタフェース
1.インターフェイスの概要
プロジェクトは一つだけServletContextオブジェクトを持っている、オブジェクトが複数のサーブレットで得ることができ、サーブレットは、より多くのデータを転送するために使用することができ、Tomcatの起動時に作成されたオブジェクト、Tomcatのを閉じたときに破棄されます!役割は、Webアプリケーション全体の動的リソース間の共有データにあります。
- 入手
1、ServletConfig#getServletContext();
2、GenericServlet#getServletContext();
3、HttpSession#getServletContext()
4、ServletContextEvent#getServletContext()
2、4つのドメインオブジェクト
ServletContextは4つのドメインがJavaWebオブジェクトのいずれかです。
1、PageContext;
2、ServletRequest;
3、HttpSession;
4、ServletContext;
データを格納するために、地図内のドメインオブジェクトがあるので、すべてのドメイン・データ・オブジェクトは、アクセス機能を持っています。
3、コードケース
- プロファイル
<context-param>
<param-name>my-blog</param-name>
<param-value>2019-11-19</param-value>
</context-param>
<servlet>
<servlet-name>servletTwoImpl</servlet-name>
<servlet-class>com.node02.servlet.impl.ServletTwoImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletTwoImpl</servlet-name>
<url-pattern>/servletTwoImpl</url-pattern>
</servlet-mapping>
- APIの使用法
public class ServletTwoImpl extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
// 1、参数传递
ServletContext servletContext = this.getServletContext() ;
String value = String.valueOf(servletContext.getAttribute("cicada")) ;
System.out.println("value="+value);
// 2、获取初始化参数
String myBlog = servletContext.getInitParameter("my-blog") ;
System.out.println("myBlog="+myBlog);
// 3、获取应用信息
String servletContextName = servletContext.getServletContextName() ;
System.out.println("servletContextName="+servletContextName);
// 4、获取路径
String pathOne = servletContext.getRealPath("/") ;
String pathTwo = servletContext.getRealPath("/WEB-INF/") ;
System.out.println("pathOne="+pathOne+";pathTwo="+pathTwo);
response.getWriter().print("执行:doGet; value:"+value);
}
}
四、のServletRequestインタフェース
1.インターフェイスの概要
HttpServletRequestのインターフェイス、カプセル化要求情報のためのServletRequestインタフェースを拡張するサーブレット・オブジェクトが作成され、サービスを渡す()メソッドサーブレット要求するたびに、ユーザは、この方法では、着信のServletRequestオブジェクトに強制されるのHttpServletRequest情報を処理するためのHTTPリクエスト。コアアクション:要求パケット情報取得; 2取得ネットワーク接続情報; 3は、属性情報要求フィールドを取得...
2、コードケース
- プロファイル
<servlet>
<servlet-name>servletThreeImpl</servlet-name>
<servlet-class>com.node02.servlet.impl.ServletThreeImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletThreeImpl</servlet-name>
<url-pattern>/servletThreeImpl</url-pattern>
</servlet-mapping>
- APIの使用法
public class ServletThreeImpl extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// http://localhost:6003/servletThreeImpl?myName=cicada
String method = request.getMethod();
System.out.println("method="+method); // GET
String requestURL = request.getRequestURL().toString();
// http://localhost:6003/servletThreeImpl
System.out.println("requestURL="+requestURL);
String requestURI = request.getRequestURI();
System.out.println("requestURI="+requestURI); // /servletThreeImpl
String queryString = request.getQueryString() ;
System.out.println("queryString="+queryString); // myName=cicada
String myName = request.getParameter("myName");
System.out.println("myName="+myName); // cicada
}
}
五、ServletResponseをインタフェース
1.インターフェイスの概要
HttpServletResponseのServletResponseを、カプセル化HTTP応答情報から継承されました。各クライアント要求は、サーバが応答オブジェクトを作成し、のServlet.serviceにパス()メソッド。コアアクション:レスポンスヘッダを設定するステップと、2つの送信ステータスコードと、本体3が応答して提供される; 4リダイレクト; ...
2、コードケース
- プロファイル
<servlet>
<servlet-name>servletFourImpl</servlet-name>
<servlet-class>com.node02.servlet.impl.ServletFourImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletFourImpl</servlet-name>
<url-pattern>/servletFourImpl</url-pattern>
</servlet-mapping>
- APIの使用法
public class ServletFourImpl extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8") ;
response.setCharacterEncoding("UTF-8");
response.setStatus(200) ;
response.getWriter().print("Hello,知了");
}
}
3、転送およびリダイレクト
- 転送されました
制御サーバーページジャンプが行われ、
request.getRequestDispatcher("/转发地址").forward(request, response);
- リダイレクト
ジャンプ、サーバ応答情報は、ページのブラウザがジャンプをしました。
response.sendRedirect("重定向地址");
- 転送とリダイレクトコントラスト
違い | 転送されました | リダイレクト |
---|---|---|
アドレスバー | 変わりません | 変更 |
ジャンプ | ジャンプサーバ | ジャンプブラウザ |
リクエストの数 | 一度 | 二回 |
ドメインデータ | 失われていません | 失います |
第六に、送信元アドレス
GitHub·地址
https://github.com/cicadasmile/java-base-parent
GitEE·地址
https://gitee.com/cicadasmile/java-base-parent