Heim  >  Artikel  >  Java  >  Allgemeine Anmerkungen zu springmvc

Allgemeine Anmerkungen zu springmvc

angryTom
angryTomOriginal
2019-07-20 16:18:463351Durchsuche

Allgemeine Anmerkungen zu springmvc

Empfohlene Tutorials: Frühlings-Tutorial

1. Komponentenanmerkungen:

1. @Component-Anmerkung vor der Klassendefinition, und das wird so sein Kommentiert von Spring Containeridentifikation und Konvertierung in Bohnen.

2. @Repository kommentiert die Dao-Implementierungsklasse (spezielle @Component)

3. @Service wird zum Kommentieren der Geschäftslogikschicht verwendet (spezielle @Component)

4. @Controller wird zum Kommentieren der Kontrollschicht verwendet (speziell). @Component)

Die oben genannten vier Anmerkungen sind alle mit Anmerkungen in der Klasse versehen. Die mit Anmerkungen versehene Klasse wird bis zum Frühjahr als Bean initialisiert und dann einheitlich verwaltet.

Allgemeine Anmerkungen zu springmvc

2. Anmerkungen zu Anforderungs- und Parametertypen:

1. @RequestMapping: Wird zum Verarbeiten der Anforderungsadressenzuordnung verwendet und kann auf Klassen und Methoden angewendet werden.

Wert: Definieren Sie die Zuordnungsadresse der Anforderungsanforderung

Methode: Definieren Sie die Methode der Adressanforderung, einschließlich [GET , POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.] Die Get-Anforderung wird standardmäßig akzeptiert. Wenn die Anforderungsmethode von der definierten Methode abweicht, ist die Anforderung nicht erfolgreich.

 ●params: Definieren Sie die Parameterwerte, die in der Anforderungsanforderung enthalten sein müssen.

●headers: Definieren Sie, dass die Anforderungsanforderung bestimmte angegebene Anforderungsheader enthalten muss, z. B.: RequestMapping(value = "/something", headers = "content-type=text/*" ) gibt an, dass die Anfrage den Content-Type-Header „text/html“ und „text/plain“ enthalten muss, um eine passende Anfrage zu sein.

 ●consumes: Definieren Sie die Art des Inhalts, der übermittelt werden soll.

●erzeugt: Geben Sie den Inhaltstyp an, der zurückgegeben werden soll. Nur wenn der (Accept)-Typ im Anforderungsheader den angegebenen Typ enthält, wird

@RequestMapping(value="/requestTest.do",params = {"name=sdf"},headers = {"Accept-Encoding=gzip, deflate, br"},method = RequestMethod.GET)
     public String getIndex(){
         System.out.println("请求成功");
         return "index";
     }

Der obige Code zeigt an, dass es sich bei der Anforderungsmethode um eine GET-Anfrage handelt. Die Anforderungsparameter müssen den Parameter name=sdf enthalten und der Anforderungsheader muss dann den Typheader Accept-Encoding=gzip, deflate, br haben.

Allgemeine Anmerkungen zu springmvc

Auf diese Weise kann eine Anfrage durch Anmerkungen eingeschränkt werden.

2.@RequestParam: wird verwendet, um den Wert des eingehenden Parameters abzurufen

●Wert: der Name des Parameters

● Erforderlich: Definition Ob der eingehende Parameter erforderlich ist, der Standardwert ist true (ähnlich dem params-Attribut von @RequestMapping)

@RequestMapping("/requestParams1.do")
    public String requestParams1(@RequestParam(required = false) String name){
        System.out.println("name = "+name);
        return "index";
    }
    @RequestMapping("/requestParams2.do")
    public String requestParams2(@RequestParam(value = "name",required = false) String names){
        System.out.println("name = "+names);
        return "index";
    }

Die beiden Methoden zur Eingabe von Parametern sind gleich Der deklarierte Wert wird angezeigt. Geben Sie den Parameter ein. Der Parametername ist derselbe wie der Wert. Wenn keine explizite Deklaration vorliegt, wie bei der ersten Methode, ist der Name des Eingabeparameters derselbe wie der Name der Funktionsparametervariablen.

3.@PathViriable: Wird zum Definieren von Pfadparameterwerten verwendet

●Wert: der Name des Parameters

●erforderlich: definiert, ob der eingehende Parameter ein erforderlicher Wert ist

@RequestMapping("/{myname}/pathVariable2.do")    public String pathVariable2(@PathVariable(value = "myname") String name){
        System.out.println("myname = "+name);        return "index";
    }

Dieser Pfad deklariert dann {myname} als Pfadparameter Dieser Pfad hat einen beliebigen Wert. @PathVariable kann den Wert des Pfads basierend auf dem Wert ermitteln.

4.@ResponseBody: Durch Einwirken auf die Methode kann das gesamte Rückgabeergebnis in einem bestimmten Format zurückgegeben werden, z. B. JSON oder XML-Format.

 @RequestMapping("/{myname}/pathVariable2.do")
      @ResponseBody
      public String pathVariable2(@PathVariable(value = "myname") String name){
          System.out.println("myname = "+name);
          return "index";
      }

Allgemeine Anmerkungen zu springmvc

Es wird keine Seite, sondern eine Zeichenfolge „index“ zurückgegeben direkt auf der Seite gedruckt, was tatsächlich dem folgenden Code ähnelt.

PrintWriter out = resp.getWriter();
 out.print("index");
 out.flush();

5、@CookieValue:用于获取请求的Cookie值

 @RequestMapping("/requestParams.do")
      public String requestParams(@CookieValue("JSESSIONID") String cookie){
          return "index";
      }

6、@ModelAttribute:

  用于把参数保存到model中,可以注解方法或参数,注解在方法上的时候,该方法将在处理器方法执行之前执行,然后把返回的对象存放在 session(前提时要有@SessionAttributes注解) 或模型属性中,@ModelAttribute(“attributeName”) 在标记方法的时候指定,若未指定,则使用返回类型的类名称(首字母小写)作为属性名称。 

@ModelAttribute("user")
    public UserEntity getUser(){
        UserEntity userEntityr = new UserEntity();
        userEntityr.setUsername("asdf");
        return userEntityr;
    }

    @RequestMapping("/modelTest.do")
    public String getUsers(@ModelAttribute("user") UserEntity user){
        System.out.println(user.getUsername());
        return "/index";
    }

  如上代码中,使用了@ModelAttribute("user")注解,在执行控制器前执行,然后将生成一个名称为user的model数据,在控制器中我们通过注解在参数上的@ModelAttribute获取参数,然后将model应用到控制器中,在jsp页面中我们同样可以使用它,

 <body>
      ${user.username}
 </body>

7、@SessionAttributes

  默认情况下Spring MVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。配合@ModelAttribute("user")使用的时候,会将对应的名称的model值存到session中,

@Controller
@RequestMapping("/test")
@SessionAttributes(value = {"user","test1"})
public class LoginController{
    @ModelAttribute("user")
    public UserEntity getUser(){
        UserEntity userEntityr = new UserEntity();
        userEntityr.setUsername("asdf");
        return userEntityr;
    }

    @RequestMapping("/modelTest.do")
    public String getUsers(@ModelAttribute("user") UserEntity user ,HttpSession session){
        System.out.println(user.getUsername());
        System.out.println(session.getAttribute("user"));
        return "/index";
    }
}

  结合上一个例子的代码,加了@SessionAttributes注解,然后请求了两次,第一次session中不存在属性名为user的值,第二次请求的时候发现session中又有了,这是因为,这是因为第一次请求时,model数据还未保存到session中请求结束返回的时候才保存,在第二次请求的时候已经可以获取上一次的model了

1068779-20171027175359008-1504110330 (1).png

注意:@ModelAttribute("user") UserEntity user获取注解内容的时候,会先查询session中是否有对应的属性值,没有才去查询Model。

Das obige ist der detaillierte Inhalt vonAllgemeine Anmerkungen zu springmvc. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn