SpringMvc框架:代替Servlet完成控制层框架

Servlet:接受请求,获取表单参数,业务处理(调用service,dao层代码),做出响应

在web中唯一可以接受请求的是Servlet

SpringMvc组件

  • 前端控制器 (中央处理器)Dispatcher Servlet :程序中所有的请求由Dispatcher Servlet接受
  • 处理器映射器 HandlerMapping :用于请求的分发
  • 控制器 Controller :用于编写控制层的代码
  • Model And View :用于响应(非前后端场景下:用于前后端分离)

搭建SpringMvc框架

  1. 创建web工程
  2. 引入jar包
  3. 添加Springmvc的核心配置文件(.xml文件)
  4. 添加配置
  • 配置中央处理器:
 <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--  初始化参数: 在DispatcherServlet中完成Spring容器的加载    -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
  • 配置处理器映射器和适配器
 <!-- 处理器映射器:指定请求分发的方式     -->
  <!--  <bean  class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"  /> -->
   <!-- 处理器适配器:进行控制器类的适配  -->
  <!--  <bean  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> -->
   <!--  注解形式的映射器适配器   -->
   <mvc:annotation-driven></mvc:annotation-driven>
  • 控制器组件的开发
<!-- 组件扫描管理所有的控制器类 -->
   <context:component-scan base-package="com.controller"></context:component-scan>
@Controller
public class TestController {
    /*
     * @Controller:
     * 支持组件扫描管理类对象
     * @RequestMapping:用来进行请求的映射
     */
    @RequestMapping("test")
    public void test(){
        System.out.println("进入控制器方法");
    }
}

Springmvc框架工作流程

  1. 由前端控制器接受请求
  2. 通过处理器映射器和适配器进行请求的开发(当前应用的是注解开发:由
    @RequestMapping 注解进行请求的映射)
  3. 在控制器类中方法里实现业务处理
  4. 做出响应
接收请求:
@CrossOrigin:支持跨域
 * 使用CrossOrigin注解实现跨式时,要求RequestMapping注解中必须指定能够接收的请求方式
 * 
 * @Controller:支持组件扫描管理类对象
 *  
 * @RequestMapping:用来进行请求的映射
 *  1.RequestMapping注解支持的属性:value   method
 *  2.RequestMapping注解可以写在类的上方,也可以写在方法上方。如果写在类的上方,代表
 *  往当前类中方法发请求时的根路径。写在方法上方的就属于子路径。

响应:

响应:数据 json
 *  @ResponseBody注解:作用就是将方法返回的数据写入到response对象中,相当于response.getWeiter
 *  输出流向前端返数据。这个注解使用之后,不需要走springmvc框架的视图解析器(Model And View)。
 *  自动实现json转换
 *  
 *  一个控制器中可以由多个方法,对应多个请求的处理
 *  一般建议一个实体的相关需求,都写在一个控制器中

参数:

控制器方法的参数:
 *  1. 默认支持的参数类型:
 *    HttpServletRequest  请求对象
 *    HttpServletResponse 响应对象
 *    HttpSession         会话对象
 *  2.简单类型的参数绑定
 *    控制器方法的形参要和请求参数的名称完全一致,类型匹配
 *    如果方法参数名和提交过来的参数名不一致,可以使用@RequestParam注解进行参数的匹配
 *  3. 前端请求采用json格式传数据,控制器方法使用实体类去接收,同时使用
 *    @RequestBody注解将json对象转换成java对象
 *   注意:只有post形式的请求,才支持以json格式传递数据
 *  4. 前端采用formdata的形式提交数据
 *    页面中的所有要提交的数据都套在form标签中,而且每一个要提交的表单元素必须设定name
 *    以formdata形式提交form,要求form必须是特殊的类型 enctype="multipart/form-data"
 *    配置文件上传解析器
 *    控制器方法直接用实体类去接收参数,要求实体类中的属性名要和页面form表单的元素的name一一对应
<!-- 配置文件上传解析器  -->
   <bean  id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
        <property name="maxUploadSize" value="5242880" />
   </bean>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容