springmvc从入门到源码分析专题1_前期准备

返回专题目录

springmvc从入门到源码分析专题1_前期准备

前言

写这个专题的原因一是为自己巩固一下springmvc的基础知识,同时也为哪些刚刚入门springmvc,但对springmvc的原理不清楚的朋友提供一份简单易懂的教程

注: 如果你觉得写得不好,请直接批评指出

相关软件版本

这里介绍一下我本地的相关软件的版本

  • jdk: jdk1.8.0_221
  • eclipse: Photon Release (4.8.0)
  • springmvc: 3.2.12.RELEASE
    • 这里说一下,为什么要选择springmvc的版本为 3.2.12.RELEASE , 原因如下
      • 虽然现在spring已经发布到 5.*版本了,但是springmvc最核心的代码是没有太大变化的,只在这上面增加了许多其他的功能,而我们日常使用的绝大多数功能3.2.12.RELEASE版本的springmvc都已经包含
      • 在本专题中,我们将要深入到springmvc的源码分析,为了分析起来更简单易懂,避免非核心代码干扰到大 家阅读源码,所以我选择 3.2.12.RELEASE版本的springmvc
  • maven: 3.5.3
  • tomcat: tomcat-8.5.43

相关软件的下载地址

基础项目环境搭建

接下来我们从零开始搭建一个springmvc的web项目,实现一个简单的helloword,相关源码我已经上传到我的github上

搭建完成后的项目截图如下

重点配置文件

  • pom.xml文件Maven依赖如下

    <dependencies>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>3.2.12.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>3.2.12.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>3.2.12.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
      </dependency>
      <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
      </dependency>
      <dependency>
          <groupId>javax.portlet</groupId>
          <artifactId>portlet-api</artifactId>
          <version>2.0</version>
      </dependency>
      <dependency>
          <groupId>javax.el</groupId>
          <artifactId>el-api</artifactId>
          <version>1.0</version>
      </dependency>
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.0.1</version>
      </dependency>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
    </dependencies>
  • web.xml配置文件的核心配置内容如下

    <!-- 使用ContextLoaderListener配置时,需要告诉它Spring配置文件的位置 -->
      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <!-- 
           配置上下文载入器,上下文载入器载入除DispatherServlet载入的配置文件之外的其他上下文配置文件
        最常用的上下文载入器是一个Servlet监听器,器名称为ContextLoaderListener
       -->
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <!-- 
          SpringMVC的前端控制器,当DispatcherServlet载入后,它将从一个XML文件中
          载入Spring的应用上下文,该XML文件的名字取决于这里DispathcerServlet将试图从一个
         叫做Springmvc-servlet.xml的文件中载入应用上下文,其默认位于WEB-INF目录下
       -->
        <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <load-on-startup>1</load-on-startup>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring-servlet.xml</param-value>
          </init-param>
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>

注: 配置文件中的配置项我已经为每个配置项进行了详细注解,这里就不在强调

在web.xml中我们分别为ContextLoaderListenerDispatcherServlet指定了加载的配置文件applicationContext.xmlspring-servlet.xml,在本helloword中,我们在applicationContext.xml中并没有配置任何内容,因为根据三层架构原则,我们应该把它留给service和dao层的bean配置,接下来我们来看看spring-servlet.xml配置文件

  • spring-servlet.xml配置文件的内容

          <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/jsp/"></property>
          <property name="suffix" value=".jsp"></property>
       </bean>
      <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="mappings">
              <props>
                  <prop key="/hello.do">helloController</prop>
              </props>
          </property>
      </bean>
      <!-- 这里的id="helloController" 对应的是<bean id="simpleUrlMapping">中的<prop>里面的value -->
      <bean id="helloController" class="org.linge.springmvc.study.controller.HelloController"></bean>
  • 由于篇幅的原因,HelloControllerhello.jsp的代码我就不贴出来来了,源码请到文末的github地址去下载

  • 最后我们使用eclipse将我们的项目使用tomcat爬起来,然后在浏览器中访问一下

    http://localhost:8181/springmvc-study/hello.do
    // 注: tomcat的端口请换成自己本地tomcat的实际端口

    地址,可以看到如下页面,就表示我们的环境搭建成功

好了,到这里我们的第一个基于springmvc的helloword的环境搭建就完成了,后面的文章我们将分析web.xml中关于springmvc的配置和它是如何被启动的

源代码地址

源代码地址

springmvc从入门到源码分享的源代码地址

返回专题目录

猜你喜欢

转载自blog.csdn.net/u013328649/article/details/111626882