Heim > Java > javaLernprogramm > Wie erhalte ich Anforderungsdaten in SpringMVC?

Wie erhalte ich Anforderungsdaten in SpringMVC?

王林
Freigeben: 2023-05-09 22:04:07
nach vorne
1554 Leute haben es durchsucht

    1. Anforderungsparameter abrufen

    Das Format der Client-Anforderungsparameter ist: Name=Wert&Name=Wert... Die Serverseite muss die angeforderten Parameter abrufen und manchmal muss SpringMVC Folgendes empfangen Parametertypen:

    1) Grundlegende Typparameter: Der Parametername der Geschäftsmethode in

    Controller muss mit dem Namen des Anforderungsparameters übereinstimmen, und der Parameterwert wird automatisch zugeordnet und abgeglichen.

    //http://localhost:8080/project/quick9?username=zhangsan&age=12
    @RequestMapping("/quick9")
    @ResponseBody
    public void quickMethod9(String username,int age) throws IOException {
        System.out.println(username);
        System.out.println(age);
    }
    Nach dem Login kopieren

    2) POJO-Typparameter: Der Attributname des POJO-Parameters der Geschäftsmethode in

    Controller stimmt mit dem Namen des Anforderungsparameters überein, und der Parameterwert wird automatisch zugeordnet und abgeglichen.

    //http://localhost:8080/itheima_springmvc1/quick9?username=zhangsan&age=12
    public class User {
        private String username;
        private int age;
        getter/setter…
    }
    @RequestMapping("/quick10")
    @ResponseBody
    public void quickMethod10(User user) throws IOException {
        System.out.println(user);
    }
    Nach dem Login kopieren

    3) Array-Typ-Parameter

    Der Name des Geschäftsmethoden-Arrays im Controller stimmt mit dem Namen des Anforderungsparameters überein, und die Parameterwerte werden automatisch zugeordnet und abgeglichen.

    //http://localhost:8080/project/quick11?strs=111&strs=222&strs=333
    @RequestMapping("/quick11")
    @ResponseBody
    public void quickMethod11(String[] strs) throws IOException {
        System.out.println(Arrays.asList(strs));
    }
    Nach dem Login kopieren

    4) Parameter des Sammlungstyps

    Beim Abrufen der Sammlungsparameter müssen Sie die Sammlungsparameter in ein POJO einbinden.

    <form action="${pageContext.request.contextPath}/quick12" method="post">
     <input type="text" name="userList[0].username"><br>
     <input type="text" name="userList[0].age"><br>
     <input type="text" name="userList[1].username"><br>
     <input type="text" name="userList[1].age"><br>
     <input type="submit" value="提交"><br>
    </form>
    Nach dem Login kopieren
    @RequestMapping("/quick12")
    @ResponseBody
    public void quickMethod12(Vo vo) throws IOException {
        System.out.println(vo.getUserList());
    }
    Nach dem Login kopieren

    Beim Senden mit Ajax können Sie den contentType als json angeben und dann @RequestBody an der Position des Methodenparameters verwenden, um die Sammlungsdaten direkt zu empfangen, ohne POJO zum Verpacken zu verwenden.

    <script>
    //模拟数据
    var userList = new Array();
    userList.push({username: "zhangsan",age: "20"});
    userList.push({username: "lisi",age: "20"});
    $.ajax({
    type: "POST",
    url: "/itheima_springmvc1/quick13",
    data: JSON.stringify(userList),
    contentType : &#39;application/json;charset=utf-8&#39;
    });
    </script>
    Nach dem Login kopieren
    @RequestMapping("/quick13")
    @ResponseBody
    public void quickMethod13(@RequestBody List<User> userList) throws 
    IOException {
        System.out.println(userList);
    }
    Nach dem Login kopieren

    Hinweis: Durch die Paketerfassung des Google-Entwicklertools wurde festgestellt, dass die JQuery-Datei nicht geladen wurde. Der Grund dafür ist, dass das URL-Muster des SpringMVC-Front-End-Controllers DispatcherServlet mit / konfiguriert ist, was bedeutet, dass alle Ressourcen werden gefiltert. Die folgenden zwei Methoden werden verwendet, um die Freigabe statischer Ressourcen anzugeben: • Geben Sie die freigegebenen Ressourcen im Spring-MVC an.

    Beim Posten werden die Daten verstümmelt web.xml, um die Kodierung zu filtern.

    <mvc:resources mapping="/js/**" location="/js/"/>
    Nach dem Login kopieren

    Wenn der angeforderte Parametername nicht mit dem Parameternamen der Geschäftsmethode des Controllers übereinstimmt, müssen Sie die Bindung über die Annotation @RequestParam anzeigen.

    <!--资源过滤器-->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    Nach dem Login kopieren

    3. Die Parameterbindungsannotation @RequestParam

    annotation @RequestParam verfügt außerdem über die folgenden Parameter, die verwendet werden können:

    Wert:

    Name des Anforderungsparameterserforderlich: Ob die angegebene Anforderung Parameter ist erforderlich oder nicht Einschließen, der Standardwert ist wahr. Wenn beim Senden kein solcher Parameter vorhanden ist, wird ein Fehler gemeldetStandardwert:Wenn keine Anforderungsparameter angegeben sind, wird der angegebene Standardwert für die Zuweisung verwendet
    <form action="${pageContext.request.contextPath}/quick14" method="post">
     <input type="text" name="name"><br>
     <input type="submit" value="提交"><br>
    </form>
    Nach dem Login kopieren
    Restful ist ein Software-Architekturstil und Designstil, kein Standard. Er stellt lediglich eine Reihe von Designprinzipien und Einschränkungen bereit. Wird hauptsächlich für interaktive Client-Server-Software verwendet. Software, die auf diesem Stil basiert, kann einfacher, mehrschichtig und einfacher zu implementierende Caching-Mechanismen sein.
    4. Restful-Stilparameter erhalten
    Restful Style Request verwendet „URL+Request-Methode“, um den Zweck einer Anfrage anzugeben. Die vier Verben im HTTP-Protokoll, die die Operationsmethode angeben, lauten wie folgt:

    GET:

    Ressourcen abrufen LÖSCHEN: Ressource löschenPUT:Ressource aktualisierenPOST:Neue Ressource Den Benutzer mit der ID = 1 abrufenDe Benutzer mit ID zulassen = 1 In SpringMVC können Platzhalter für die Parameterbindung verwendet werden. Die Adresse /user/1 kann als /user/{id} geschrieben werden und der Platzhalter {id} entspricht dem Wert 1. In der Geschäftsmethode können wir die Annotation @PathVariable verwenden, um einen Platzhalterabgleich zu erhalten.
    @RequestMapping("/quick14")
    @ResponseBody
    public void quickMethod14(@RequestParam(value="name",required = 
    false,defaultValue = "defaultname") String username) throws IOException {
    System.out.println(username);
    }
    Nach dem Login kopieren
    /Benutzer/1 LÖSCHEN:
    5. Benutzerdefinierter Typkonverter

    Obwohl SpringMVC standardmäßig einige häufig verwendete Typkonverter bereitstellt, z. B. die Konvertierung der vom Client übermittelten Zeichenfolge in den Int-Typ zur Parametereinstellung.
    //http://localhost:8080/itheima_springmvc1/quick19/zhangsan
    @RequestMapping("/quick19/{name}")
    @ResponseBody
    public void quickMethod19(@PathVariable(value = "name",required = true) String name){
    System.out.println(name);
    }
    Nach dem Login kopieren
    ② Deklarieren Sie den Konverter in der Konfigurationsdatei spring-mvc.xml
    public class DateConverter implements Converter<String, Date> {
        @Override
        public Date convert(String source) {
            SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = format.parse(source);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }
    }
    Nach dem Login kopieren
    <!--配置自定义转换器-->
        <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <bean class="converter.DateConverter"/>
                </list>
            </property>
        </bean>
    Nach dem Login kopieren
    @RequestHeaderWert
    Aber nicht alle Datentypen bieten Konverter. Wenn nicht, müssen Sie den Konverter anpassen. Für Datumstypdaten ist beispielsweise ein benutzerdefinierter Konverter erforderlich.
    Entwicklungsschritte des benutzerdefinierten Typkonverters: ① Definieren Sie die Konverterklasse, um die Konverterschnittstelle zu implementieren
    ③ In Referenzkonverter6. Rufen Sie den Anforderungsheader ab
    Verwenden Sie @RequestHeader, um die Anforderungsheaderinformationen abzurufen, die dem in der Webphase gelernten request.getHeader(name) entsprechen lauten wie folgt:

    Der Name des Anforderungsheaders

      erforderlich
    • Ob dieser Anforderungsheader übertragen werden muss

    • @RequestMapping("/quick17")
      @ResponseBody
      public void quickMethod17(@RequestHeader(value = "User-Agent",required = false) String 
      headerValue){
          System.out.println(headerValue);
      }
      Nach dem Login kopieren

      @CookieValue

      使用@CookieValue可以获得指定Cookie的值 @CookieValue注解的属性如下:

      value指定cookie的名称
      required是否必须携带此cookie
      @RequestMapping("/quick18")
      @ResponseBody
      public void quickMethod18(@CookieValue(value = "JSESSIONID",required = false) String jsessionid){
          System.out.println(jsessionid);
      }
      Nach dem Login kopieren

      7.文件上传

      文件上传客户端三要素:

      • 表单项type=“file”

      • 表单的提交方式是post

      • 表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data”

      <form action="${pageContext.request.contextPath}/quick20" method="post" 
      enctype="multipart/form-data">
      名称:<input type="text" name="name"><br>
      文件:<input type="file" name="file"><br>
       <input type="submit" value="提交"><br>
      </form>
      Nach dem Login kopieren

      文件上传步骤

      ① 在pom.xml导入fileupload和io坐标

      <!--文件下载-->
          <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
          </dependency>
          <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
          </dependency>
      Nach dem Login kopieren

      ② 配置文件上传解析器

      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
              <property name="defaultEncoding" value="UTF-8"/>
              <property name="maxUploadSize" value="500000"/>
          </bean>
      Nach dem Login kopieren

      ③ 编写文件上传代码

      @RequestMapping("/quick8")
          @ResponseBody
          public void save8(String name, MultipartFile uploadfile) {
              System.out.println("save8 running...");
              System.out.println(name);
              String filename = uploadfile.getOriginalFilename();
              try {
                  uploadfile.transferTo(new File("D:\\upload\\"+filename));
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      Nach dem Login kopieren

      Das obige ist der detaillierte Inhalt vonWie erhalte ich Anforderungsdaten in SpringMVC?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage