2

私のWARの構造は次のとおりです。

my-web-app.war/
    views/
        index.html
        blah.html
    META-INF/
        MANIFEST.MF
    WEB-INF/
        web.xml
        lib/
            <!-- Dependencies -->
        classes/
            org.me.mywebapp.controllers/
                MyController.class
            <!-- Other packages/classes as well -->

web.xmlWAR がローカルにデプロイされたときに、そのindex.htmlページにアクセスしてアクセスできるように構成したいと思いますhttp://localhost/my-web-app/index.html

これが私がこれまでに持っているものです:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

    <!-- The display name of this web application -->
    <display-name>My Web App</display-name>

    <listener>
        <listener-class>
            org.me.mywebapp.context.ContextImpl
        </listener-class>
    </listener>
</web-app>

この URL を構成してマッピングを表示するにはどうすればよいですか? 前もって感謝します!

4

3 に答える 3

6

このようにサーブレットをマップできます

<servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>org.me.mywebapp.controllers.MyController</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>index.html</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>controller2</servlet-name>
    <servlet-class>org.me.mywebapp.controllers.OtherController</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>controller2</servlet-name>
    <url-pattern>blah.html</url-pattern>
</servlet-mapping>

また、view/blah.html を /blah.html として表示したい場合は、コントローラで、適切な views/ * .html または jsp など、必要なものにリクエストをディスパッチするだけです。

EDIT:あなたが要求したように:次のようにサーブレット内の別のページにリクエストをディスパッチできます:

RequestDispatcher dispatcher = 
       getServletContext().getRequestDispatcher("/views/blah.html");
dispatcher.forward(request, response);

上記のコードは機能していますが、特にアプリケーションに多くのコントローラーやビューなどがある場合は、ディスパッチするビューを決定するために、おそらく各サーブレット内でより「洗練された」アプローチを実装する必要があります。まだやっていません。

于 2012-08-06T12:53:59.467 に答える
1

view特定のリクエストをパスにルーティングするフィルタを使用できます。応答を参照してください: https://stackoverflow.com/a/3593513/221951次に、リクエストをサーブレットに渡すかどうかをフィルターで決定します。

また、Tuckey URL 書き換えフィルターhttp://tuckey.org/urlrewrite/を使用することもできます。

于 2012-08-06T13:05:25.990 に答える
-1

これを行うには、フィルターで URL を書き換えます。

Struts、Spring MVC、Tapestry、Wicket などのほとんどのフレームワークで実装されているように

于 2012-08-06T12:54:30.157 に答える