url-patternを介してJSPページにマップするようにサーブレットを構成します

JSPページは、URLパターンマッピングを通じてサーブレットとして直接使用されます。

序文

数日前、一部のデータをビジネスデータベースから抽出し、Json形式でサードパーティのシステムに返す必要があります。最初はTomcat + JSPの単純な組み合わせを使用したかったのですが、考え直してみると、今でも少し低いかもしれないJSPを使用しており、外の世界に公開するのはあまり魅力的ではありません。

とはいえ、プログラミング能力の強みは、アルゴリズムの理解と最適化、そして事業細分化の正確な計画と合理的なレイアウトにあると思います。しかし、多くの若者は、プログラミング能力の強さは、使用するテクノロジーがそれより優れているかどうか、最新のものであるかどうか、高度であるかどうかにかかっていると考えています。このような考え方は当たり前のことであり、技術への欲求に加えて、現在の市場の雇用要因によっても引き起こされています。

Spring ORMフレームワークの使用とその後の開発の非効率性、反復的なビジネス変更の難しさ、およびいくつかの新しいコードによって引き起こされるメモリリークのために、プロジェクトが多すぎます。小さなプロジェクトは一般的にこのようなものを必要としません。

どのように対処しますか?PHPにはURLの書き換えとファイルサフィックスの切り替えのための多くのフレームワークがあることを思い出してください。ただし、ここからOracleにアクセスする必要があり、Oracleドライバーアクセスインターフェイスに対するPHPのサポートは安定しておらず、使いにくいものです。JAVAを使用することをお勧めします。ここで重要なのは、jspサフィックスを削除できる限りです。

いくつか検索した後、urlrewritefilterライブラリを見つけました。このライブラリを使用すると、クライアントブラウザがxxx.do?xxxにアクセスすると、xxx.jsp?xxxにリダイレクトされます。

次に、すべてのビジネスをJSPで記述し、サーバー上でコードを更新し、再起動も保存します。開発効率が高く、変更が簡単で、起動が速く、CPUとメモリリソースの使用量が非常に多くなります。低。

 

1.新しいTomcatプロジェクトを作成します。web.xmlを開き、次の構成を追加します

	<filter>
		<filter-name>UrlRewriteFilter</filter-name>
		<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>UrlRewriteFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>


	<error-page> 
		<error-code>404</error-code>  
		<location>/error.html</location>  
	</error-page> 

2.公式Webサイトhttp://tuckey.org/にアクセスして、urlrewritefilterまたはMavenをダウンロードします。

<dependency>
    <groupId>org.tuckey</groupId>
    <artifactId>urlrewritefilter</artifactId>
    <version>4.0.3</version>
</dependency>

3つ目は、新しく作成されたurlrewrite.xmlがWEB-INFの下に配置され、内容は次のとおりです。

<urlrewrite>
	<rule>
		<from>/(\w*).do(\w*)</from>
		<to type="forward">/$1.jsp$2</to>
		
		<!-- 其实就是 htaccess 的语法,后面有提到  -->
	</rule>
</urlrewrite>

 

第4に、次のように新しいtest.jspコンテンツを作成します

<%@ page trimDirectiveWhitespaces="true" %>
<%@ page language="java" import="java.util.*" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

<%
	request.setCharacterEncoding("utf-8");
	response.setCharacterEncoding("utf-8");
	
	out.print("hello:" + request.getParameter("p"));
%>

5.サーバーを起動し、Webページhttp:// localhost:8080 / test.do?p = goodを開くと、効果を確認できます。

http:// localhost:8080 / rewrite-status(またはhttp:// localhost:8080 / application / rewrite-status)にアクセスすると、関連する書き換え情報も表示されます。

 

6.好奇心の下で、urlrewritefilter.jarのソースコードをチェックして、何が書かれているかを確認します。

検索

* UrlRewriteFilterは2つの最終変数を検出しましたpublicstatic
   final String DEFAULT_WEB_CONF_PATH = "/WEB-INF/urlrewrite.xml";
   public static final String DEFAULT_MOD_REWRITE_STYLE_CONF_PATH = "/ WEB-INF / .htaccess";
   
   このライブラリが.htaccessファイルをサポートできることを示します
   
* reloadConfこの関数は、構成ファイルが更新されているかどうかを断続的に判別します。

  さらに進んでいるのはFile.lastModifiedです


* org.tuckey.web.filters.urlrewrite.dtdsパッケージの下に複数のファイルがあり、壁に囲まれるのを防ぐために直接引用することができます。
   
* UrlRewriteWrappedResponse.urlRerwiter.processEncodeURLは、ルールに従って、ユーザーが要求したURLをoutputUrlに変換します

  パッケージ内のコアロジックとコードのかなりの部分は、この関数とその後の解釈に費やされます。htaccess(all)構文が使用されていない場合、コードが大幅に少なくなる可能性があります。
  
  このパッケージは、htaccessを解釈するJavaのソースリファレンスを提供します。

* getNewChain関数を使用して新しいチェーンを生成し、最後にchain.doFilterを実行して、後続の操作のためにTomcatに渡します。

 

おすすめ

転載: blog.csdn.net/RoadToTheExpert/article/details/115306081