[SSMフレームワークシリーズのレビュー]8-SpringMVCがリクエストデータを取得

一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して8日目です。クリックしてイベントの詳細をご覧ください

1.基本的なタイプパラメータを取得します

ここに画像の説明を挿入

    // 获取基本类型参数
    @RequestMapping("/data1")
    @ResponseBody
    public void data1(String username,String password){
        System.out.println("username: " + username);
        System.out.println("password: " + password);
    }
复制代码

コンソールプリント:

ここに画像の説明を挿入

2.POJOタイプのパラメーターを取得します

コントローラのビジネスメソッドのPOJOパラメータの属性名は、リクエストパラメータの名前と同じであり、パラメータ値は自動的にマッピングされ、照合されます。ここに画像の説明を挿入ここに画像の説明を挿入

    // 获取POJO类型参数
    @RequestMapping("/data2")
    @ResponseBody
    public void data2(User user){
        System.out.println(user);
    }
复制代码

ここに画像の説明を挿入

3.配列型パラメーターを取得します

コントローラ内のビジネスメソッド配列の名前はリクエストパラメータの名前と同じであり、パラメータ値は自動的にマッピングされて照合されます。ここに画像の説明を挿入

    // 获取数组类型参数
    @RequestMapping("/data3")
    @ResponseBody
    public void data3(String[] strings){
        for(String string:strings){
            System.out.println(string);
        }
    }
复制代码

ここに画像の説明を挿入

4.文字化けしたリクエストデータの問題の処理

POSTリクエストの場合、データが文字化けして表示されます。エンコードをフィルタリングするためのフィルターを設定できます。

web.xmlで次のフィルターを構成します。

  <!-- 中文乱码过滤器 -->
  <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>
复制代码

5.RequestParamアノテーションバインディングパラメーター

リクエストのパラメータ名がコントローラのビジネスメソッドのパラメータ名と一致しない場合は、@RequestParamアノテーションで表示されるバインディングが必要です。ここに画像の説明を挿入

    // 通过RequestParam绑定参数
    @RequestMapping("/data4")
    @ResponseBody
    public void data4(@RequestParam("name") String username, @RequestParam("pwd") String password){
        System.out.println("username: " + username);
        System.out.println("password: " + password);
    }
复制代码

ここに画像の説明を挿入

アノテーション@RequestParamには、使用できる次のパラメーターもあります。

  • 値:リクエストパラメータ名付き
  • 必須:指定されたリクエストパラメータを含める必要があるかどうか、デフォルトはtrueです。送信時にそのようなパラメータがない場合は、エラーが報告されます。
  • defaultValue:リクエストパラメータが指定されていない場合、指定されたデフォルト値が割り当てに使用されます

6.Restfulスタイルのパラメーターを取得する

ここに画像の説明を挿入ビジネスメソッドでは、@PathVariableアノテーションを使用してプレースホルダーを照合できます。

    // 获取Restful风格的参数
    @RequestMapping("/data5/{username}/{password}")
    @ResponseBody
    public void data5(@PathVariable("username") String username,@PathVariable("password") String password){
        System.out.println("username: " + username);
        System.out.println("password: " + password);
    }
复制代码

ここに画像の説明を挿入

7.カスタムタイプコンバーター

SpringMVCは、クライアントから送信された文字列をパラメーター設定用のint型に変換するなど、デフォルトでいくつかの一般的な型コンバーターを提供しています。ただし、すべてのデータ型がコンバーターを提供するわけではなく、提供されていない場合はカスタムコンバーターが必要です。たとえば、日付タイプのデータの場合、カスタムコンバーターが必要です。

  1. DateConverterクラスを作成し、Converterインターフェイスを実装します

Converterインターフェースでパッケージをインポートする場合、インポートは org.springframework.core.convert.converter.Converter;

public class DateConverter implements Converter<String,Date> {
    @Override
    public Date convert(String str) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");

        try {
            Date date = format.parse(str);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return null;
    }

}
复制代码
  1. カスタムタイプコンバーターを構成する

spring-mvc.xmlでカスタムコンバーターを宣言します

    <!-- 自定义请求参数类型解析器 -->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.wang.converter.DateConverter"/>
            </list>
        </property>
    </bean>
复制代码

アノテーションドライバで参照されます

<mvc:annotation-driven conversion-service="conversionService"/>
复制代码
  1. テスト
    // 获取Date数据,并进行类型转换
    @RequestMapping("/data6")
    @ResponseBody
    public void data6(Date date){
        System.out.println("Date: " + date);
    }
复制代码

ここに画像の説明を挿入 ここに画像の説明を挿入

8.ファイルのアップロード

ileuploadとioの依存関係をインポートする

        <!--文件上传-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
复制代码

構成ファイルアップロードパーサー

    <!-- 文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--上传文件总大小-->
        <property name="maxUploadSize" value="5242800"/>
        <!--上传单个文件的大小-->
        <property name="maxUploadSizePerFile" value="5242800"/>
        <!--上传文件的编码类型-->
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
复制代码

fileUp.jspを作成します

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>文件上传测试</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/data7" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
复制代码
    // 文件上传
    @RequestMapping("/data7")
    @ResponseBody
    public void data7(@RequestParam("file") MultipartFile uploadFile) throws IOException {
        String originalFilename = uploadFile.getOriginalFilename();

        uploadFile.transferTo(new File("D:\\upload\\" + originalFilename));
    }
复制代码

JSPにアクセスし、ファイルを選択して送信します ここに画像の説明を挿入 ここに画像の説明を挿入

9.複数のファイルのアップロード

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>文件上传测试</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/data8" method="post" enctype="multipart/form-data">
    文件1:<input type="file" name="files"><br>
    文件2:<input type="file" name="files"><br>
    文件3:<input type="file" name="files"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
复制代码
    // 多文件上传
    @RequestMapping("/data8")
    @ResponseBody
    public void data8(@RequestParam("files") MultipartFile[] uploadFiles) throws IOException {
        for(MultipartFile uploadFile:uploadFiles){
            String originalFilename = uploadFile.getOriginalFilename();

            uploadFile.transferTo(new File("D:\\upload\\" + originalFilename));
        }
    }
复制代码

ここに画像の説明を挿入 ここに画像の説明を挿入

おすすめ

転載: juejin.im/post/7085595430457147423