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
Em
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:
//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);
}
//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);
}
//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));
}
<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());
}
<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);
}
<mvc:resources mapping="/js/**" location="/js/"/>
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>
<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
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 |
@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
OBTER : | Acesso a recursos |
EXCLUIR: | excluir recurso |
POR: | Atualizar recursos |
PUBLICAR: |
Novo recurso
|
/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
|
//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
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>
<!--注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"/>
6. Obtenha o cabeçalho da solicitação
@RequestHeader
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);
}
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:
- Tipo de item de formulário="arquivo"
- O formulário é enviado por correio
- 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>
@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
- parâmetro de tipo básico
- Parâmetros do tipo POJO
- parâmetro de tipo de matriz
- Parâmetros do tipo de coleção
- problema chinês ilegível
- @RequestParam e @PathVariable
- Obter API relacionada ao Servlet
- @RequestHeader e @CookieValue
- Upload de arquivo