有关SpringMVC controller 编写问题

关于controller 几种 返回形式


1、 ModelAndView

ModelAndView 从名字可以看出,该对象可以设置传往jsp页面 对象,或者返回给前端的视图名。这个对象设置在了request作用域。
写法:
有关SpringMVC controller 编写问题
2、 String 返回String 类型的同样可以设置 model 当然返回的string 就是 视图名。

3、 当然也可以返回void ,然后利用 servlet原生的开发方式来设置视图名 以及传输对象。
有关SpringMVC controller 编写问题

这种方式 也可以访问,但是需要注意path应该成绝对路径。即完整路径。
上面的三种方法 都是我项目中试验过的,有时候 返回字符串的时候 会返回”redirect:url”或”forward:url”;这代表了 服务端重定向或者服务端转发。注意俩种方式 数据共享的问题。

关于controller 中参数绑定的方法:
1、 controller 中默认支持的形参:HttpServletRequest HttpservletResponse Model(通过item{item.xxx} 来获取对象属性值) HttpSession
2、 我们自定义的那些参数:
如果 request请求参数的参数名 与controller的参数名一致 则直接定义,不一样时可以通过@RequestParam(“”)来指定 将request的参数 绑定到 哪一个形参上面。 对于必须要传入的参数 可以@RequestParam(value=””,required=true,defaultValue=xxx)

绑定 简单pojo类型只要请求的pojo参数 名与 controller 中的属性名一致,就可以绑定成功。
绑定 包装 pojo类型 。上面的存在一个问题 就是 假设 当多个controller pojo类型的参数都具有某个属性 比如说 student User都具有 name属性 那么 就不能通过简单的请求参数名与对象属性名对应来 获取,因为这样无法绑定参数。解决办法是:通过在controller类中 定义
有关SpringMVC controller 编写问题

前端使用Object.Param来设置 表单name值。这样后台 也可以 拿到 这俩个具有重复属性名的对象。还有一种方法是 建立以 FormBean 来传递。这个 bean里面 含有这俩个对象。然后通过
@RequestMapping()
Public void xxx(FormBean formBean);