Spring入门到精通,1.入门

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>
web.xml
 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>
dispatcher-servlet.xml
 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>
applicationContext.xml
<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>
pom.xml

5.maven更新项目

6.新建控制器

在src/main/java 下面新建包 com.helios.controller, 然后新建 MainController 类

 

7.编写首页内容

在WEB-INF/pages 下面新建一个文件 名为 index.ftl

 

8.运行和测试

 

9.编写时间内容

MainController中新增加一个方法 toTime, pages 下新增一个 time.ftl 文件

 

10.运行和测试

 

posted @ 2017-02-07 09:57  晓的幸福  阅读(2081)  评论(0编辑  收藏  举报