Spring MVC 快速入门(一)第一个配置式SpringMVC程序

让我们来写一下我们的第一个 Spring MVC 程序:

新建一个Maven工程当做父工程!pom依赖!

Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第1张图片
主要有Spring框架核心库、Spring MVC、servlet , JSTL等。

 <dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.1.9.RELEASEversion>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>servlet-apiartifactId>
            <version>2.5version>
        dependency>
        <dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.2version>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
        dependency>
    dependencies>
    <build>

由于Maven可能存在资源过滤的问题,我们将配置完善

<build>
   <resources>
       <resource>
           <directory>src/main/javadirectory>
           <includes>
               <include>**/*.propertiesinclude>
               <include>**/*.xmlinclude>
           includes>
           <filtering>falsefiltering>
       resource>
       <resource>
           <directory>src/main/resourcesdirectory>
           <includes>
               <include>**/*.propertiesinclude>
               <include>**/*.xmlinclude>
           includes>
           <filtering>falsefiltering>
       resource>
   resources>
build>

新建一个Moudle , springmvc-02-hello,MavenWeb项目

Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第2张图片
Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第3张图片

Spring MVC配置

Spring MVC 是基于 Servlet 的,DispatcherServlet 是整个 Spring MVC 框架的核心,主要负责截获请求并将其分派给相应的处理器处理。所以配置 Spring MVC,首先要定义 DispatcherServlet。跟所有 Servlet 一样,用户必须在 web.xml 中进行配置。

注册DispatcherServlet中央调度器


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

  
  <servlet>
    <servlet-name>springmvcservlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    
    <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:springmvc-servlet.xmlparam-value>
    init-param>
    
    
    <load-on-startup>1load-on-startup>
  servlet>

  
  
  <servlet-mapping>
    <servlet-name>springmvcservlet-name>
    
    <url-pattern>/url-pattern>
  servlet-mapping>

web-app>

上述代码配置了一个名为“springmvc”的 Servlet。该 Servlet 是 DispatcherServlet 类型,它就是 Spring MVC 的入口,并通过 1 配置标记容器在启动时就加载此 DispatcherServlet,即自动启动。然后通过 servlet-mapping 映射到“/”,即 DispatcherServlet 需要截获并处理该项目的所有 URL 请求。

init-param 元素

Spring MVC 初始化时将在应用程序的 WEB-INF 目录下查找配置文件,该配置文件的命名规则是“servletName-servlet.xml”,例如 springmvc-servlet.xml。

也可以将 Spring MVC 的配置文件存放在应用程序目录中的任何地方,但需要使用 servlet 的 init-param 元素加载配置文件,通过 contextConfigLocation 参数来指定 Spring MVC 配置文件的位置,示例代码如下。


    <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:springmvc-servlet.xmlparam-value>
    init-param>

此处使用 Spring 资源路径的方式进行指定,即 classpath:springmvc-servlet.xml。

在中添加的作用是,,标记是否在Web服务器(这里是Tomcat) 启动时会创建这个 Servlet 实例,即是否在 Web 服务器启动时调用执行该 Servlet 的 init()方法,而不是在真正访问时才创建。它的值必须是一个整数。

● 当值大于等于 0 时,表示容器在启动时就加载并初始化这个 servlet,数值越小,该 Servlet的优先级就越高,其被创建的也就越早;

● 当值小于 0 或者没有指定时,则表示该 Servlet 在真正被使用时才会去创建。

● 当值相同时,容器会自己选择创建顺序。

< url-pattern > / 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。< url-pattern > /* 会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。

创建Spring MVC配置文件

在工程的类路径即 src 目录下创建 SpringMVC 的配置文件 springmvc.xml。

这个文件名的开头 springmvc与上面 web.xml 中的 元素配置的 springmvc 对应,这是 Spring MVC 的映射配置文件(xxx-servlet.xml)



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

添加 处理映射器

  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

添加 处理器适配器

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

修改视图解析器的注册

SpringMVC 框架为了避免对于请求资源路径与扩展名上的冗余,在视图解析器 InternalResouceViewResolver 中引入了请求的前辍与后辍。而 ModelAndView 中只需给出要跳转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。

Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第4张图片

定义处理器

该处理器需要实现 Controller 接口。

Controller 是控制器接口,接口中只有一个方法 handleRequest,用于处理请求和返回 ModelAndView。

Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第5张图片
ModelAndView 类中的 addObject()方法用于向其 Model 中添加数据。Model 的底层为一个 HashMap。

Model 中的数据存储在 request 作用域中,SringMVC 默认采用转发的方式跳转到视图,本次请求结束,模型中的数据被销毁。

 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        
        <property name="prefix" value="/WEB-INF/jsp/"/>
        
        <property name="suffix" value=".jsp"/>
    bean>

注册处理器

在 springmvc.xml 中注册处理器。不过,需要注意处理器的 id 属性值为一个请求 URI。表示当客户端提交该请求时,会访问 class 指定的这个处理器。

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

 
    
    <bean id="/hello" class="com.kuang.controller.HelloController"/>

定义目标页面View

在 WEB-INF 目录下新建一个子目录 jsp,在其中新建一个 jsp 页面 hello.jsp。

写要跳转的jsp页面,显示ModelandView存放的数据,以及我们的正常页面;

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Kuangshen


${msg}


部署运行

Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第6张图片
Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第7张图片
Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第8张图片
Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第9张图片
Spring MVC 快速入门(一)第一个配置式SpringMVC程序_第10张图片

你可能感兴趣的:(spring,spring,mvc,maven)