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

Wie erhalte ich Anforderungsdaten in SpringMVC?

王林
王林nach vorne
2023-05-09 22:04:071534Durchsuche

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

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

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

    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>
    @RequestMapping("/quick12")
    @ResponseBody
    public void quickMethod12(Vo vo) throws IOException {
        System.out.println(vo.getUserList());
    }

    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>
    @RequestMapping("/quick13")
    @ResponseBody
    public void quickMethod13(@RequestBody List<User> userList) throws 
    IOException {
        System.out.println(userList);
    }

    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/"/>

    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>

    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>
    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);
    }
    /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);
    }
    ② 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;
        }
    }
    <!--配置自定义转换器-->
        <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <bean class="converter.DateConverter"/>
                </list>
            </property>
        </bean>
    @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 2c9e182d80bb0e092d1da29bee424e33 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);
      }

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

      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>

      文件上传步骤

      ① 在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>

      ② 配置文件上传解析器

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

      ③ 编写文件上传代码

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

    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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen