`
schy_hqh
  • 浏览: 556001 次
  • 性别: 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";  指定为重定向

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    SpringMVC Demo_java_springmvc_DEMO_

    8. **国际化与本地化**:SpringMVC支持多语言环境,通过资源文件配置,可以提供不同语言版本的页面内容。 9. **拦截器**:通过实现`HandlerInterceptor`接口或使用`@Interceptor`注解,可以创建自定义拦截器,执行...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_8_标签库 共39页.pptx

    **SpringMVC_1_开发环境搭建**(共41页):这部分内容主要涉及SpringMVC项目的搭建过程,包括开发工具的选择(如IDEA或Eclipse)、SpringMVC框架的下载与配置、项目结构的规划以及依赖管理工具(如Maven或Gradle)的...

    shiro_springmvc_demo

    通过"shiro_springmvc_demo"项目,你可以学习到如何在实际项目中配置和使用Shiro,了解其工作原理,并掌握如何结合SpringMVC实现权限控制。该项目包含的代码示例将帮助你更好地理解和应用这些知识点。在实际开发中,...

    Springmvc_Demo

    总结起来,`Springmvc_Demo` 项目通过 `springmvc_demo_03` 和 `springmvc_demo_04` 两个实例,展示了 Spring MVC 的手动配置与注解驱动的使用,涵盖了 MVC 架构的基本概念、核心组件、注解应用以及其在实际开发中的...

    SpringMVC_基本demo版本.zip

    总的来说,"SpringMVC_基本demo版本.zip"这个压缩包提供的示例将展示如何创建一个简单的Spring MVC项目,包括配置文件的设置、Controller的编写以及视图的呈现。通过学习和运行这个示例,开发者可以快速理解Spring ...

    springmvc_day01_start.zip

    接下来,配置文件的编写是理解SpringMVC工作原理的关键。主要涉及以下文件: 1. **web.xml**:这是Web应用的部署描述符,用于配置前端控制器DispatcherServlet和ContextLoaderListener。 - DispatcherServlet负责...

    SpringMVC_MyBatis_修正版

    4. **配置整合**:通过Spring的配置文件,可以设置数据源、事务管理器、SqlSessionFactory等,完成SpringMVC与MyBatis的集成。 在"Demo_SpringMVC_MyBatis"这个项目中,我们可以看到一个完整的SpringMVC和MyBatis...

    SpringMVC_源码分析代码.zip

    在SpringMVC中,开发者可以使用注解来配置控制器,使得代码更加简洁和易于维护。 在"SpringMVC_源码分析代码.zip"这个压缩包中,我们可以找到一个名为"5.SpringMVC_output"的文件或目录,这可能包含的是一个示例...

    springMVC_study.zip

    Spring MVC 使用注解驱动开发,极大地简化了配置。例如,@Controller定义了一个控制器类,而@RequestMapping可以用于类或方法上,用来映射HTTP请求。此外,@RequestParam用于从请求参数中获取数据,@PathVariable...

    SpringMVC_HelloWorld.zip

    3. **Controller**:在Java源代码中,我们将看到一个名为`HelloController`的类,它实现了`@Controller`注解。这个控制器包含了处理HTTP请求的方法,例如`@RequestMapping("/hello")`,表示当用户访问/hello路径时,...

    Springmvc_DispaterSelvert.zip

    它通过配置文件或注解来映射请求到处理器,如Controller。 2. **控制器Controller**:Controller是Spring MVC中的一个接口或注解驱动的类,用于处理用户的请求并生成模型数据。在接收到DispatcherServlet转发的请求...

    myTest-springmvc_mybaits集成

    首先,我们要理解SpringMVC的工作原理。它采用模型-视图-控制器(MVC)架构模式,其中Controller接收HTTP请求,通过Service层处理业务逻辑,然后将结果传递给View进行展示。SpringMVC通过DispatcherServlet作为前端...

    springmvcDemo2_springmvc_

    - HandlerMapping找到具体的处理器(Controller),并返回一个HandlerExecutionChain(包含处理器及相关的拦截器)。 - DispatcherServlet调用HandlerAdapter(处理器适配器)来执行处理器。 - Controller处理...

    springmvc_pl

    4. **@Controller注解** `@Controller`注解用于标记一个类为SpringMVC的控制器。控制器类中的方法通常通过`@RequestMapping`来处理特定的HTTP请求。 5. **@RequestMapping** `@RequestMapping`用于将URL请求映射...

    springMvc_ibatis_mybatis

    2. **Controller**:控制器处理业务逻辑,通常通过注解(如@RequestMapping)来映射URL请求。 3. **Model**:模型对象存储业务数据。 4. **View**:视图负责渲染模型数据并呈现给用户。 5. **ViewModel**:用于将...

    springmvc_first入门程序

    在 `springmvc_first` 示例中,`ItemController` 就是一个 Controller,它的职责是处理与商品相关的请求。 3. **Model**:Model 代表应用程序的数据。Controller 可以将业务对象绑定到 Model 中,然后传递给 View。...

    springmvc_01szrz.rar

    标题“springmvc_01szrz.rar”暗示了这是一个关于Spring MVC框架的教程或项目,可能包含了一系列用于演示Spring MVC工作原理和应用的文件。Spring MVC是Java Web开发中的一个流行框架,它使得构建Web应用程序变得...

    Springmvc_dinglh

    在本项目 "Springmvc_dinglh" 中,我们可以看到一个 Spring MVC 的演示应用,通过分析其中的文件,我们可以深入理解该框架的核心概念和工作原理。 首先,Spring MVC 的核心组件包括 DispatcherServlet、Controller...

    demo_SpringMVC.rar_+SpringMVC demo_DEMO_spring mvc_spring mvc de

    通过这个 "demo_SpringMVC" 项目,开发者可以深入了解 Spring MVC 的基本工作原理和配置,从而更好地掌握这个强大的 Web 开发框架。无论是新手还是经验丰富的开发者,都可以从中获益,提升自己的技能。

    1. 尚硅谷_佟刚_SpringMVC_概述.zip

    SpringMVC支持使用注解来简化配置,如@Controller、@RequestMapping、@Autowired等,这些注解可以使得代码更加简洁和易于理解。 10. **RESTful Web服务** SpringMVC支持创建RESTful风格的API,通过@...

Global site tag (gtag.js) - Google Analytics