Idea搭建SpringMVC框架(初次接觸)

     公司轉Java開發,作的第一個項目是SpringMVC框架,由於底層是同事封裝,等完成整個項目,對SpringMVC框架的搭建還不是很瞭解,因此抽時間不忙的時候本身搭建了一個SpringMVC框架。css

本次搭建SpringMVC想實現的效果很簡單,就是可以在瀏覽其中直接訪問Controller層,實現HelloWord的展現。前端

一、框架的大致結構:java

2.pom.xml主要是jar包引入web

pom.xml:spring

<?xml version="1.0" encoding="UTF-8"?>
<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>org.py</groupId>
    <artifactId>SpringMvcDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>
</project>

其中,build節點是很重要的節點,主要是程序編譯組件的加載,若是沒有該節點,項目啓動不起來。express

引入的必須jar包如上述代碼所示。apache

三、web.xml配置api

<?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_3_1.xsd"
         version="3.1">
    <!-- 配置前端控制器 -->
    <!--<servlet>-->
    <!--<servlet-name>web-dispatcher</servlet-name>-->
    <!--<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>-->
    <!--<init-param>-->
    <!--<param-name>contextConfigLocation</param-name>-->
    <!--<param-value>classpath:spring-mvc.xml</param-value>-->
    <!--</init-param>-->
    <!--<load-on-startup>1</load-on-startup>-->
    <!--</servlet>-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加載前端控制器配置文件 上下文配置位置-->
        <init-param>
            <!-- 備註:
                contextConfigLocation:指定 SpringMVC 配置的加載位置,若是不指定則默認加載
                WEB-INF/[DispatcherServlet 的 Servlet 名字]-servlet.xml
             -->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 表示隨WEB服務器啓動 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!-- 備註:能夠攔截三種請求
            第一種:攔截固定後綴的url,好比設置爲 *.do、*.action, 例如:/user/add.action 此方法最簡單,不會致使靜態資源(jpg,js,css)被攔截
            第二種:攔截全部,設置爲/,例如:/user/add  /user/add.action此方法能夠實現REST風格的url,
            不少互聯網類型的應用使用這種方式.可是此方法會致使靜態文件(jpg,js,css)被攔截後不能正常顯示.須要特殊處理
            第三種:攔截全部,設置爲/*,此設置方法錯誤,由於請求到Action,當action轉到jsp時再次被攔截,提示不能根據jsp路徑mapping成功
        -->
        <!-- 默認匹配全部的請求 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

四、spring-mvc.xml配置spring-mvc

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:c="http://www.springframework.org/schema/c" xmlns:cache="http://www.springframework.org/schema/cache"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <!-- 自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter, -->
    <!-- 可用在xml配置文件中使用<mvc:annotation-driven>替代註解處理器和適配器的配置。 -->
    <mvc:annotation-driven/>
    <!-- 組件掃描器:能夠掃描 @Controller、@Service、@Repository 等等 -->
    <context:component-scan base-package="org.py.heaton.controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

 五、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_3_1.xsd"
         version="3.1">
    <!-- 配置前端控制器 -->
    <!--<servlet>-->
    <!--<servlet-name>web-dispatcher</servlet-name>-->
    <!--<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>-->
    <!--<init-param>-->
    <!--<param-name>contextConfigLocation</param-name>-->
    <!--<param-value>classpath:spring-mvc.xml</param-value>-->
    <!--</init-param>-->
    <!--<load-on-startup>1</load-on-startup>-->
    <!--</servlet>-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加載前端控制器配置文件 上下文配置位置-->
        <init-param>
            <!-- 備註:
                contextConfigLocation:指定 SpringMVC 配置的加載位置,若是不指定則默認加載
                WEB-INF/[DispatcherServlet 的 Servlet 名字]-servlet.xml
             -->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 表示隨WEB服務器啓動 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!-- 備註:能夠攔截三種請求
            第一種:攔截固定後綴的url,好比設置爲 *.do、*.action, 例如:/user/add.action 此方法最簡單,不會致使靜態資源(jpg,js,css)被攔截
            第二種:攔截全部,設置爲/,例如:/user/add  /user/add.action此方法能夠實現REST風格的url,
            不少互聯網類型的應用使用這種方式.可是此方法會致使靜態文件(jpg,js,css)被攔截後不能正常顯示.須要特殊處理
            第三種:攔截全部,設置爲/*,此設置方法錯誤,由於請求到Action,當action轉到jsp時再次被攔截,提示不能根據jsp路徑mapping成功
        -->
        <!-- 默認匹配全部的請求 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

六、Controller層:

package org.py.heaton.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by py on 2017/1/5.
 */
@Controller
@RequestMapping(value = "/Index/")
public class IndexController {

    @ResponseBody
    @RequestMapping(value = "HelloWord")
    public String HelloWord(){
        return "Hello Word!!!!";
    }
}

 七、訪問Controller,有圖可見,能夠正常訪問

相關文章
相關標籤/搜索