Notes d'étude SpringMVC-04 Développement d'annotations

1. @ Contrôleur

@Controller est utilisé pour annoter la classe de processeur. La classe avec cette annotation sera automatiquement instanciée et injectée dans le conteneur après avoir été analysée par le conteneur.

2. @ RequestingMapping

1. attribut de valeur

@RequestingMapping utilise l'attribut value pour spécifier le chemin de la requête. Lorsqu'il n'y a qu'un seul paramètre, la valeur est affectée à l'attribut value par défaut.

    @AliasFor("path")
    String[] value() default {};

A. @RequestingMapping est placé sur la méthode

package com.zzt.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {

    @RequestMapping("/some.do")
    public ModelAndView doSome(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-word");

        // 指定视图的路径 框架会自动通过forward进行请求转发 request.getRequestDispatcher("/show.jsp").forward(..)
        modelAndView.setViewName("show");

        return modelAndView;
    }

}

À ce stade, si la requête souhaite appeler la méthode doSome de l'objet contrôleur, le chemin de la requête doit être some.do.

<a href="some.do">发起请求</a>
 

B. @RequestingMapping est placé sur la classe

package com.zzt.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/Test")
public class MyController {

    @RequestMapping("/some.do")
    public ModelAndView doSome(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-word");

        // 指定视图的路径 框架会自动通过forward进行请求转发 request.getRequestDispatcher("/show.jsp").forward(..)
        modelAndView.setViewName("show");

        return modelAndView;
    }

}

À ce stade, si la requête souhaite appeler la méthode doSome de l'objet contrôleur, le chemin de la requête doit être /Test/some.do.

<a href="/Test/some.do">发起请求</a>

L'attribut C.value spécifie plusieurs mappages

value est un tableau qui peut stocker plusieurs mappages de chemins; c'est-à-dire que nous pouvons avoir plusieurs chemins de requête mappés à la même méthode. Afin d'éviter que le compilateur ne comprenne mal qu'il s'agit de l'affectation de deux attributs, nous utilisons {} pour indiquer que la valeur est affectée à value [].

    <a href="some.do">发起第一个请求</a>
    <a href="other.do">发起第二个请求</a>
package com.zzt.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {

    @RequestMapping(value = {"/some.do","/other.do"} )
    public ModelAndView doSome(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-word");

        // 指定视图的路径 框架会自动通过forward进行请求转发 request.getRequestDispatcher("/show.jsp").forward(..)
        modelAndView.setViewName("show");

        return modelAndView;
    }

}

2. méthode

méthode est utilisée pour spécifier que la méthode d'annotation nécessite le type de requête correspondant, généralement utilisé get et post; s'il n'est pas spécifié, cela signifie que le type de requête n'est pas limité.

Sur le Web, nous aurions dû apprendre que la requête get n'est pas sûre. Elle ajoutera les paramètres transmis à l'URL, mais cela ne signifie pas que get n'a aucun avantage. En fait, la demande de publication doit renvoyer le formulaire lorsqu'elle est annulée., Et get n'est pas nécessaire. Pour certaines occasions sans exigences de sécurité, get est suffisant.

package com.zzt.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/test")
public class MyController {

    @RequestMapping(value = "/some.do" , method = RequestMethod.GET)
    public ModelAndView doSome(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-get");
        
        modelAndView.setViewName("show");

        return modelAndView;
    }

    @RequestMapping(value = "/other.do", method = RequestMethod.POST)
    public ModelAndView doOther(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-post");
        
        modelAndView.setViewName("show");

        return modelAndView;
    }

    @RequestMapping(value = "/noLimit.do")
    public ModelAndView doNoLimit(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-nolimit");
        
        modelAndView.setViewName("show");

        return modelAndView;
    }

}
    <p>第一个项目</p>
    <a href="test/other.do">发起some.do请求</a>
    <br>
    <form action="test/some.do" method="post">
        <input type="submit" value="post请求提交">
    </form>
    <a href="test/noLimit.do">noLimit.do-get方式</a>
    <form action="test/noLimit.do" method="post">
        <input type="submit" value="post提交noLimit">
    </form>

1

Maintenant, nous modifions la méthode de requête:

    <p>第一个项目</p>
    <a href="test/other.do">发起some.do请求</a>
    <br>
    <form action="test/some.do" method="post">
        <input type="submit" value="post请求提交">
    </form>

On peut voir que si nous utilisons une méthode de requête autre que la méthode spécifiée, elle ne pourra pas accéder normalement car elle n'est pas prise en charge.

3. @RequestParam

        @RequestParam est utilisé pour spécifier quelle valeur de paramètre doit être attribuée à l'attribut actuellement spécifié. L'utilisation est la même que @Param dans Mybatis; elle ne peut être utilisée que dans la méthode du processeur. Lors de l'utilisation de la réception d'objet, le cadre recherchera le attributs requis par la classe d'entité Paramètres de demande.

Une valeur est utilisée pour spécifier le nom du paramètre dans la demande

    <p>提交参数</p>
    <form action="test/receiveProperty.do" method="post">
        姓名:<input type="text" name="rname"><br>
        年龄:<input type="text" name="rage"><br>
        <input type="submit" value="提交参数">
    </form>
    @RequestMapping(value = "/receiveProperty.do")
    public ModelAndView doReceiveProperty(@RequestParam(value = "rname") String name,@RequestParam(value = "rage") Integer age){
        ModelAndView modelAndView = new ModelAndView();

        System.out.println("age = " + age);

        modelAndView.addObject("name",name);
        modelAndView.addObject("age",age);

        modelAndView.setViewName("showProperty");

        return modelAndView;
    }

B. requis est utilisé pour spécifier si le paramètre doit exister

La valeur par défaut de required est true, ce qui signifie que le paramètre doit être inclus dans la demande. S'il n'existe pas, une erreur se produira. L'avantage de ceci est d'éviter que lorsque nous connaissons le chemin de la requête, nous n'accédions pas directement via le processus normal de soumission des paramètres: http: // localhost: 8080 / SpringMVC_01 / test / receiveProperty.do .

Comme le montre la figure ci-dessus, même si le chemin de la requête est connu, le serveur ne répondra pas normalement car les paramètres ne sont pas soumis normalement.

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_39304630/article/details/112872236
conseillé
Classement