文字列を直接返す: このメソッドは、返された文字列をビュー パーサーのプレフィックスおよびサフィックスと連結してからジャンプします。
プレフィックスが付いた文字列を返します:
Forward: forward:/WEB-INF/views/index.jsp
Heavy Orientation : redirect:/index.jsp
ModelAndView オブジェクト経由で戻る
@RequestMapping("/quick2") public ModelAndView quickMethod2(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("redirect:index.jsp"); return modelAndView; } @RequestMapping("/quick3") public ModelAndView quickMethod3(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("forward:/WEB-INF/views/index.jsp"); return modelAndView; }
転送する場合、リクエストフィールドにデータを格納して JSP ページに表示する必要があることがよくあります。コントローラー内のコントローラーにデータを送信しますか? リクエスト ドメインにデータを保存する場合はどうでしょうか?
① SpringMVC フレームワークによって挿入されたリクエスト オブジェクトの setAttribute() メソッドを通じて設定されます。
@RequestMapping("/quick") public String quickMethod(HttpServletRequest request){ request.setAttribute("name","zhangsan"); return "index"; }
② ModelAndView の addObject() メソッドで設定します。
@RequestMapping("/quick3") public ModelAndView quickMethod3(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("forward:/WEB-INF/views/index.jsp"); modelAndView.addObject("name","lisi"); return modelAndView; }
文字列を直接返す: Web の基本段階では、クライアントはサーバーにアクセスします。文字列を直接書き戻して応答として返したい場合は、本文では、response .getWriter().print("hello world") を使用するだけで十分です。では、コントローラーに文字列を直接書き戻したい場合はどうすればよいでしょうか?
① response.getWriter().print("hello world") を使用して、SpringMVC フレームワークによって挿入された応答オブジェクトを通じてデータを書き戻します。このとき、ビュー ジャンプは必要なく、戻り値はビジネス方法は無効です。
@RequestMapping("/quick4") public void quickMethod4(HttpServletResponse response) throws IOException { response.getWriter().print("hello world"); }
② 書き戻す必要がある文字列を直接返しますが、この時点では @ResponseBody アノテーションを介して SpringMVC フレームワークに通知する必要があります。メソッドによって返される文字列はジャンプではなく、直接返されます。 http 応答本文内。
@RequestMapping("/quick5") @ResponseBody public String quickMethod5() throws IOException { return "hello springMVC!!!"; }
開発では、複雑な Java オブジェクトを JSON 形式の文字列に変換する必要があることがよくあります。Web 段階で学習した JSON 変換ツール jackson を使用して変換できます。
1 . pom 内で、ジャクソン座標を xml にインポートします。
<!--jackson--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency>
2. jackson を通じて json 形式の文字列を変換し、その文字列を書き戻します。
@RequestMapping("/quick7") @ResponseBody public String quickMethod7() throws IOException { User user = new User(); user.setUsername("zhangsan"); user.setAge(18); ObjectMapper objectMapper = new ObjectMapper(); String s = objectMapper.writeValueAsString(user); return s; }
オブジェクトまたはコレクションを返す
SpringMVC を使用すると、JSON 文字列を変換してオブジェクトまたはコレクションを書き戻し、プロセッサ アダプタのメッセージ変換パラメータを構成し、オブジェクトまたはオブジェクトに jackson を使用するように指定できます。 collections コレクション変換のため、以下の設定を spring-mvc.xml で行う必要があります:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </list> </property> </bean>
メソッドで直接オブジェクトまたはコレクションを返す
@RequestMapping("/quick8") @ResponseBody public User quickMethod8() throws IOException { User user = new User(); user.setUsername("zhangsan"); user.setAge(18); return user; }
メソッドに @ResponseBody を追加すると json 形式の文字列を返すことができますが、この設定は面倒で設定コードも多く必要となるため、上記の設定の代わりに mvc アノテーション ドライバーを使用することができます。
SpringMVC のさまざまなコンポーネントの中で、プロセッサ マッパー、プロセッサ アダプター、ビュー リゾルバーは SpringMVC の 3 つの主要コンポーネントと呼ばれます。
SpringMVC のデータ応答方法 1) ページジャンプ #文字列を直接返す ModelAndView オブジェクトを介して戻る 2) データを書き戻す<!--在spring-mvc.xml中配置mvc的注解驱动-->
<mvc:annotation-driven/>
4) 知識ポイント
以上がJava SpringMVC データ応答例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。