Maison >Java >javaDidacticiel >Exemple d'analyse de réponse aux données Java SpringMVC

Exemple d'analyse de réponse aux données Java SpringMVC

WBOY
WBOYavant
2023-05-21 12:16:06807parcourir

1) Saut de page

Renvoyer la chaîne directement : cette méthode concatènera la chaîne renvoyée avec le préfixe et le suffixe de l'analyseur de vue, puis sautera.

Exemple danalyse de réponse aux données Java SpringMVC

Renvoie une chaîne avec le préfixe :

Forward : forward:/WEB-INF/views/index.jsp

Redirect: redirect:/index.jsp

Return via l'objet 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;
}

in Lors du transfert, les données sont souvent stockées dans le champ de requête et affichées dans la page jsp. Alors, comment le contrôleur stocke-t-il les données dans le champ de requête ?

① Défini via la méthode setAttribute() de l'objet requête injecté par le framework SpringMVC.

@RequestMapping("/quick")
public String quickMethod(HttpServletRequest request){
    request.setAttribute("name","zhangsan");
    return "index";
}

② Défini via la méthode addObject() de ModelAndView.

@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("forward:/WEB-INF/views/index.jsp");
    modelAndView.addObject("name","lisi");
    return modelAndView;
}

2) Réécrire les données

Renvoyer directement la chaîne : dans l'étape de base du Web, le client accède au serveur. Si vous souhaitez réécrire directement la chaîne et la renvoyer comme corps de réponse, il vous suffit d'utiliser la réponse. .getWriter().print(" hello world"), et si vous souhaitez réécrire une chaîne directement dans le contrôleur ?

① Utilisez Response.getWriter().print("hello world") pour réécrire les données via l'objet de réponse injecté par le framework SpringMVC. À l'heure actuelle, aucun saut de vue n'est requis et la valeur de retour de la méthode métier est. vide.

@RequestMapping("/quick4")
public void quickMethod4(HttpServletResponse response) throws IOException {
    response.getWriter().print("hello world");
}

② Renvoyez directement la chaîne qui doit être réécrite, mais à ce stade, vous devez informer le framework SpringMVC via l'annotation @ResponseBody. La chaîne renvoyée par la méthode n'est pas un saut mais est renvoyée directement dans la réponse http. corps.

@RequestMapping("/quick5")
@ResponseBody
public String quickMethod5() throws IOException {
    return "hello springMVC!!!"; 
}

En développement, nous avons souvent besoin de convertir des objets Java complexes en chaînes au format json. Nous pouvons utiliser l'outil de conversion json jackson que nous avons appris lors de la phase Web pour convertir

1.

<!--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. Convertissez la chaîne au format json via jackson et réécrivez la chaîne.

@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;
}

Renvoyer des objets ou des collections

Utilisez SpringMVC pour nous aider à convertir des objets ou des collections en chaînes json et à les réécrire, configurer les paramètres de conversion de message pour l'adaptateur de processeur et spécifier l'utilisation de Jackson pour convertir des objets ou des collections, nous avons donc besoin utiliser spring -Configurez les éléments suivants dans 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>

Renvoyer des objets ou des collections directement dans la méthode

@RequestMapping("/quick8")
@ResponseBody
public User quickMethod8() throws IOException {
    User user = new User();
    user.setUsername("zhangsan");
    user.setAge(18);
    return user;
}

3) Configurer le pilote d'annotation

Ajouter @ResponseBody à la méthode pour renvoyer une chaîne au format json, mais cela la configuration est plus gênante, il y a beaucoup de code de configuration, nous pouvons donc utiliser le pilote d'annotation de mvc au lieu de la configuration ci-dessus.

Parmi les différents composants de SpringMVC, le mappeur de processeur, l'adaptateur de processeur et le résolveur de vue sont appelés les trois composants principaux de SpringMVC.

Utilisez pour charger automatiquement RequestMappingHandlerMapping (mappeur de traitement) et RequestMappingHandlerAdapter (adaptateur de traitement), qui peuvent être utilisés dans le fichier de configuration Spring-xml.xml pour remplacer le fichier de configuration Spring-xml.xml. configuration du processeur d’annotation et de l’adaptateur.

Utilisez également Par défaut, la couche sous-jacente intégrera Jackson pour convertir les chaînes d'objets ou de collections au format json.

<!--在spring-mvc.xml中配置mvc的注解驱动--> 
<mvc:annotation-driven/>

4) Points de connaissance

Méthode de réponse aux données de SpringMVC

1) Saut de page

  • Renvoyer directement la chaîne

  • Retour via l'objet ModelAndView

2) Réécrire les données

  • Chaîne de retour directement

  • Retourner objet ou collection

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer