6

この質問がこれと非常に似ていることは知っていますが、ここで独自の質問を正当化するのに十分なほど具体的で異なると感じています。

私は、ドキュメントを残さなかった唯一の開発者から Java Web アプリ プロジェクトを継承しました。次のような基本的なパッケージ構造を持つ Spring MVC アプリです。

com.ourOrg.app.controllers
    ImageController
    ProgramController
    UserController
com.ourOrg.app.otherPackages

各クラスは、および でController注釈が付けられた単なる POJOです。例えば:@Controller@RequestMapping("/blah")

@Controller
@RequestMapping("/images")
public class ImageController() {
    @RequestMapping(value="/saveImage", method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity<String> saveImage(@RequestParam(value="imageData", required=true) String imageXML, HttpServletRequest request){
        // This method gets executed whenever the:
        // http://ourSite.com/images/saveImage
        // URL is hit
    }
}

ブラウザーのキャッシュを無効にするために、次の HTTP ヘッダーを Spring 構成に追加するように依頼されました。

プラグマ: no-cache

キャッシュ制御: キャッシュなし

期限切れ: -1

WebContentGenerator上記のリンク先の記事では、コントローラーがこのクラスを拡張する必要があるように聞こえます。残念ながら、膨大な数のメソッドを持つコントローラーが多数あるため、それぞれをリファクタリングしていくつかの基本型を拡張または継承することは、実際には実行可能なオプションではありません (それが唯一のオプションでない限り!)。

応答ヘッダーを変更する AOP インターセプターを使用するように Spring を構成する必要があるように思われる記事も見てきましたが、今では本当になじみのない領域に入り込んでいます。

Spring MVC のセットアップと実装を考えると、サーバーから返されるすべての応答にこれら 3 つの単純なヘッダーを追加する最も簡単な方法は何ですか (実行されるコントローラーまたはメソッドに関係なく)。

前もって感謝します!

4

2 に答える 2

3

Spring 3を使用していることを願って、インターセプターを見ることができます。そうすれば、すべてのコントローラーを変更する必要はありません(多くのコントローラーがあると言ったため)。使用できるものをすでに実装しているようです。この質問に対する Bozho の回答をチェックして、アノテーションによって spring mvc 3 でヘッダーをキャッシュなしに設定する方法を確認してください。

于 2012-05-15T19:53:41.230 に答える
-1

これは古い投稿だと思いますが、これは誰かの助けになるかもしれません。この例では Spring を使用しています。

主なことは、パラメーターに注釈を使用することです。

@Controller
public class HelloController {
 
    @RequestMapping(value = "/hello.htm")
    public String hello(@RequestHeader(value="User-Agent") String userAgent)
 
        //..
    }
}
于 2016-03-02T02:07:30.963 に答える