美文网首页
用IDEA新建Spring MVC 的Hello World

用IDEA新建Spring MVC 的Hello World

作者: 小昭文 | 来源:发表于2018-07-24 10:39 被阅读188次

    一、 建立项目

    打开IDEA,选择新建project,然后依次点击左侧Maven,勾选Create from archetype,最后从骨架列表中选择 maven-archetype-webapp

    image.png

    点击下一步之后,在GroupId中填写公司域名的反写,在ArtifactId中填写项目名称


    image.png

    点击下一步
    配置maven,IDEA默认使用的是自带的maven插件,建议配置为本机安装的独立maven
    1、点击 Mave home directory 最后的按钮,选择到本机安装的maven目录
    2、然后在User settings file行上,勾选Override,点击前面的浏览按钮,选择到本机安装的maven目录下的conf子目录下的settings.xml文件

    image.png

    点击下一步,选择项目保存的路径


    image.png

    最后点击finish完成
    此时IDEA会运行一会,最后提示执行完成。然后点击右下角的 Enable Auto-Import ,允许自动导入依赖。

    image.png

    此时的项目文件结构如下图,缺少了java和resources文件夹,需要我们手动添加

    image.png

    在main文件夹下手动添加2个文件夹,分别为java 和 resources.
    然后右键java,选择Mark Directory as>> Source Root.
    右键resources,选择Mark Directory as>> Resources Root.


    image.png

    最后文件结构如下图


    image.png

    二、添加项目依赖

    打开项目中pom.xml 文件,然后定位到dependencies节点,添加如下依赖项目,具体的版本号自己设定。我们不需要显示的添加spring-core等依赖,因为spring-webmvc会隐式的导入。

      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
    
        <!--添加Spring MVC的依赖-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.0.7.RELEASE</version>
        </dependency>
    
      </dependencies>
    

    可以打开maven窗口查看,View>>Tool Windows>> Maven Projeccts
    窗口打开后,可以看到spring等核心依赖已经存在。

    image.png image.png

    三、建立包结构

    新建一个包:com.demo ,然后在包里添加一个HelloController的类,代码如下:

    package com.demo;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * Hello 控制器
     *
     * @author xiaozhao
     * @date 2018/7/24上午10:18
     */
    @Controller
    @RequestMapping("/demo")
    public class HelloController {
    
        @RequestMapping("/hello")
        @ResponseBody
        public String hello() {
            return "你好 MVC";
        }
    }
    
    
    

    四、开始配置

    在配置文件的过程中,如果引用的文件不存在的话可能会报错,在文件配置全部完成之后,错误会自动消失。

    1、配置web.xml

    打开webapp>>WEB-INF 下的web.xml文件,修改为如下内容,具体含义看代码中的注释。

    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
    
      <!--指定Spring的配置文件地址-->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
      </context-param>
    
      <!--监视spring的生命周期-->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
      <!--配置Spring MVC 的DispatcherServlet,指定配置文件的路径,拦截所有的请求-->
      <servlet>
        <!--这个名称如果不特别指定的话,跟配置文件名称有关联。如果特别指定配置文件了,则此名称就无所谓了-->
        <servlet-name>springMvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <!--contextConfigLocation这个参数可以不配置,如果不配置的话,那么默认的value就是/WEB-INF/[servlet名字]-servlet.xml-->
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!--表示启动容器时初始化该Servlet-->
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>springMvc</servlet-name>
        <!--mvc-dispatcher拦截所有的请求-->
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>
    
    

    2、配置spring

    2.1 在resources文件夹下新建一个spring.xml,然后内容如下:

    <?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">
    
        <!--启动DI管理-->
        <context:annotation-config/>
    
        <!-- 在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解 -->
        <!--把控制器从包扫描中排除出去-->
        <context:component-scan base-package="com.demo">
            <context:exclude-filter type="annotation"
                                    expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
    
    </beans>
    

    2.2 在resources文件夹下新建一个spring-mvc.xml,然后内容如下:

    <?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">
    
    
        <!-- 启用Spring基于annotation的DI, 使用户可以在Spring MVC中使用Spring的强大功能。
            激活 @Required, @Autowired,JSR 250's @PostConstruct, @PreDestroy and @Resource 等标注 -->
        <context:annotation-config/>
    
        <!--包扫描-->
        <!--DispatcherServlet上下文,只管理@Controller的bean,忽略其他类型的bean,例如@Service-->
        <context:component-scan base-package="com.demo">
            <context:include-filter type="annotation"
                                    expression="org.springframework.stereotype.Controller"></context:include-filter>
        </context:component-scan>
    
    
        <!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 -->
        <!-- 简化配置:
            (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter
            (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持
        -->
        <mvc:annotation-driven>
            <!--解决以@ResponseBody直接返回字符串时中文乱码问题-->
            <mvc:message-converters register-defaults="true">
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <constructor-arg value="UTF-8"/>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
    
        <!--前缀加上后缀生成一个完整的jsp路径-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    </beans>
    

    项目最终结构

    image.png

    五、连接Tomcat

    点击IDEA右上角的按钮,选择Edit Configurations

    image.png image.png image.png

    切换到Deployment选项卡,然后点击下面的+号,在弹出的菜单中选择
    Artifact...,最后选择 war exploded

    image.png image.png

    六、运行

    点击运行按钮,开始运行,然后在地址栏中输入

    http://localhost:8080/demo/hello

    image.png

    相关文章

      网友评论

          本文标题:用IDEA新建Spring MVC 的Hello World

          本文链接:https://www.haomeiwen.com/subject/ghfemftx.html