ダミー用のサーブレットを作成します。 ウォークスルー

画像



初心者の開発者がサーブレットに遭遇したとき、彼がどのように動作し、この動作が何に依存しているかを理解することは非常に困難です。 これは、すべての例とビデオチュートリアルが、サーブレットの性質とその内容を理解している人向けに設計されているためです。 そこで、最も単純なサーブレットを作成するためのガイドを作成することにしました。 おそらく、この記事は誰かを助けるでしょう。



だから。



どこかでmavenを使用してサンプルを既にダウンロードしており、何らかの方法(WARアーカイブまたは開発環境から直接)でコードをTomcat(通常はサーブレットを理解し始めます)にデプロイできたとします。 web.xmlファイルが存在するアプリケーション構造があります。 Cページの作成を開始する必要があります。



最初の最も重要なこと:マシンは、アドレスバーの一部とプロジェクト内の同じ名前のページの間の直接的な接続を認識しません。 localhost :8080 / WAR_name / testとtest.jspは同じものではありません。 / testは、サーブレットの「URLタグ」です。 これにより、マシンは目的のJavaファイルを検出し、すでにtest.jspをポイントしています。



マシンがコードを読み取ってからブラウザーにページを表示する方法は次のようになります。



webapp / WEB-INF / web.xml->サーブレット

---> ru.user.project / web / ClassName-> request

---> page.jsp


はい、まだ明確ではありませんが、このスキームに戻ります。 単純な人間の言葉で説明すると、次のようになります。



web.xmlファイルからサーブレットを介して、マシンはJavaクラスへのパスを受け取ります。これにより、マシンは検索対象のページにリダイレクトされます。


叙情的な余談でした。コードに移ります。



そのため、Tomcatにプロジェクトがデプロイされており、そのメインページはlocalhost :8080 / WAR_nameを呼び出すことで開きます(WARファイルをデプロイした場合)。



web.xmlを開きます。 このファイルは、Tomcatによって最初にスキャンされます。 ここで、パスの始まりを設定します。 web.xmlのコードは次のとおりです。



<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Test</display-name> <servlet> <servlet-name>testServlet</servlet-name> <servlet-class>ru.user.project.web.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>testServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>
      
      





サーブレットは、アドレスバーとJavaクラスからのリンクをバインドします。 この場合、JavaクラスはJSPページを開きます。 サーブレットは2つのコンポーネントで構成されています。



 <servlet> //    Java- <servlet-name>testServlet</servlet-name> <servlet-class>ru.user.project.web.TestServlet</servlet-class> </servlet> <servlet-mapping> //      ,   <servlet-name>testServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping>
      
      





<servlet-class>を登録します。 このパスは、アドレスバーが呼び出されたときに処理されるJavaクラスを格納します。 次に、<servlet-mapping>を追加します。 これは、アドレスバーからサーブレットにバインドされたアドレスの一部です。 元の行/テストに追加すると、魔法が始まります。 しかし、これまでのところ、残りのコードはまだ完成していません。 Javaファイルを作成しています。 ru.user.project.webにあります(このため、Webフォルダが作成されていない場合は作成する必要があります)。



 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * Created by promoscow on 17.07.17. */ public class TestServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/test.jsp").forward(request, response); } }
      
      





クラスはHttpServletから継承する必要があり、メソッドdoGet()は再定義されます。 オーバーライドされたメソッドでは、遷移が実行される行の名前を記述します(この場合、これは "/test.jsp"です)。



したがって、 localhost :8080 / WAR_name / testを呼び出すと Tomcatは目的の<url-pattern>を見つけ、それがtestServletに属していることを確認し、TestSevlet JavaファイルがこのtestServletに属していることを確認して実行し、Javaファイルに移動しますtest.jspへの移行。 test.jspの記述は残ります。



 <%-- Created by IntelliJ IDEA. User: promoscow Date: 17.07.17 Time: 23:22 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Test</title> </head> <body> Hey there! It's test servlet page! </body> </html>
      
      





これで、ユーザーが元のアドレスに/テストを追加すると、記事の冒頭で説明したアルゴリズムが実行されます(私はそれに戻ると約束しましたか?)そして、ブラウザーはtest.jspファイルの内容を表示します。 たとえば、開始ファイル(たとえば、index.html)にリンクを書き込むこともできます。



 <a href="test">Test page</a>
      
      





そして、上記の一連のイベントが発生し、最終的にtest.jspページが呼び出されます。



この記事が初心者の開発者が常識を探って最初のサーブレットを書くのを助けてくれることを願っています。将来、他のすべてが徐々にこの理解に加わります(通常そうです)。



All Articles