1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > springmvc中Controller方法的返回值

springmvc中Controller方法的返回值

时间:2024-08-17 21:34:22

相关推荐

springmvc中Controller方法的返回值

1.1返回ModelAndView

controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。

1.2返回void

在controller方法形参上可以定义request和response,使用request或response指定响应结果:

1、使用request转向页面,如下:

request.getRequestDispatcher("页面路径").forward(request, response);

2、也可以通过response页面重定向:

response.sendRedirect("url")

3、也可以通过response指定响应结果,例如响应json数据如下:

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

response.getWriter().write("json串");

1.3返回字符串

1.3.1逻辑视图名

controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

//指定逻辑视图名,经过视图解析器解析为jsp物理路径:/WEB-INF/jsp/item/editItem.jspreturn "item/editItem";

1.3.2Redirect重定向

redirect:重定向 url发生改变,request域中的数据不能带到重定向的方法中

Contrller方法返回结果重定向到一个url地址,如下商品修改提交后重定向到商品查询方法,参数无法带到商品查询方法中。

如果使用request进行传参,会报空指针异常的错误,因为不能通过request将数据传过去。

model.addAttribute("id", items.getId());//redirect:重定向 url发生改变,request域中的数据不能带到重定向的方法中//使用request将参数带过去//request.setAttribute("id",items.getId());//这里会报空指针异常,因为不能通过request将数据传过去//在springmvc中凡是以redirect字符串开头的都是重定向 return "redirect:itemEdit.action";

redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址,因为转发即执行了一个新的request和response。

由于新发起一个request原来的参数在转发时就不能传递到下一个url,如果要传参数可以/item/queryItem.action后边加参数,如下:

/item/queryItem?...&…..

也可以通过model.addAttribute("id", items.getId());进行传参。

1.3.3forward转发

forward:请求转发 浏览器url不发生改变,request域中的数据可以带到转发后的方法中

controller方法执行后继续执行另一个controller方法,如下商品修改提交后转向到商品修改页面,修改商品的id参数可以带到商品修改方法中。

//forward:请求转发 浏览器url不发生改变,request域中的数据可以带到转发后的方法中/** 相对路径:相对于当前目录,也就是当前类的目录下,这时候可以使用相对路径跳转* 绝对路径:从项目名开始*/model.addAttribute("id", items.getId());return "forward:itemEdit.action";//return "forward:/itemEdit.action";//绝对路径的写法/forward中以'/'开头的为绝对路径,'/'表示从根开始;不以'/'开头的为相对路径

forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request和response。所以转发前请求的参数在转发后仍然可以读取到。

1.3.4 相对路径与绝对路径

相对路径:相对于当前目录,也就是当前类下的目录,这时候可以使用相对路径跳转。

绝对路径:从项目名开始。

return "forward:/itemEdit.action";//绝对路径的写法

在springmvc中不管是forward还是redirect,以/开头就是绝对路径,不以/开头的就是相对路径

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。