Struts2 ジャンプ後に CSS と JS が無効になる問題の解決策のアイデアと実装手順

Struts2 ジャンプ後に CSS と JS が無効になる問題の解決策のアイデアと実装手順
struts2 アクションの実行後にジャンプした jsp が表示されると、css が機能しません。問題が発生しているプロジェクトを例に挙げます。
アクションは次のとおりです。

コードをコピー
コードは次のとおりです。

<アクション名="listUser" クラス="listUserAction">
<結果>/users/userList.jsp</結果>
</アクション>

(: listUser の機能は、すべてのユーザーを検索し、それらを userList.jsp のユーザーの下に表示することです。spring が使用されているため、ここでの「listUserAction」は applicationContext.xml で設定された名前です)
userList.jsp の CSS 設定は次のとおりです

コードをコピー
コードは次のとおりです。

<link href="../css/style.css" rel="スタイルシート" type="text/css" />

(: ディレクトリ階層は次のようになります。WebRoot の下には users フォルダと css フォルダがあるため、users の下の jsp が style.css を呼び出す場合は、ルート ディレクトリに移動して css フォルダを見つける必要があります)
ただし、listUser から正常に実行した後に、プログラムが /users/userList.jsp にジャンプすると、/css/style.css が機能しません。アドレスバーに直接 jsp を表示した場合は正常に表示されます。
インターネットで見つかった方法では、 CSS に絶対パスを使用するように書かれています

コードをコピー
コードは次のとおりです。

<link href="http://blog.163.com/<%=request.getContextPath%>/css/style.css" rel="スタイルシート" type="text/css" />

しかし、これには明らかな欠点があり、それは携帯性が悪いということです。
結果を <result>userList.jsp</result> に変更し、jsp をルート ディレクトリに置くと、このような問題は発生しません。この時点で、問題の原因はほぼわかっています。つまり、アクションがルート ディレクトリにあります。プログラムを実行するときにアドレス バーから確認できます。つまり、名前空間がルート ディレクトリにあり、"../css/style.css" は当然見つかりません。
問題を理解すれば、解決策は簡単に見つかります。 listUser が設定されているパッケージを見つけて、namespace="/users" を追加します。今がその時だ

コードをコピー
コードは次のとおりです。

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts 構成 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<ストラット>
<パッケージ名="users" は、="struts-default" 名前空間="/users"> を拡張します。
......
<アクション名="listUser" クラス="listUserAction">
<結果>/users/userList.jsp</結果>
</アクション>
......
</パッケージ>
</strusts>

その後、サーバーを再起動すると、正常に表示されます。同時に、アドレスバーのアクションの前に「/users」が追加されていることもわかります。また、接続されたビデオにジャンプする場合も「/users/userList.jsp」になるため、一貫性が保たれ、問題が解決されます。

<<:  MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう

>>:  Intellij IDEA による Docker イメージの展開方法の手順の迅速な実装

推薦する

CSS グラデーション効果の概要 (線形グラデーションと放射状グラデーション)

線形グラデーション 背景画像: linear-gradient(方向、開始色、中間色1、中間色2、....

CSS でレスポンシブ レイアウトを実装する方法

CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

1つの記事でJavaScriptのクロージャ関数について学ぶ

目次変数のスコープ閉鎖の概念クロージャの使用クロージャのデメリット最後に、クロージャのメリットとデメ...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...

CentOS 7 で RPM パッケージを使用して MySQL 5.7.9 をインストールするチュートリアル

MySQL 5.7.9 のインストールチュートリアルを録画してみんなと共有しましょう環境の紹介:オペ...

Uniappがスライディングスコアリング効果を実現

この記事では、スライディングスコアリングを実装するためのuniappの具体的なコードを参考までに共有...

MySQL実践ウィンドウ関数SQL分析クラスの生徒のテストの成績と生活費

目次1. 背景2. テーブル作成ステートメントとデータ挿入テーブルを作成するデータの挿入3. ウィン...

この記事ではCSSの組み合わせセレクターの使い方を説明します

CSS 組み合わせセレクターには、単純なセレクターのさまざまな組み合わせが含まれます。 CSS3 に...

クリックして認証コードと認証を切り替えるJavaScript

この記事では、クリックして切り替える認証コードと認証を実装するためのJavaScriptの具体的なコ...

Ubuntu Server 16.04 MySQL 8.0 のインストールと設定のグラフィックチュートリアル

Ubuntu Server 16.04 MySQL 8.0 のインストールと設定のグラフィックチュー...

SSMは、mysqlデータベースアカウントのパスワード暗号文ログイン機能を実装します。

導入当社は、情報セキュリティと機密アプリケーションに関わるいくつかのプロジェクトの研究開発に従事して...

ウェブサイトを高速化する

パフォーマンスは本当に重要ですか?パフォーマンスは重要であり、誰もがそれを知っています。なぜ私たちは...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...