前言

构建简单的SpringMVC工程,熟悉环境的配置以及简单的工作流程。

创建项目配置简单的HolleSpringMVC

1、创建一个新的Moudle,右键勾选Web支持。

image.png
image.png

2、修改pom.xml,导入所需依赖。

导入所需jar包。

  1. <dependencies>
  2. <dependency>
  3. <groupId>junit</groupId>
  4. <artifactId>junit</artifactId>
  5. <version>3.8.2</version>
  6. <scope>test</scope>
  7. </dependency>
  8. <dependency>
  9. <groupId>org.springframework</groupId>
  10. <artifactId>spring-webmvc</artifactId>
  11. <version>5.1.9.RELEASE</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>javax.servlet</groupId>
  15. <artifactId>servlet-api</artifactId>
  16. <version>2.5</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>javax.servlet</groupId>
  20. <artifactId>jstl</artifactId>
  21. <version>1.2</version>
  22. </dependency>
  23. </dependencies>

3、修改web.xml, 注册DispatcherServlet。

DispatcherServlet同样是一个HttpServlet进行请求的分发(分发给处理映射器、处理适配器、视图解析器),我给服务器一个请求(本例中的请求:展示jsp页面以及其中的内容),请求就会通过DispatcherServlet对我们发送的请求的URL(请求展示的jsp页面的位置)进行解析,得到发送的请求所需要的资源标识符(在哪一个jsp页面下:名叫hello这个jsp下)。

    <!--1.注册DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!--启动级别-1-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--/ 匹配所有的请求;(不包括.jsp)-->
    <!--/* 匹配所有的请求;(包括.jsp)-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

4、编写SpringMVC的配置文件

名称官方要求:[servletname]-servlet.xml,此处名称:springmvc-servlet.xml。
image.png

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

5、添加处理映射器、处理适配器、视图解析器。

DispatcherServlet将请求分发给这三个;处理映射器匹配对应的URL找到我们对请求做处理的处理器Handler。处理适配器去执行我们所编写的Controller方法,执行完Controller方法后会返回一个ModelAndView给DispatcherServlet,然后根据DispatcherServlet所给的ModelAndView对象配置视图解析器,ModelAndView对象中包含请求的逻辑视图路径(3、中的资源标识符所在)以及其中的数据信息,解析器将逻辑视图路径进行处理拼接成真实视图路径。

    <!--处理映射器BeanNameUrlHandlerMapping-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

        <!--处理适配器SimpleControllerHandlerAdapter-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--视图解析器:DispatcherServlet给他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

6、编写我们要操作业务

编写我们要操作业务Controller ,要实现Controller接口,需要返回一个ModelAndView。通过ModelAndView()方法实现我们的请求操作,setViewName指定数据及页面所展示的具体页面。

package...
import...
//注意:这里我们先导入Controller接口
public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();

        //封装对象,放在ModelAndView中。
        mv.addObject("msg","HelloSpringMVC1!");
        //封装要跳转的视图,放在ModelAndView中
        mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
        return mv;
    }

}

7、将自己的类交给SpringIOC容器,注册bean。

BeanNameUrlHandlerMapping会根据请求的url和Srping容器的name属性进行匹配,从而找到处理器。

<!--Handler-->
<bean id="/hello" class="com.sy.controller.HelloController"/>

8、跳转页面

写要跳转的jsp页面,显示ModelandView存放的数据以及页面。

<body>
${msg}
</body>

9、配置Tomcat,启动测试。

image.png

注:可能会遇到的问题!

操作以及代码完全正确,仍然出现404?
image.png
1、查看是否缺少jar包
2、jar包存在,无法正确显示
解决方法:
IDEA的项目发布(Project Sturcture.. ..)中添加lib目录,导入项目所有jar包。
image.png
(lib与classes同级)
image.png
右键全选添加Library Files
image.png
**