SpringMVC基础知识

作者:gqk


前言 :

本章目标:

  1. 什么是SpringMVC

  2. SpringMVC框架原理

  3. SpringMVC入门程序

1,什么是Spring和SpringMVC

    Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。

    spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

2,SpringMVC框架原理(重要)

掌握几个器:前端控制器,处理器映射器,处理器适配器,试图解析器

 

 

 

  第一步:发起请求到前端控制器(DispatcherServlet)

    第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找

    第三步:处理器映射器HandlerMapping向前端控制器返回Handler

    第四步:前端控制器调用处理器适配器去执行Handler

    第五步:处理器适配器去执行Handler

    第六步:Handler执行完成给适配器返回ModelAndView

    第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view

    第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)

    第九步:视图解析器向前端控制器返回View

    第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域

    第十一步:前端控制器向用户响应结果

SpringMVC中的组件:

  1. 前端控制器DispatcherServlet(SpringMVC已经封装好无需我们开发),可以用来接收请求,响应结果
  2. 处理器映射器HandlerMapping:根据请求的url来查找对应的Handler
  3. 处理器适配器HandlerAdapter:按照特定的规则去执行Handler
  4. 处理器Handler:是一个控制器(编写的时候要按照适配器的规则去编写)
  5. 视图解析器View resolver:进行视图解析

 3,SpringMVC入门程序

idear导入本地maven插件

 

new->project->maven

 

创建好后我们需要手动去创建一些目录:手动建webapp的目录

 

 

 创建好后 是没有web,xml文件的需要导入web.xml文件(选择项目结构)

选择 facets,点击+号, 选择 web

 

 

 

 

 

 

 

 

 

 

 添加web.xml成功:

配置前端控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)
          若不配置,默认加载WEB-INF/servlet名称-servlet(springmvc-servlet.xml)
        -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
        第一种:*.action,访问以.action结尾,由DispatcherServlet进行解析
        第二种:/,所有访问的地址由DispatcherServlet进行解析,对静态文件的解析需要配置不让DispatcherServlet进行解析,
                使用此种方式和实现RESTful风格的url
        第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址,
                不能根据jsp页面找到handler,会报错
        -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>

 

编写控制器(控制器的编写和适配器有关系)

注意:

javax.servlet.http.HttpServletRequest httpServletRequest可能会报错 解决方法下面看(没有servlet的jar)
package com.gqk.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import java.util.Date;

public class HelloHandler implements Controller {
    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");
        mv.addObject("date",new Date());
        return mv;
    }
}

 

IntelliJ IDEA关于“cannot resolve symbol servlet”的解决

 

 

 

 

 右键项目->open module setting,如下图所示

 

 

 

.libraries-> + ->Java->选择路径(tomcat安装目录下lib->tomcat-api.jar)

 

 

 

 

选择对应的jar

 

 

 

 

 

配置Handler,处理器映射器,处理器适配器,视图解析器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<bean name="/hello.action" class="com.gqk.controller.HelloHandler"/>
<!-- 处理器映射器
将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 视图解析器
解析jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置jsp路径的前缀 -->
<property name="prefix" value="/"/>
<!-- 配置jsp路径的后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>

 

 

启动tomcat访问

http://localhost:8086/hello.action

 

 

总结:

  1. 导入环境

  2. 配置前端控制器

  3. 编写控制器

  4. 配置控制器

  5. 配置适配器

  6. 配置映射器

  7. 配置试图解析器

  8. 项目部署访问

posted @ 2019-01-08 18:31  少侠gqk  阅读(376)  评论(0编辑  收藏  举报