サーブレットとは何ですか
- 実際には、のウェブサーバ上で実行中のサーブレットである小さなJavaプログラムのWebクライアントからの要求を処理するための、および要求に応答します。
サーブレットテクノロジーの概要
本質的に、インタフェースサーブレット仕様でその一つの技術仕様のJavaEE 13、
Servlet仕様は、JavaEEの技術プラットフォームで、サーバ側のJavaアプレット上で実行されているサーブレットは、Webサーバー(Tomcatの)でのみ実行されます。
JavaWebサーブレットは、3つの成分の一つである(サーブレット、フィルター、リスナー)、そして最も重要な。
処置:要求を受けたが、応答します
幅広いサーブレット:すべてのカテゴリを達成するために、Servletインタフェース
狭いサーブレット:具体サーブレット・インターフェースを指し
サーブレットのクイックスタートプログラム
サーブレットは、エントリー手続きを達成するため、Javaサーブレットは、クライアントブラウザがアクセスするサーバ側のプログラム、になります。
- 実装手順:
- サーブレットは、クラスのインタフェース定義を実装します
- すべての抽象メソッド書き換えインタフェース(5)
- web.xmlにサーブレットの設定
ここでは、インタフェースQuickStartServletサーブレットを実装するクラスの定義は次のとおりです。
package com.ccc.servlet;
/*
* 实现Servlet快速入门
* 1、创建一个类实现Servlet接口(Tomcat)
* 2、重写Servlet接口中的所有抽象方法(5个)
* 3、在当前项目的web.xml文件中,对Servlet进行配置
*/
public class QuickStartServlet implements Servlet{
/*
service方法用于接收客户端的请求,给客户端进行响应
ServletRequest:接收客户端的请求
ServletResponse:给客户端进行响应
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Servlet快速入门");
// 参数servletResponse方法getWriter()获取字符输出流
Writer w = servletResponse.getWriter();
//输出流的方法write,数据写到客户端浏览器
w.write("hello world");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
このクラスは、web.xmlに配置されました
<servlet>
<!--quick这个名字随便起,但要跟下面的<servlet-name>内的名字对应-->
<servlet-name>quick</servlet-name>
<!--这个名字是前面那个实现接口Servlet的类的全路径-->
<servlet-class>com.ccc.servlet.QuickStartServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--quick这个名字随便起,但要跟上面的<servlet-name>内的名字对应-->
<servlet-name>quick</servlet-name>
<!--使用浏览器访问Servlet的虚拟路径-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
サーブレットへのアクセス
HTTPを:// localhostを:8080 / day01 /こんにちは
これは、このパケットが属するパッケージcom.ccc.servletのday01でモジュール名を。
サーブレットプログラム実行原則(重要)
サーブレットオブジェクトのライフサイクル
サーブレットのライフサイクル:作成からオブジェクトの破壊にサーブレットのプロセス。
- それが破壊されたとき、それが作成されたサーブレットがありますか?
そこサーブレットのinit、サービス、破壊する方法を、これらの方法は、関連するサーブレットのライフサイクル・アプローチと呼ばれています。
-
オブジェクトが呼び出しで作成された初期化方法のinit(のServletConfig設定)サーブレット・オブジェクト
オブジェクトは、サーブレットを作成した場合
-
オブジェクトが作成されたサーブレットのデフォルトの最初の訪問
-
オブジェクトTomcatサーバーの起動を作成し、あなたが(通常は設定されていない)のweb.xmlを変更する必要があります
<!-- Tomcat服务器启动的时候,自动创建Servlet对象 配置的数字是设置启动的优先级 可以写任意的整数,数字越小,优先级越高 --> <load-on-startup>5</load-on-startup>
-
-
サービス(リクエスト、レスポンス)クライアントアクセス時間、実行時間
-
)(Destoryは、オブジェクトがサーブレットを破壊される前に呼び出されます
-
オブジェクトは、サーブレットを破壊された場合
- Tomcatサーバーを停止します
- WEB項目は、サーバーから削除します
Web.xmlのサーブレットの構成
<!--
Servlet的详细配置
-->
<servlet>
<!-- name,定义名字,随意-->
<servlet-name>path</servlet-name>
<!-- class 配置类的全名,反射-->
<servlet-class>com.itheima.servlet.PathServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- name 必须和上面name相同-->
<servlet-name>path</servlet-name>
<!-- url-pattern 配置的是浏览器访问的虚拟路径,需要最后将“\”后的名字输入到浏览器-->
<url-pattern>/path</url-pattern>
</servlet-mapping>
URLパターンの設定
-
1、完全一致
/ Abcの:ブラウザのアドレスバーに/ ABCを書き込む必要があります(ABC例の便利な方法のみ)
<url-pattern>/path</url-pattern>
-
2、一致するディレクトリ
/ AAA / BBB / *:ブラウザのアドレスバーには書くことができます/ AAA / BBB /任意の
-
3、マッチングサフィックス
* .Abc:ブラウザのアドレスバーは、任意の.abcに書き込むことができます
Directoryのマッチングと拡張マッチングを使用することはできません
/aaa/bbb/*.abc紛争
サーブレットを作成するために、IDEA(重要)
public class MyServlet extends HttpServlet {
/**
* doGet方法对应了客户端浏览器的提交方式GET
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().print("MyServlet run");
}
/**
* doPost方法对应了客户端浏览器的提交方式POST
* 无论:是POST提交,还是GET,统一处理,都使用doGet
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用doGet
doGet(request,response);
}
}
原理は継承されたのHttpServlet
これは、JavaEEのServlet仕様、標準的な方法サーブレット・インターフェース・サービスメソッドであります
サーブレットは(知っている)テンプレートを変更します
ServletConfigオブジェクト
サーブレット構成オブジェクトを表すServletConfigオブジェクト
サーブレットプログラムがあり、対応するターゲットのServletConfigがあるでしょう
-
ServletConfigオブジェクトを取得します。
- initメソッドのパラメータ(のServletConfigのServletConfig)は、発呼者はTomcatエンジン、ServletConfigオブジェクトは、Tomcatエンジンによって作成されています
- 親クラスは、メソッドのServletConfigのgetServletConfigを(定義)
-
どのようなオブジェクトを行います
-
サーブレット名を取得し、文字列getServletName()
<servlet-name>config</servlet-name>
-
サーブレットの初期化パラメータ、文字列getInitParameter(「キー」)を取得します
<init-param> <param-name>heima</param-name> <param-value>java</param-value> </init-param>
public class ConfigServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* 使用父类的方法getServletConfig()方法,获取ServletConfig对象 ServletConfig是接口 org.apache.catalina.core.StandardWrapperFacade 接口的实现类(Tomcat重写) */ ServletConfig config = getServletConfig(); System.out.println(config);//org.apache.catalina.core.StandardWrapperFacade@63b85cd //获取Servlet名字 String servletName = config.getServletName(); System.out.println(servletName);//config //获取Servlet初始化参数 String value = config.getInitParameter("heima"); System.out.println(value);//340 } }
-