検索
ホームページJava&#&チュートリアルSpringMVC学習シリーズ(5) データバインディング-2

シリーズ (SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2) では、@RequestParam を使用してデータをバインドする方法を紹介しました。他のデータ バインディング アノテーションの使用方法を見てみましょう。

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.@PathVariable は URL テンプレート変数の値をバインドするために使用されます。これの使用方法はシリーズ (SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2) ですでに紹介したので、ここでは詳しく説明しません。

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.@CookieValue は Cookie 内のデータをバインドするために使用されます。 Cookie 内の sessionId を取得してテストしてみましょう:

DataBindController に cookiebind アクションを追加します。コードは次のとおりです:

//@CookieValue Test@RequestMapping(value="/cookiebind", method = {RequestMethod.GET})public String cookieBind(HttpServletRequest request, Model model, @CookieValue(value="JSESSIONID", defaultValue="") String jsessionId){
    
    model.addAttribute("jsessionId", jsessionId);    return "cookiebindresult";
}


views フォルダーに cookiebindresult.jsp ビューを追加します。コードは次のとおりです:

nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2C//DTD HTML SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.0SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 Transitional//EN" "http://www.wSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.org/TR/htmlSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2/loose.dtd"><meta><title>Insert title here</title>
    ${jsessionId}


Run Test:

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2

sessionId が取得されていることがわかります。

注: @CookieValue にも @RequestParam と同様に SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 つのパラメータがあり、その意味は @RequestParam パラメータと同じです。

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2. @RequestHeader は、リクエスト ヘッダー内のデータをバインドするために使用されます。 @RequestHeader を使用して、デモンストレーション用の User-Agent を取得します。

DataBindController に requestheaderbind アクションを追加します。コードは次のとおりです。

//@RequestHeader Test@RequestMapping(value="/requestheaderbind", method = {RequestMethod.GET})public String requestHeaderBind(HttpServletRequest request, Model model, @RequestHeader(value="User-Agent", defaultValue="") String userAgent){
    
    model.addAttribute("userAgent", userAgent);    return "requestheaderbindresult";
}


views フォルダーに requestheaderbindresult.jsp ビューを追加します。コードは次のとおりです:

nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2C//DTD HTML SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.0SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 Transitional//EN" "http://www.wSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.org/TR/htmlSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2/loose.dtd"><meta><title>Insert title here</title>
    ${userAgent}


テストを実行します:

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2

User-Agent が取得されたことがわかります。

注: @RequestHeader にも @RequestParam と同様に SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 つのパラメーターがあり、その意味は @RequestParam パラメーターと同じです。

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.@ModelAttribute はデータをモデルにバインドします。シリーズ (SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2) の modelAutoBind アクションでは、フォームによって送信されたデータをモデルに追加するコードは次のとおりです:

@RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, Model model, AccountModel accountModel){
    
    model.addAttribute("accountmodel", accountModel);    return "modelautobindresult";
}

@ModelAttribute を使用すると、より簡単にデータをモデルに追加して変更できます。上記のコードのテストを実行します:

@RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, @ModelAttribute("accountmodel") AccountModel accountModel){    
    return "modelautobindresult";
}

:

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2

送信されたデータがまだ正常にバインドされていることがわかります。

SpringMVC学習シリーズ(5) データバインディング-2. Model のデータ スコープはリクエスト レベルです。これは、SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 つのリクエスト リクエストでは、他のリクエスト リクエストでリクエストされたモデルのデータを取得できないことを意味します。ただし、@SessionAttributes を使用してセッションにデータを保存し、複数のリクエスト間でデータを維持できるため、段階的にフォームを送信するなどの要件を実装できます。 SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 つのステップでデータを AccountModel にバインドする方法を見てみましょう:

在DataBindController上添加:

@SessionAttributes(value = "sessionaccountmodel")

在DataBindController添加usernamebind和passwordbind action,代码如下:

//@SessionAttributes Test@ModelAttribute("sessionaccountmodel")public AccountModel initAccountModel(){    
    return new AccountModel();
}

@RequestMapping(value="/usernamebind", method = {RequestMethod.GET})public String userNameBind( Model model, AccountModel accountModel){
    
    model.addAttribute("sessionaccountmodel", new AccountModel());    return "usernamebind";
}

@RequestMapping(value="/usernamebind", method = {RequestMethod.POST})public String userNameBindPost( @ModelAttribute("sessionaccountmodel") AccountModel accountModel){    
    //重定向到密码绑定测试
    return "redirect:passwordbind";
}

@RequestMapping(value="/passwordbind", method = {RequestMethod.GET})public String passwordBind(@ModelAttribute("sessionaccountmodel") AccountModel accountModel){    
    return "passwordbind";
}

@RequestMapping(value="/passwordbind", method = {RequestMethod.POST})public String passwordBindPost(@ModelAttribute("sessionaccountmodel") AccountModel accountModel, SessionStatus status){    
    //销毁@SessionAttributes存储的对象    status.setComplete();    //显示绑定结果
    return "sessionmodelbindresult";
}


由于我们在controller上指定了@SessionAttributes,所以在@ModelAttribute(“xxx”)注解的参数会直接在@SessionAttributes中查找名为”xxx”的对象,如果没有找到则调用@ModelAttribute(“xxx”)注解的方法返回对象并存入@SessionAttributes(如果没有找到且没有@ModelAttribute(“xxx”)注解的方法就会抛出HttpSessionRequiredException)。当执行到最后一步就可以调用SessionStatus .setComplete()方法把@SessionAttributes中保存对象销毁了(不会清除HttpSession中的数据)。

在views文件夹中添加usernamebind.jsp、passwordbind.jsp和sessionmodelbindresult.jsp视图内容分别如下:

nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2C//DTD HTML SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.0SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 Transitional//EN" "http://www.wSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.org/TR/htmlSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2/loose.dtd"><meta><title>Insert title here</title>
    <form>     
        用户名:<input><br>
        <input>
    </form>  


nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2C//DTD HTML SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.0SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 Transitional//EN" "http://www.wSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.org/TR/htmlSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2/loose.dtd"><meta><title>Insert title here</title>
    <form>     
        密 码:<password></password><br>
        <input>
    </form>  


nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2C//DTD HTML SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.0SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 Transitional//EN" "http://www.wSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.org/TR/htmlSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2/loose.dtd"><meta><title>Insert title here</title>
    用户名:${sessionaccountmodel.username}<br>
    密 码:${sessionaccountmodel.password}


运行测试:

SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2

SpringMVC学習シリーズ(5) データバインディング-2

SpringMVC学習シリーズ(5) データバインディング-2

可以看到我们已经成功的分SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2步把数据绑定到AccountModel中了。

注:

@SessionAttributes有value和types两个参数其中value指明要对象的名称,types指定要绑定对象的类型,如@SessionAttributes(value = "sessionaccountmodel", types=AccountModel.class)两者是and关系,需要同时满足。也可以同时指定多个value和types 如:@SessionAttributes(value = {"aa", "aa"} , types={XXX.class, YYY.class}) 。

SpringMVC学習シリーズ(5) データバインディング-2.@RequestBody 调用合适的MessageConvert来把非application/x-www-form-urlencoded请求中的内容转换为指定的对象它通常与@ResponseBody合用,@ResponseBody与.@RequestBody刚好相反,他把指定的对象转换为合适的内容(请求头为Accept:application/json 则返回json数据)并返回。这里我们用一个ajax请求做演示:

由于Spring默认解析json用的是Jackson,所以我们这里要把jackson-core-asl-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.9.SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.jar和jackson-mapper-asl-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.9.SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.jar两个包添加到我们项目。

修改AccountModel让其继承Serializable接口,并添加一个空的构造函数(为了Jackson做转换)。

在DataBindController添加requestBodyBindaction,代码如下:

//@RequestBody Test@RequestMapping(value="/requestbodybind", method = {RequestMethod.GET})public String requestBodyBind(Model model){
    
    model.addAttribute("accountmodel", new AccountModel());    return "requestbodybind";
}

@RequestMapping(value="/requestbodybind", method = {RequestMethod.POST})public @ResponseBody AccountModel requestBodyBind(@RequestBody AccountModel accountModel){            
    return accountModel;
}


在views文件夹中添加requestbodybind.jsp视图内容如下:

nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2C//DTD HTML SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.0SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2 Transitional//EN" "http://www.wSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.org/TR/htmlSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2/loose.dtd"><script></script><meta><title>Insert title here</title>
    <form>     
        用户名:<input><br>
        密 码:<password></password><br>
        <input>
    </form> 
    
    <script>
        $(function() { 
            $("#submit").click(function() {   
                var postdata = &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;{"username":"&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29; + $(&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;#username&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;).val() + &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;","password":"&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29; + $(&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;#password&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;).val() + &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;"}&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;;   
                $.ajax({  
                    type : &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;POST&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;,  
                    contentType : &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;application/json&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;,  
                    url : &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;http://www.php.cn/:8080/SpringMVCLesson/databind/requestbodybind&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;,  
                    processData : false,  
                    dataType : &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;json&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;,  
                    data : postdata,  
                    success : function(data) {  
                        alert(&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;username : &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;+data.username+&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;\npassword : &#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;+data.password);  
                    },  
                    error : function() {  
                        alert(&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;error...&#SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-29;);  
                    }  
                }); 
            });
        });    </script> 


运行测试:

SpringMVC学習シリーズ(5) データバインディング-2

結果は正しく、変換が成功したことが証明されています。

SpringMVC学習シリーズ(5) データバインディング-2.@RequestPart は、「multipart/form-data」型データをバインドし、javax.servlet.http.Part ファイルのアップロードをサポートし、型変換を実行できます。詳細については、公式ドキュメントを参照してください:

http://docs。 spring .io/spring-framework/docs/SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.x/spring-framework-reference/htmlsingle/#new-in-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2.SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2-mvc-requestpart

上記はSpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2)のData Binding-SpringMVC学習シリーズ(SpringMVC学習シリーズ(5) データバインディング-2) データバインディング-2の内容です。 )、その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境