RequestParam
value:参数名字,即入参的请求参数名字,如value=“studentid”表示请求的参数区中的名字为studentid的参数的值将传入;
required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报400错误码;
defaultValue:默认值,表示如果请求中没有同名参数时的默认值
定义如下:
public String userlist(@RequestParam(defaultValue="2",value="group",required=true) String groupid) {
}
形参名称为groupid,但是这里使用value="group"限定参数名为group,所以页面传递参数的名必须为group。这里通过required=true限定groupid参数为必需传递,如果不传递则报400错误,由于使用了defaultvalue=”2”默认值即使不传group参数它的值为”2”,所以页面不传递group也不会报错,如果去掉defaultvalue=”2”且定义required=true则如果页面不传递group则会报错。
转发和重定向
转发
关键字:forward
本类进行转发:
本类方法与方法之间进行forward
转发方式:
方式一:return "forward:list.do";
<span style="color:#000000;">
//测试转发
@RequestMapping("forward")
public String forward(){
return "forward:list.do";
}</span>
方式二:return "forward:/user/list.do";
<span style="color:#000000;">//测试转发
@RequestMapping("forward")
public String forward(){
return "forward:/<span style="font-family:SimSun;">user</span>/list.do";
}</span>
注意:user根路径前面必须有/.
跨类进行转发:
转发方式:return "forward:/items/list.do";
重定向
关键字:redirect
本类进行重定向:
本类方法与方法之间进行redirect
重定向方式:
方式一:return "redirect:list.do";
<span style="color:#000000;">//测试重定向
@RequestMapping("redirect")
public String redirect(){
return "redirect:list.do";
}</span>
方式二:return "redirect:/user/list.do";
//测试重定向
@RequestMapping("redirect")
public String redirect(){
return "redirect:/user/list.do";
}
跨类进行重定向:
转发方式:return "redirect:/items/list.do";
//测试重定向
@RequestMapping("redirect")
public String redirect(){
return "redirect:/items/list.do";
}
RequestBody/ResponseBody处理Json数据
@RequestBody把前台页面专递json格式数据强制转换为javaBean
@RequestBody在后台把JavaBean转换为json格式的数据返回页面
这两个注解不能直接使用,需要依赖Jackson的jar包
作用:
@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。
本例子应用:
@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象
例1:请求Json响应Json
1.添加处理json数据配置
<!-- 注解适配器 :添加json转换器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</list>
</property>
</bean>
2.编写代码【请求json、返回json】
@Controller
@RequestMapping("json")
public class MyJsonController {
@RequestMapping("requestJson.do")
public @ResponseBody User requestJson(Model model,@RequestBody User u){
System.out.println("用户信息:"+u);
return u;
}}
3.编写页面ajax
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
//请求json,返回json
function request_json(){
var user = JSON.stringify({userName:"<span style="font-family:SimSun;">Keo</span>",age:21});
$.ajax({
type:'POST',
url: '${pageContext.request.contextPath}/json/requestJson.do',
contentType:'application/json;charset=utf-8',
data:user,
success : function(data){
alert(data.userName+":"+data.age);
}
})
}
</script>
</head>
<body>
<input type="button" onclick="request_json()" value="请求json,返回json">
</body>
</html>
请求pojo响应json
1.添加处理json数据配置【同上】
2.编写Controller代码
@Controller
@RequestMapping("json")
public class MyJsonController {
@RequestMapping("responseJson.do")
public @ResponseBody User responseJson(User user){
System.out.println(user);
return user;
}
}
3.编写页面代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
//请求pojo,返回json
function response_json(){
$.ajax({
type:'POST',
url: '${pageContext.request.contextPath}/json/responseJson.do',
data:'userName=张三&age=12',
success : function(data){
alert(data.userName+":"+data.age);
}
})
}
</script>
</head>
<body>
<input type="button" onclick="response_json()" value="请求pojo,返回json">
</body>
</html>
RequestBody和ResponseBody示例:
//接收json格式数据,使用RequestBody把json格式数据封装到User对象
//返回User对象,使用responseBody把User对象转换成json对象
@RequestMapping("requestJson")
public @ResponseBody User requestJson(@RequestBody User user){
System.out.println(user);
return user;
}