SpringMVC入门笔记(三)

本文介绍SpringMVC中的RequestParam注解用法,包括参数名、默认值及必填属性设置,并演示转发与重定向的区别。此外,还详细讲解了如何利用@RequestBody和@ResponseBody处理JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值