`
noble510520
  • 浏览: 56587 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SpringMVC基本使用

阅读更多

springMVC是一个MVC框架,他控制着请求相应的整个流程,从请求一进入到应用服务器到相应离开,都离不开mvc框架

请求在应用服务器中

先说说请求相应在应用服务器的整个过程

 

  • DisptacherServlet接收到请求,并读取出请求中的数据
  • DisptacherServlet根据请求中的信息(url),去Handlermapping中查找url对应的资源(如果没有则报404)
  • 如果资源指向一个Controller,则将请求和请求数据发送给Controller
  • Controller处理请求(一般Controller将处理动作交给业务层处理),将处理好的数据和视图名返回给DisptacherServlet
  • DisptacherServlet根据视图名去查找ViewResolver视图解析器,将数据交给对应的视图处理
  • 视图(jsp,html等等)拿到数据后,渲染

清楚了请求在服务器中的流程后,知道了使用一个mvc框架我们要进行几步配置

  • 初始化DisptacherServlet(配置Handlermapping和Controller的位置)
  • 配置Handlermapping(ServletMapping)
  • 标识Controler,配置Controler要处理的url以及返回的视图名
  • 配置视图解析器

第二步和第三步是在一起的,因为Controler就是ServletHandlermapping和Controller的配置在web.xml中就相当于<servlet>和<servlet-mapping>DisptacherServlet需要从web.xml中拿关于springmvc的配置(servlel,servletmapping),才能调度整个流程

关于DisptacherServlet

(可以先跳过这部分,往后面看)DisptacherServlet是SpringMVC的调度中心,在这里请求会第一次进入到SpringMVCDisptacherServlet配置着SpringMVC运作的信息在以前,我们会在web.xml中配置SpringMVC,然后SpringMVC会根据web.xml中的配置初始化DisptacherServlet在servlet3.0之后,出现了ServletContainerInitializer,可以在项目启动最开始时,会自动扫描实现了ServletContainerInitializer接口的类,对Servlet、Listener、Filter进行动态注册,利用此技术,可以通过实现ServletContainerInitializer来配置DisptacherServlet(注册controller,ViewResolve),达到SpringMVC零配置的效果

关于ServletContainerInitializer

(可以先跳过这部分,往后面看)ServletContainerInitializer的作用和web.xml差不多,都是部署servlet,listener,filter,只是一个是用java代码配置,一个用xml配置在实现了ServletContainerInitializer接口的类上要注解上@HandlesTypes(//要动态注册的class,一定要是Servlet或者Listener或者Filter)ServletContainerInitializer接口中只有一个方法onStart(Set<Class>,ServletContext)当应用启动的时候,会调用onStart方法,参数Set<Class>就是@HandlesTypes中的类,意味着这些类可以被动态注册实现动态注册的核心方法:

  • addServlet(String name,Servlet servlet)
  • addFilter(String name,Filter filter)
  • addListener(Listener listener)

这些都是注册Servlet、listener、filter的方法显然还是有点麻烦,所以随着spring的发展,有更多简单的方法去配置现在最简单就是继承AbstractAnnotationConfigDispatcherServletInitializer,重写getServletConfigClasses、getServletMappings、getRootConfigClasses来配置DisptacherServlet

配置DisptacherServlet

这一步,跟配置web.xml作用差不多,就是要部署注册servlet在这里我们采用继承重写AbstractAnnotationConfigDispatcherServletInitializer的方法,来配置DisptacherServlet

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

 //得到中间层(service、dao、aop、po等)的配置
 @Override
 protected Class<?>[] getRootConfigClasses() {
   return new Class[]{DAOConf.class,ServiceConf.class,AOPConf.class};
 }

 //得到controler和ViewResolver的配置
 @Override
 protected Class<?>[] getServletConfigClasses() {
   return new Class[]{SpringMvcConf.class}; 
 }

 //标识哪些url要经过这个DisptacherServlet处理
 @Override
 protected String[] getServletMappings() {
   return new String[]{"/"};//所有url都被DisptacherServlet处理
 }

}

SpringMVC配置

这一步是完成SpringMvcConf.class,这个类配置了一些controller和ViewResolver

@Configuration
@EnableWebMvc
//扫描控制器
@ComponentScan(includeFilters=@ComponentScan.Filter(type=FilterType.ANNOTATION,value=Controller.class))
public class SpringMvcConf extends WebMvcConfigurerAdapter {
 
 //配置视图解析器
 //html解析
 @Bean
 public ViewResolver htmlResolver(){
   InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
   viewResolver.setPrefix("/WEB-INF/view/");
   viewResolver.setSuffix(".html");
   return viewResolver;
 }
 //静态资源处理
 //当DisptacherServlet接收到了他匹配的请求,但是找不到相应的Controller,就会把这个请求返回给默认的处理(比如交给tomcat处理)
 @Override
 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
   configurer.enable();
 }
}

这里关键有几步:

  • @EnableWebMvc,开启springmvc
  • @ComponentScan开启自动扫包,扫描所有带有@Controller的Bean
  • 添加ViewResolver,这里的配置是使,视图路径为"/WEB-INF/view/"+Controller返回的视图名+".html"
  • 因为之前配置了所有路径都被DisptacherServlet接收,这会导致一些静态资源找不到controller去处理,结果出现404,configurer.enable()开启了之后,当springmvc不能处理的时候会交回给默认的处理

配置Controller

最简单配置

@Controller
public class IndexServlet {
 @RequestMapping(value="/",method=RequestMethod.GET)//GET方法访问"/"的时候,调用此方法
 public String get(Model model){
  model.addAttribute("title","index");
  return "index";
 }
}

这是一个最简单的控制器,几个要点

  • 当类被@Controller注释时,该类就是一个控制器
  • 控制器中的方法被@RequestMapping标识,配置了这个方法访问的url和method
  • get方法有一个参数Model,这跟Request中的Attribute差不多,model.addAttribute就跟request.addAttribute一样

接收参数

接收参数形式有3种:?号传值,路径变量,提交表单

?号传值

访问形式:路径?参数名=值&参数名=值

 @RequestMapping(value="/login",method=RequestMethod.GET)
 public String login(@RequestParam("username")String username,@RequestParam("password")String password){
       return "login";
 }

这样子就能拿到参数了

路径变量

这种也是用的比较多的,通过占位符来实现访问形式:路径/参数值

 @RequestMapping(value="/logout/{id}",method=RequestMethod.GET)
 public String logout(@PathVariable("id")int id){
   return "logout";
 }

比如访问"/logout/123",123就是id参数

表单变量

当表单要上传一个对象的时候,这种方式就很好用了,springmvc会自动将读取表单数据然后实例化相应bean

 @RequestMapping(method=RequestMethod.POST,path="/user")
 public String Post(User user){
 return "post";
 }

 

查看原文:http://zswlib.com/2016/07/15/springmvc%e5%9f%ba%e6%9c%ac%e4%bd%bf%e7%94%a8/

1
4
分享到:
评论

相关推荐

    SSM笔记-SpringMVC基本使用

    在本文中,我们将深入探讨SpringMVC的基本配置、核心组件以及如何进行调用。 ### 一、SpringMVC核心组件 1. **DispatcherServlet**:前端控制器,它是SpringMVC的入口点,负责接收HTTP请求,然后根据请求信息找到...

    springmvc基本配置包

    这个"springmvc 基本配置包"包含了运行 Spring MVC 项目所需的基础组件和库。 在 Spring MVC 中,核心概念包括 DispatcherServlet、Controller、Model、View 和 HandlerMapping。DispatcherServlet 是整个流程的...

    springMVC基本项目代码

    springMVC基本项目代码

    springmvc基本配置及定时任务配置修改

    接下来,我们将深入探讨 Spring MVC 的基本配置。 首先,创建一个 Spring MVC 项目通常需要以下步骤: 1. **添加依赖**:在 Maven 或 Gradle 项目中,你需要添加 Spring MVC 相关的依赖库,例如 spring-webmvc。 2....

    springmvc基本框架

    springMVC的介绍 1.对Servlet轻量级封装,底层完全基于Servlet的实现 2.是Web层应用的框架,基于MVC设计理念的,采用了松散耦合,可插拔的组件结构,代码具有良好的扩张性和可维护性。 3.是Spring框架的一个单独模块...

    springMVC基本配置(Controller+Service+Dao)

    首先,让我们从创建一个基本的SpringMVC项目结构开始。通常,一个SpringMVC项目会包含以下几个主要部分:`src/main/java`(源代码目录)、`src/main/resources`(资源配置目录)、`WEB-INF`(Web应用特定的配置文件...

    SpringMVC初学者使用的CRUD

    这个“SpringMVC初学者使用的CRUD”是一个适合新手上手的示例项目,它涵盖了创建、读取、更新和删除(CRUD)操作的基础知识,这些都是Web应用开发中最基本的功能。 首先,让我们了解一下SpringMVC的基本组件和流程...

    Spring SpringMVC Mybatis基本使用的jar包

    在Java Web开发中,Spring、SpringMVC和Mybatis是三个非常重要的框架,它们共同构成了SSM(Spring-SpringMVC-Mybatis)集成开发框架。这个框架组合提供了全面的解决方案,从依赖注入到业务逻辑处理,再到数据库操作...

    一个项目 了解springMVC 基本用法

    在这个"一个项目 了解springMVC 基本用法"的精品入门课程中,你将学习到Spring MVC的各个方面,包括其核心概念、配置、控制器、视图解析、数据绑定以及异常处理等。 1. **核心概念** - DispatcherServlet:Spring ...

    SpringMVC基本框架(maven)

    用idea14搭建的springmvc基本架构: 1.标准目录格式; 2.标准配置文件格式:数据库配置、资源配置、log4j配置、spring配置; 3.jar包通过maven管理; 4.增加常用过滤器配置,可根据项目要求改写; 5.增加获取资源...

    springmvc的使用

    我之前看spring配置数据库的开发,结果因为不会配置后来没用到,懂得了spring和hibernate和struts2的整和; springmvc确实比struts...这个资源是springmvc的框架demo使用;很基础吧,感谢支持;这个积分能不能修改成3分

    SpringMvc的基本jar

    在这个“SpringMvc的基本jar”压缩包中,我们可能会找到一系列核心和依赖的jar文件,这些文件对于理解和使用Spring MVC至关重要。 首先,Spring MVC的基础jar文件通常会包含以下组件: 1. **spring-webmvc.jar**:...

    springmvc基本jar包

    在 "springmvc基本jar包" 中,我们看到提到了几个关键的库,这些都是 Spring MVC 开发中必不可少的部分: 1. **Commons-XXX-1.2.1.jar**:Apache Commons 是一系列独立且实用的 Java 类库,如 Commons Lang、IO、...

    初识SpringMVC以及springmvc基本应用入门案例彩色PPT版本.pptx

    【SpringMVC简介】 SpringMVC 是一个基于 Java 实现的 Model-View-Controller (MVC) 模式的轻量级 Web ...通过实践这些基础案例,可以逐步熟悉 SpringMVC 的核心概念和使用方式,为进一步深入学习和应用打下坚实基础。

    SpringMVC基本Demo所需的Jar包

    这个基本Demo所需的Jar包包含了开发一个简单的SpringMVC项目,如"Hello, World!"应用,所需要的核心组件。以下是对这些关键Jar包及其作用的详细解释: 1. **spring-aspects-4.3.0.RELEASE.jar**:这是Spring的AOP...

    springMVC基本理论

    ### SpringMVC基本理论 #### 一、MVC模式简介 MVC(Model-View-Controller)模式是一种软件设计架构模式,广泛应用于Web应用程序开发之中。该模式将应用程序分为三个核心部分:模型(Model)、视图(View)以及...

    SpringMVC_基本demo版本.zip

    这个"SpringMVC_基本demo版本.zip"压缩包应该包含了搭建和运行一个基本Spring MVC项目的所需文件。 在Spring MVC中,核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver等。DispatcherServlet...

    SpringMVC使用JSON的Jackson的jar包

    默认情况下,如果项目中包含Jackson库,SpringMVC会使用`MappingJackson2HttpMessageConverter`作为MessageConverter,实现JSON序列化。 5. 配置SpringMVC以使用Jackson: 虽然SpringMVC通常会自动检测并使用...

    springMVC学习--基本的几个例子

    1. **SpringMVC基本配置**: - **web.xml配置**:这是SpringMVC应用的入口点,我们需要配置DispatcherServlet、Servlet上下文参数和Filter。 - **servlet-context.xml配置**:在这里,我们定义SpringMVC的核心组件...

    springmvc实战项目sample

    1. **SpringMVC基本概念** - **DispatcherServlet**:作为SpringMVC的前端控制器,负责接收HTTP请求,然后根据请求信息分发到相应的处理器。 - **Model-View-Controller**(MVC)架构模式:SpringMVC遵循MVC设计...

Global site tag (gtag.js) - Google Analytics