1.简介
1.1 编写背景
个人编写了基于Spring的大大小小数个项目,能够熟练的编写,但是对于其内部原理不是精通,所以想写一系列的文章,从基础开始到深入原理进行学习和总结.
1.2 学习前提
1.知道Maven是如果管理项目的. Maven官方链接 https://maven.apache.org/
2.使用Eclipse EE 或者 Spring Tool Suite™ (STS) 个人推荐sts
3.有基本的Java编程基础,知道MVC等概念
2.Spring 入门项目
编写一个显示服务器当前时间的入门项目.
2.1 使用的环境
JDK: 1.8.0_91
IDE: STS 3.7.3.RELEASE
Maven: Apache maven 3.3.9
Server: Apache Tomcat 7.0
2.2 步骤详解
1.新建一个Maven项目
2.选择建立简单项目
3.填写项目基本信息
刚建立完成有错误很正常,因为我们建立的是最简单的项目,不包含其他任何配置
4.新增Web.xml,dispatcher-servlet.xml,applicationContext.xml文件,修改pom.xml文件
先在webapp下面新建一个WEB-INF文件夹,然后新建一个文件,命名为web.xml,然后依次建立pages文件夹和dispatcher-servlet.xml
另外在src/main/resources 下面新建 applicationContext.xml文件
文件的内容依次为

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " 4 version="2.5"> 5 <display-name>Learn-Spring-Web</display-name> 6 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>classpath:applicationContext.xml</param-value> 10 </context-param> 11 <listener> 12 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 13 </listener> 14 15 <servlet> 16 <servlet-name>dispatcher</servlet-name> 17 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 18 <init-param> 19 <param-name>contextConfigLocation</param-name> 20 <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 21 </init-param> 22 <load-on-startup>1</load-on-startup> 23 </servlet> 24 <servlet-mapping> 25 <servlet-name>dispatcher</servlet-name> 26 <url-pattern>/*</url-pattern> 27 </servlet-mapping> 28 29 <filter> 30 <filter-name>encodingFilter</filter-name> 31 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 32 <init-param> 33 <param-name>encoding</param-name> 34 <param-value>UTF-8</param-value> 35 </init-param> 36 <init-param> 37 <param-name>forceEncoding</param-name> 38 <param-value>true</param-value> 39 </init-param> 40 </filter> 41 <filter-mapping> 42 <filter-name>encodingFilter</filter-name> 43 <url-pattern>/*</url-pattern> 44 </filter-mapping> 45 46 <welcome-file-list> 47 <welcome-file>index.html</welcome-file> 48 </welcome-file-list> 49 </web-app>

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 6 7 <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 8 <property name="templateLoaderPath" value="/WEB-INF/pages/" /> 9 <property name="freemarkerSettings"> 10 <props> 11 <prop key="template_update_delay">0</prop> 12 <prop key="defaultEncoding">UTF-8</prop> 13 <prop key="url_escaping_charset">UTF-8</prop> 14 <prop key="boolean_format">true,false</prop> 15 <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> 16 <prop key="date_format">yyyy-MM-dd</prop> 17 <prop key="number_format">0.##########</prop> 18 <prop key="whitespace_stripping">true</prop> 19 <prop key="classic_compatible">true</prop> 20 <prop key="template_exception_handler">ignore</prop> 21 </props> 22 </property> 23 </bean> 24 25 <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 26 <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" /> 27 <property name="cache" value="true" /> 28 <property name="prefix" value="" /> 29 <property name="suffix" value=".ftl" /> 30 <property name="contentType" value="text/html;charset=UTF-8" /> 31 <property name="requestContextAttribute" value="request" /> 32 <property name="exposeSpringMacroHelpers" value="true" /> 33 <property name="exposeRequestAttributes" value="false" /> 34 <property name="exposeSessionAttributes" value="false" /> 35 <property name="allowSessionOverride" value="true" /> 36 </bean> 37 38 </beans>

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:aop="http://www.springframework.org/schema/aop" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:task="http://www.springframework.org/schema/task" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context-3.0.xsd 10 http://www.springframework.org/schema/task 11 http://www.springframework.org/schema/task/spring-task-3.0.xsd 12 http://www.springframework.org/schema/aop 13 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 14 http://www.springframework.org/schema/mvc 15 http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> 16 17 <context:annotation-config /> 18 <mvc:annotation-driven /> 19 20 <!-- 默认扫描的包路径 --> 21 <context:component-scan base-package="com.helios.**"> 22 <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 23 </context:component-scan> 24 </beans>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.helios</groupId> <artifactId>learn</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.3.3.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <!-- spring 相关 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- freemarker --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.25-incubating</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
5.maven更新项目
6.新建控制器
在src/main/java 下面新建包 com.helios.controller, 然后新建 MainController 类
7.编写首页内容
在WEB-INF/pages 下面新建一个文件 名为 index.ftl
8.运行和测试
9.编写时间内容
MainController中新增加一个方法 toTime, pages 下新增一个 time.ftl 文件
10.运行和测试