大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。
如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!!
Good better best, never let it rest, until good is better, and better best.
近期会重新温习一下SSM的相关知识,相应的博客会更新至专栏【SSM框架】中,欢迎大家关注!
SSM专栏:https://blog.csdn.net/weixin_43598687/category_11652306.html
// 获取基本类型参数
@RequestMapping("/data1")
@ResponseBody
public void data1(String username,String password){
System.out.println("username: " + username);
System.out.println("password: " + password);
}
控制台打印:
Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
// 获取POJO类型参数
@RequestMapping("/data2")
@ResponseBody
public void data2(User user){
System.out.println(user);
}
Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。
// 获取数组类型参数
@RequestMapping("/data3")
@ResponseBody
public void data3(String[] strings){
for(String string:strings){
System.out.println(string);
}
}
当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>
当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@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还有如下参数可以使用:
在业务方法中我们可以使用@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);
}
SpringMVC默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自定义转换器。
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;
}
}
<!-- 自定义请求参数类型解析器 -->
<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"/>
// 获取Date数据,并进行类型转换
@RequestMapping("/data6")
@ResponseBody
public void data6(Date date){
System.out.println("Date: " + date);
}
导入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,选择文件并提交
<%@ 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));
}
}
SSM专栏:https://blog.csdn.net/weixin_43598687/category_11652306.html
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/123462633
内容来源于网络,如有侵权,请联系作者删除!