1、RequestParam
- value:指定请求参数名称
- required:指定请求参数是否必须包括,默认为true,提交无此参数则报错
- defaultValue:当没有指定请求参数时,则使用指定的默认值赋值
事例:
@RequestMapping("/quick9")
@ResponseBody
public UserInfo Test9(@RequestParam(value = "name", required = false, defaultValue = "zhangsan") String username) {
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setUserName(username);
userInfo.setPassword("123456");
return userInfo;
}
2、PathVariable :获取Restful风格的参数
- value:指定请求参数名称
- required:指定请求参数是否必须包括,默认为true,提交无此参数则报错
事例:
@RequestMapping("/quick10/{name}")
@ResponseBody
public UserInfo Test10(@PathVariable(value = "name", required = false) String username) {
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setUserName(username);
userInfo.setPassword("123456");
return userInfo;
}
3、Converter:自定义类型转换
代码代码:
/**
* 定义自定义的类型转化
*/
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date parse = null;
try {
parse = dateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return parse;
}
}
Spring-MVC.xml配置文件:
<!--转换器声明-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.itcast.converter.DateConverter"></bean>
</list>
</property>
</bean>
<!-- 注入转换器 -->
<mvc:annotation-driven conversion-service="conversionService"/>
4、RequestBody:获取Ajax请求参数信息
@RequestMapping(value = "/quick12",method = RequestMethod.POST)
@ResponseBody
public UserInfo Test12(@RequestBody UserInfo userInfo) {
System.out.println(userInfo);
return userInfo;
}
使用Ajax 过程中会引入js文件,但单纯的引入js文件并不能进行访问需要在Spring-mvc.xml中进行相应的配置
<!-- 资源访问授权 -->
<!-- 1、指定文件夹 -->
<!-- <mvc:resources mapping="/js/**" location="/js/"/>-->
<!-- 2、授权所有文件夹 -->
<mvc:default-servlet-handler/>
5、Form表单提交
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>提交</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick12" method="post">
姓名:<input type="text" name="UserName"/>
年龄:<input type="text" name="Password">
<input type="text" name="Id" value="1">
<input type="submit" value="提交"/>
</form>
</body>
</html>
@RequestMapping(value = "/quick12",method = RequestMethod.POST)
@ResponseBody
public UserInfo Test12(UserInfo userInfo) {
System.out.println(userInfo);
return userInfo;
}
注意事项:
1、在Post请求中,传入参数发生乱码。需要在Web.xml文件中配置编码过滤器。
<!--post请求中文乱码问题,编码过滤器-->
<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>
2、表单提交如果需要提交集合类型 则 设置文本的name ="集合参数名[下标].属性名"来进行标识,后台则使用对象将集合类型包装起来接收即可。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>提交</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick13" method="post">
姓名:<input type="text" name="userInfos[0].UserName"/>
年龄:<input type="text" name="userInfos[0].Password">
<input type="text" name="userInfos[0].Id" value="1"><br/>
姓名:<input type="text" name="userInfos[1].UserName"/>
年龄:<input type="text" name="userInfos[1].Password">
<input type="text" name="userInfos[1].Id" value="2">
<input type="submit" value="提交"/>
</form>
</body>
</html>
@RequestMapping(value = "/quick13",method = RequestMethod.POST)
@ResponseBody
public UserVo Test13(UserVo user) {
System.out.println(user);
return user;
}
最后为完整的实体信息
public class UserInfo {
private Integer Id;
private String UserName;
private String Password;
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
@Override
public String toString() {
return "UserInfo{" +
"Id=" + Id +
", UserName='" + UserName + '\'' +
", Password='" + Password + '\'' +
'}';
}
}
public class UserVo {
public List<UserInfo> getUserInfos() {
return userInfos;
}
public void setUserInfos(List<UserInfo> userInfos) {
this.userInfos = userInfos;
}
private List<UserInfo> userInfos;
@Override
public String toString() {
return "UserVo{" +
"userInfos=" + userInfos +
'}';
}
}
祝语:一分耕耘,一分收获。积累更多的知识攀登更高的山峰。