Loading

02-IDEA搭建SpringMVC项目

1、新建Maven项目

目录结构如下:

image-20220227165302062

2、添加依赖

<dependencies>
    <!-- spring-webmvc依赖于spring-core、spring-beans、spring-context等jar包,故不需要显式引入 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    <!-- java servlet接口包,用于代码编译 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

3、编写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_4_0.xsd"
         version="4.0">

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--
        这里配置的是 ContextLoaderListener 监听器的参数:指定Spring根应用上下文的路径
        如果不配置,则spring默认去找/WEB-INF目录下的application.xml文件,找不到则报错
     -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-application.xml</param-value>
    </context-param>

    <!-- 字符编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- spring mvc前端控制器 -->
    <servlet>
        <servlet-name>dispatcherServlet</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-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

配置文件中路径/*和/的区别:

  • /*:会匹配所有的url,一般只用在过滤器上
  • /:只能匹配到类似这种不带后缀的url:/login、/register等,不会匹配到带后缀的/login.jsp等url,但是也会匹配到带后缀的静态资源,如.js、.css等,因此,mvc需要配置静态资源处理器

4、编写Spring配置文件spring-application.xml

这个配置文件由ContextLoaderListener加载,作为整个Spring应用的根应用上下文。

<?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">

    <!-- 全局自动扫描配置,可选:排序控制层的bean -->
    <context:component-scan base-package="org.omaster"/>

</beans>

5、编写SpringMVC配置文件spring-mvc.xml

这个配置文件由DispatcherServlet加载,作为根应用上下文的子应用上下文,控制层的bean类必须注入到该应用上下文中,即使根应用上下文中存在

一般的做法是:在根应用上下文中配置除服务层的所有bean,在mvc应用上下文中配置controller层的bean。

一个简单的做法是:所有的bean都配置在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: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">

    <!-- 1、服务层自动扫描配置 -->
    <context:component-scan base-package="org.omaster.controller"/>
    
    <!-- 2、映射处理器,处理RequestMapping接口和Controller Method的映射关系 -->
    <mvc:annotation-driven/>
    
    <!-- 3、静态资源处理器,当映射处理器未匹配到指定资源时,会调用这里配置的DefaultServletHttpRequestHandler进行处理 -->
    <mvc:default-servlet-handler/>

    <!-- 4、配置资源解析器 -->
    <bean id="a" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 资源目录前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 资源目录后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

6、编写控制层代码和前端代码

org.omaster.controller.Demo01Controller

@Controller
public class Demo01Controller {

    @GetMapping("/test")
    public String test() {
        System.out.println("test");
        return "test";
    }
}

/WEB-INF/jsp/test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>TEST</title>
</head>
<body>
<h1>TEST</h1>
</body>
</html>

7、添加jar包

进入项目结构,选择工件,如下所示

image-20220227174703148

可以看到右侧WEB-INF目录下只有一个classes目录,而没有我们用到的jar包,因此需要我们手动添加:右键可用元素下的项目,选择置于Output Root,将jar包添加到输出目录下。

image-20220227175201980

添加后如下所示,这样jar包就添加好了。

image-20220227175252714

8、部署项目

将项目部署到tomcat服务器中,如下图,然后启动Tomcat。

image-20220227174424120

9、测试

访问http://localhost:8080/SpringProject/test,显示jsp内容,项目搭建成功

image-20220227175743495

posted @ 2022-02-27 18:04  OMaster  阅读(524)  评论(0编辑  收藏  举报