`
schy_hqh
  • 浏览: 542408 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

springMVC_02 原理与Controller相关注解配置

 
阅读更多

springMVC基本原理

 

    第一步:用户发出请求,如"http://localhost:8080/springmvc/user/reg?method=reg&name=zs"

    第二步:服务器接收到请求,发现存在DispatcherServlet,则交给DispatcherServlet进行处理
   
    DispatcherServlet内部通过检查HandlerMapping中是否存在对应的URL,如果有,则交给对应的Controller进行处理
 

  /** List of HandlerMappings used by this servlet */
  private List<HandlerMapping> handlerMappings;//    记录URL与Controller的对应关系
 
            第三步:找到对应的Controller之后,开始执行对应的Controller

            第四步:Controller执行完毕后:
            如果方法返回值为String,则将通过ViewResolver视图处理器进行处理
           如果方法返回ModelAndView,则该对象包含了模型与视图的信息(模型用来存放数据,在jsp中通过EL表达式取值)

           第五步:DispatcherServlet从ViewResolver或者ModelAndView获取相关信息,返回给服务器

           第六步:服务器将结果响应到客户端

 

==============================================================================

 

@Controller

spring的Controller是singleton的。

即多个请求将共享使用同一个Contoller。

因此,Controller必须是无状态的(成员变量只能是service对象)

springMVC是通过方法参数来接收客户端传递过来的参数

struts2则是通过在Controller中设置成员变量来接收参数的,struts2的Controller是prototype的

 

spring3中,通过@Controller即可将类定义为一个控制器类

需要在配置文件中添加component-scan,通知spring扫描对应包下的类,将那些配置了@Controller的类注册到spring容器中

<context:component-scan base-package="com.gc.springmvc.controller"/>

 

 @RequestMapping

配置在类上,则将URL与类绑定,是该类的URL全局配置,对所有方法都有效

通过@RequestMapping(params="method=reg1")来区分该Controller中的哪个方法被调用

 

配置在方法上,则将URL与方法绑定,该方法的特有配置,仅对该方法有效

 

 

@RequestParam

处理客户端传递的参数名称与接收参数名称不一致的问题

通过@RequestParam配置与客户端参数一致的名称,然后由springMVC将值传递给方法中的参数

 

 @SessionAttributes

定义在类级别上,声明当向Model,ModelView,ModelMapping中存入那些key时,需要将其一并存入到session中。

@SessionAttributes({"loginUser","xxx"})

当往Model中放入key为"loginUser"的时候,就会将其存入到session中

 

@ModelAttribute

用于将session中的某些值取出来赋值给方法的形参

public String userInfo2(@ModelAttribute("loginUser") User user) {...}

即将session中key为"loginUser"的值取出来,赋值给user

 

============================================================================== 

 

springMVC中方法参数的处理:

如果是客户端传入的参数,则方法的形参名称需要与param名称一致

如果是客户端传入的参数,但方法形参不一致,可以通过@RequestParam进行转换

如果方法的形参是一个对象,则客户端传入的参数必须与对象的property属性完全对应

 

如果需要Model,ModelAndView,ModelMapping,HttpServletRequest,HttpServletResponse等

则可直接在方法参数中写,springMVC会自动创建并传入

 

springMVC中方法返回值的处理:

 一般返回String或ModelAndView,也支持ModelMapping,Map,List,Set,Object等。

返回String,表示视图的名称,将结合prefix与suffix,匹配对应的jsp

返回ModelAndView,则同时包含视图信息和数据信息

 

 

==============================================================================  

 

springMVCd的转发与重定向

return "forward:userlist"; 默认为forword

return "redirect:login";  指定为重定向

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics