【SpringMVC整合MyBatis】RequestMapping注解与controller方法返回值

我们讲解一下之前用的@RequestMapping注解和controller方法返回值

一、@RequestMapping注解作用
1.url映射
定义controller方法对应的url,进行处理器映射使用。

//商品查询列表
//@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
//一般建议将url和方法写成一样
@RequestMapping("/queryItems")
public ModelAndView queryItems()throws Exception{
	//......
}

2.窄化请求映射

//商品的Controller
@Controller
//为了对url进行分类管理,可以在这里定义根路径,最终访问url是根路径+子路径
//比如:商品列表:/items/queryItems.action
@RequestMapping("items")
public class ItemsController {
	//......
}

限制http请求方法
出于安全性考虑,对http的链接进行方法限制。

//商品信息修改页面显示
//@RequestMapping("/editItems")
//限制http请求方法
@RequestMapping(value="/editItems",method={RequestMethod.POST})
public ModelAndView editItems()throws Exception{
	//......
}

如果限制请求为post方法,进行get请求,报错:

为了以后开发方便再改回来,让它支持GET和POST就不会出错了
@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})

二、controller方法返回值
1.返回ModelAndView
需要方法结束时,定义ModelAndView,将model和view分别进行设置。

2.返回string
如果controller方法返回string,

(1)表示返回逻辑视图名。
真正视图(jsp路径)=前缀+逻辑视图名+后缀

@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})
public String editItems(Model model)throws Exception{

	//调用service根据商品id查询商品信息
	ItemsCustom itemsCustom=itemsService.findItemsById(1);

	//通过形参中的model将model数据传到页面
	//相当于modelAndView.addObject方法
	model.addAttribute("itemsCustom",itemsCustom);

	return "items/editItems";
}

(2)redirect重定向
商品修改提交后,重定向到商品查询列表。
redirect重定向特点:浏览器地址栏中的url会变化。修改提交的request数据无法传到重定向的地址。因为重定向后重新进行request(request无法共享)

//重定向到商品的查询列表
return "redirect:queryItems.action";

(3)forward页面转发
通过forward进行页面转发,浏览器地址栏url不变,request可以共享。

//页面转发
return "forward:queryItems.action";

3.返回void

在controller方法形参上可以定义request和response,使用request或response指定响应结果:
(1)使用request转向页面,如下:

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

(1)也可以通过response页面重定向:

response.sendRedirect("url")

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

response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");

转载请注明出处:http://blog.csdn.net/acmman/article/details/47175961

时间: 2024-12-30 00:56:32

【SpringMVC整合MyBatis】RequestMapping注解与controller方法返回值的相关文章

SpringMVC整合mybatis实例代码_java

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 一.逆向工程生成基础信息 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis G

【SpringMVC整合MyBatis】springmvc实现json交互-requestBody和responseBody

json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2.springmvc进行json交互 (1)请求json.输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便. (2)请求key/value.输出json.此方法比较常用. 3.环境准备 3.1加载json转的jar包 springmvc中使用jackson的

【SpringMVC整合MyBatis】数据回显

数据回显 1.什么数据回显 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. 2.pojo数据回显方法 2.1springmvc默认对pojo数据进行回显. pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写) 说白了就是items类 public class Items { private Integer id; private String name; private Float price;

急求!controller的返回值的问题

问题描述 急求!controller的返回值的问题 我想在服务器端取得controller的返回值(@ResponseBody注解反序列化的Json)打印到日志中 请问应该怎么取?response里面好像取不到 解决方案 你用反射不就可以取到返回值了吗

Object转Integer类型失败,转Long型可以,方法返回值为1,并没有超过两个类型的范围

问题描述 Object转Integer类型失败,转Long型可以,方法返回值为1,并没有超过两个类型的范围 在网上找的尚硅谷的教学视频 其中有添加权限一段 String hql="select count(*) from Right r where r.rightUrl=?"; //此处不能用integer只能Long Long count=(Long) this.uniqueResult(hql, url); System.out.println(count); 下面是uniqueR

Struts2拦截器---intercept()方法返回值

问题描述 Struts2拦截器---intercept()方法返回值 Struts2拦截器方面的intercept()方法的返回值有什么用?

java反射机制 getreturntype是如何知道方法返回值类型的

问题描述 java反射机制 getreturntype是如何知道方法返回值类型的 各位大神,小弟有一事不明 我们有一个变量,就是方法名 java反射机制 getReturnType()是如何知道我要定义的这个方法的返回值类型. 它怎么知道我要的这个方法应该返回什么值?? 解决方案 java编译后的.class文件里面记录了类的全部信息,包括方法的返回值.参数.异常等.程序运行时,.class文件会被加载到运行时数据区,java反射 机制就是从类型信息中获取装载类解析后的详细信息的. 解决方案二:

java-FileOutputStream类的read方法返回值

问题描述 FileOutputStream类的read方法返回值 FileInputStream in=new FileInputStream("F:/Test.txt"); FileOutputStream out=new FileOutputStream("G:/Test.txt"); int b; while((b=in.read())!=-1){ out.write(b); System.out.println(b); } in.close(); out.c

c++ atl-Atl引用时,方法返回值问题。

问题描述 Atl引用时,方法返回值问题. 自编写的Atl控件,在MFC对话框或C#中直接引用,自定义所有方法的返回值由HRESULT变为void型,怎样修改可以避免返回值类型任意修改. Atl控件的返回值如: HRESULT FT_StartRefresh(); 引用后方法变为: void FT_StartRefresh();