[SSM atinge a grande fábrica diretamente] Capítulo 6: SpringMVC obtém dados de solicitação

contente

SpringMVC obtém dados de solicitação

1. Obtenha parâmetros de solicitação

2. Solicite caracteres ilegíveis

3. Anotação de vinculação de parâmetros @RequestParam

4. Obtenha parâmetros no estilo Restful

5. Conversores de tipos personalizados

6. Obtenha o cabeçalho da solicitação

7. Upload de arquivo

8. Resumo


c8a1e35319f448739dd23d6d8ce31930.png6ee7f9c8dfb4455d910622806668da71.pngEm

SpringMVC obtém dados de solicitação

1. Obtenha parâmetros de solicitação

O formato dos parâmetros de solicitação do cliente é: name=value&name=value... ... O servidor precisa obter os parâmetros solicitados e, às vezes, também precisa encapsular os dados. O SpringMVC pode receber os seguintes tipos de parâmetros:

1) Parâmetros básicos do tipo:​​​​​​​
 
O nome do parâmetro do método de negócios no Controller deve ser igual ao nome do parâmetro de solicitação e o valor do parâmetro será mapeado e correspondido automaticamente.
//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) Parâmetros do tipo POJO:
 
O nome do atributo do parâmetro POJO do método de negócios no Controlador é o mesmo que o nome do parâmetro de solicitação e o valor do parâmetro será mapeado e correspondido automaticamente.
//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) Parâmetros do tipo array
 
O nome da matriz de métodos de negócios no Controlador é igual ao nome do parâmetro de solicitação e o valor do parâmetro será mapeado e correspondido automaticamente.
//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) Parâmetros do tipo de coleção
 
Ao obter um parâmetro de coleção, você precisa encapsular o parâmetro de coleção em um POJO.
<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());
}
      Ao usar ajax para enviar, você pode especificar o contentType como json e, em seguida, usar @RequestBody na posição do parâmetro do método para receber os dados da coleção diretamente sem envolvê-los com POJO.
Em
<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 : 'application/json;charset=utf-8'
});
</script>
@RequestMapping("/quick13")
@ResponseBody
public void quickMethod13(@RequestBody List<User> userList) throws 
IOException {
    System.out.println(userList);
}
Perceber:
Através das ferramentas do desenvolvedor do Google para capturar o pacote, verifica-se que o arquivo jquery não está carregado, o motivo é o front controller do SpringMVC
O padrão de url do DispatcherServlet é configurado com /, o que significa que todos os recursos são filtrados. Podemos especificar a liberação de recursos estáticos das duas maneiras a seguir:
• Especifique os recursos liberados no arquivo de configuração spring-mvc.xml
<mvc:resources mapping="/js/**" location="/js/"/>
• Ou use a tag <mvc:default-servlet-handler/>
 

2. Solicite caracteres ilegíveis

Quando o post solicitar, os dados aparecerão ilegíveis, podemos definir um filtro no web.xml para filtrar a codificação.

<!--资源过滤器-->
    <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>
Quando o nome do parâmetro da solicitação é inconsistente com o nome do parâmetro do método de negócios do controlador, a associação exibida pela anotação @RequestParam é necessária.
<form action="${pageContext.request.contextPath}/quick14" method="post">
 <input type="text" name="name"><br>
 <input type="submit" value="提交"><br>
</form>

3. Anotação de vinculação de parâmetros @RequestParam

A anotação @RequestParam também possui os seguintes parâmetros que podem ser utilizados:
valor : nome do parâmetro de solicitação
necessário : Se os parâmetros de solicitação especificados devem ser incluídos, o padrão é true, se não houver tal parâmetro ao enviar, um erro será relatado
Valor padrão : Quando nenhum parâmetro de solicitação é especificado, o valor padrão especificado é usado para a atribuição
Em
@RequestMapping("/quick14")
@ResponseBody
public void quickMethod14(@RequestParam(value="name",required = 
false,defaultValue = "defaultname") String username) throws IOException {
System.out.println(username);
}

4. Obtenha parâmetros no estilo Restful

 

Restful é um estilo de arquitetura e estilo de design , não um padrão, mas apenas fornece um conjunto de princípios e restrições de design. Usado principalmente para software de interação cliente-servidor, o software projetado com base nesse estilo pode ser mais conciso, mais hierárquico e mais fácil de implementar mecanismos de cache.
 
As solicitações no estilo Restful usam "url + método de solicitação" para indicar a finalidade de uma solicitação. Os quatro verbos no protocolo HTTP que indicam o método de operação são os seguintes:
OBTER : Acesso a recursos
EXCLUIR: excluir recurso
POR: Atualizar recursos
PUBLICAR:
Novo recurso
Por exemplo:
/usuário/1 GET : obter usuário com id = 1
/user/1 DELETE: excluir usuário com id = 1
/usuário/1 PUT: atualizar usuário com id = 1
POST do usuário:
Adicionar usuário
 
O 1 no endereço de url acima /user/1 é o parâmetro de solicitação a ser obtido e os espaços reservados podem ser usados ​​para vinculação de parâmetros no SpringMVC. O endereço /user/1 pode ser escrito como /user/{id}, e o placeholder {id} corresponde ao valor 1. No método de negócios, podemos usar a anotação @PathVariable para corresponder aos espaços reservados.
//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);
}

5. Conversores de tipos personalizados

 

• Embora o SpringMVC tenha fornecido alguns conversores de tipo comuns por padrão, por exemplo, a string enviada pelo cliente é convertida em um tipo int para configuração de parâmetros.
• Mas nem todos os tipos de dados fornecem conversores, e conversores personalizados são necessários para aqueles que não são fornecidos. Por exemplo, para dados de tipo de data, são necessários conversores personalizados.
Etapas de desenvolvimento para conversores de tipo personalizado:
① Defina a classe do conversor para implementar a interface do conversor
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;
    }
}
② Declare o conversor no arquivo de configuração spring-mvc.xml
<!--配置自定义转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="converter.DateConverter"/>
            </list>
        </property>
    </bean>
③ Consulte o conversor em <acionado por anotação>
 <!--注解驱动-->
    <mvc:annotation-driven conversion-service="conversionService"/>

6. Obtenha o cabeçalho da solicitação

@RequestHeader

Use @RequestHeader para obter informações do cabeçalho da solicitação, que é equivalente a request.getHeader(name) aprendido no estágio da web
As propriedades da anotação @RequestHeader são as seguintes:
valor
o nome do cabeçalho da solicitação
requerido Se deve transportar este cabeçalho de solicitação
 
@RequestMapping("/quick17")
@ResponseBody
public void quickMethod17(@RequestHeader(value = "User-Agent",required = false) String 
headerValue){
    System.out.println(headerValue);
}
@CookieValue
 
Use @CookieValue para obter o valor do cookie especificado
Os atributos da anotação @CookieValue são os seguintes:
valor
Especifique o nome do cookie
requerido É obrigatório levar este cookie
@RequestMapping("/quick18")
@ResponseBody
public void quickMethod18(@CookieValue(value = "JSESSIONID",required = false) String jsessionid){
    System.out.println(jsessionid);
}

7. Upload de arquivo

Três elementos do cliente de upload de arquivo:

  1. Tipo de item de formulário="arquivo"
  2. O formulário é enviado por correio
  3. O atributo enctype do formulário é um formulário multipartes e 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>

 Etapas de upload de arquivo

Importar upload de arquivo e coordenadas io em pom.xml

<!--文件下载-->
    <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>

② Analisador de upload de arquivo de configuração

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="maxUploadSize" value="500000"/>
    </bean>
③ Escreva o código de upload do arquivo
@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();
        }
    }

8. Resumo

MVC implementa a configuração de parâmetros de solicitação de dados
  • parâmetro de tipo básico
  • Parâmetros do tipo POJO
  • parâmetro de tipo de matriz
  • Parâmetros do tipo de coleção
MVC obtém processamento de dados de solicitação
  • problema chinês ilegível
  • @RequestParam e @PathVariable
  • Obter API relacionada ao Servlet
  • @RequestHeader e @CookieValue
  • Upload de arquivo

 

Acho que você gosta

Origin blog.csdn.net/qq_52360069/article/details/123804314
Recomendado
Clasificación