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"; 指定为重定向
相关推荐
8. **国际化与本地化**:SpringMVC支持多语言环境,通过资源文件配置,可以提供不同语言版本的页面内容。 9. **拦截器**:通过实现`HandlerInterceptor`接口或使用`@Interceptor`注解,可以创建自定义拦截器,执行...
**SpringMVC_1_开发环境搭建**(共41页):这部分内容主要涉及SpringMVC项目的搭建过程,包括开发工具的选择(如IDEA或Eclipse)、SpringMVC框架的下载与配置、项目结构的规划以及依赖管理工具(如Maven或Gradle)的...
通过"shiro_springmvc_demo"项目,你可以学习到如何在实际项目中配置和使用Shiro,了解其工作原理,并掌握如何结合SpringMVC实现权限控制。该项目包含的代码示例将帮助你更好地理解和应用这些知识点。在实际开发中,...
总结起来,`Springmvc_Demo` 项目通过 `springmvc_demo_03` 和 `springmvc_demo_04` 两个实例,展示了 Spring MVC 的手动配置与注解驱动的使用,涵盖了 MVC 架构的基本概念、核心组件、注解应用以及其在实际开发中的...
总的来说,"SpringMVC_基本demo版本.zip"这个压缩包提供的示例将展示如何创建一个简单的Spring MVC项目,包括配置文件的设置、Controller的编写以及视图的呈现。通过学习和运行这个示例,开发者可以快速理解Spring ...
接下来,配置文件的编写是理解SpringMVC工作原理的关键。主要涉及以下文件: 1. **web.xml**:这是Web应用的部署描述符,用于配置前端控制器DispatcherServlet和ContextLoaderListener。 - DispatcherServlet负责...
4. **配置整合**:通过Spring的配置文件,可以设置数据源、事务管理器、SqlSessionFactory等,完成SpringMVC与MyBatis的集成。 在"Demo_SpringMVC_MyBatis"这个项目中,我们可以看到一个完整的SpringMVC和MyBatis...
在SpringMVC中,开发者可以使用注解来配置控制器,使得代码更加简洁和易于维护。 在"SpringMVC_源码分析代码.zip"这个压缩包中,我们可以找到一个名为"5.SpringMVC_output"的文件或目录,这可能包含的是一个示例...
Spring MVC 使用注解驱动开发,极大地简化了配置。例如,@Controller定义了一个控制器类,而@RequestMapping可以用于类或方法上,用来映射HTTP请求。此外,@RequestParam用于从请求参数中获取数据,@PathVariable...
3. **Controller**:在Java源代码中,我们将看到一个名为`HelloController`的类,它实现了`@Controller`注解。这个控制器包含了处理HTTP请求的方法,例如`@RequestMapping("/hello")`,表示当用户访问/hello路径时,...
它通过配置文件或注解来映射请求到处理器,如Controller。 2. **控制器Controller**:Controller是Spring MVC中的一个接口或注解驱动的类,用于处理用户的请求并生成模型数据。在接收到DispatcherServlet转发的请求...
首先,我们要理解SpringMVC的工作原理。它采用模型-视图-控制器(MVC)架构模式,其中Controller接收HTTP请求,通过Service层处理业务逻辑,然后将结果传递给View进行展示。SpringMVC通过DispatcherServlet作为前端...
- HandlerMapping找到具体的处理器(Controller),并返回一个HandlerExecutionChain(包含处理器及相关的拦截器)。 - DispatcherServlet调用HandlerAdapter(处理器适配器)来执行处理器。 - Controller处理...
4. **@Controller注解** `@Controller`注解用于标记一个类为SpringMVC的控制器。控制器类中的方法通常通过`@RequestMapping`来处理特定的HTTP请求。 5. **@RequestMapping** `@RequestMapping`用于将URL请求映射...
2. **Controller**:控制器处理业务逻辑,通常通过注解(如@RequestMapping)来映射URL请求。 3. **Model**:模型对象存储业务数据。 4. **View**:视图负责渲染模型数据并呈现给用户。 5. **ViewModel**:用于将...
在 `springmvc_first` 示例中,`ItemController` 就是一个 Controller,它的职责是处理与商品相关的请求。 3. **Model**:Model 代表应用程序的数据。Controller 可以将业务对象绑定到 Model 中,然后传递给 View。...
标题“springmvc_01szrz.rar”暗示了这是一个关于Spring MVC框架的教程或项目,可能包含了一系列用于演示Spring MVC工作原理和应用的文件。Spring MVC是Java Web开发中的一个流行框架,它使得构建Web应用程序变得...
在本项目 "Springmvc_dinglh" 中,我们可以看到一个 Spring MVC 的演示应用,通过分析其中的文件,我们可以深入理解该框架的核心概念和工作原理。 首先,Spring MVC 的核心组件包括 DispatcherServlet、Controller...
通过这个 "demo_SpringMVC" 项目,开发者可以深入了解 Spring MVC 的基本工作原理和配置,从而更好地掌握这个强大的 Web 开发框架。无论是新手还是经验丰富的开发者,都可以从中获益,提升自己的技能。
SpringMVC支持使用注解来简化配置,如@Controller、@RequestMapping、@Autowired等,这些注解可以使得代码更加简洁和易于理解。 10. **RESTful Web服务** SpringMVC支持创建RESTful风格的API,通过@...