文章目录
参数注入
基本数据类型
如果处理器中的方法test1中参数的名称与表单中对应表单项的name属性相同时,SpringMVC会自动将数据类型转换并实现注入
index.jsp代码
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<body>
<form action="<%=basePath%>test1" method="post">
name:<input type="text" name="name"/><br>
age:<input type="text" name="age"/><br>
sex:<input type="radio" name="sex" value="true"/>女
<input type="radio" name="sex" value="false"/>男<br>
<input type="submit" value="提交"/>
</form>
</body>
</html>
处理器UserController
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class UserController {
@RequestMapping("/test1")
public String test1(String name,int age,boolean sex){
//输出的值为表单中提交的值
System.out.println(name);
System.out.println(age);
System.out.println(sex);
return "index";
}
}
如果test1方法中参数的名称与表单中对应表单项的name属性不相同时,需要设置@RequestParam注解的value属性值来实现参数注入
@RequestMapping("/test1")
//required可以指定请求是否一定要携带该参数,值为true代表必须携带该参数。
public String test1(@RequestParam(value = "name",required = false) String username,int age,boolean sex){
System.out.println(name);
System.out.println(age);
System.out.println(sex);
return "index";
}
一些注意细节:
在实体类User中的成员变量如果为基本数据类型,最好使用其包装类。
因为使用包装类默认值为null,将其转换为JSON字符串输出时,为null的数据不会输出;
如果使用基本数据类型,那么会存在默认值,当前台没有提交数据时,后台还是会输出其默认值
过滤器解决中文乱码问题
如果前台提交的数据中存在中文,可以在web.xml中配置过滤器解决这个问题
<!--注意filter配置需要位于servlet配置前面,否则会报错-->
<!--CharacterEncodingFilter是Spring提供的编码字符集过滤器,用于解决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>
引用数据类型
如果处理器中的方法test2中参数user的成员变量名称与表单中对应表单项的name属性相同时,SpringMVC会自动将数据类型转换并实现注入。
处理器UserController
import com.alibaba.fastjson.JSON;
import com.young.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class UserController {
@RequestMapping("/test2")
public String test2(User user){
System.out.println(JSON.toJSONString(user,true));
return "index";
}
}
实体类User
public class User {
private String name;
private Integer age;
private Boolean sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setA