Spring MVC程序搭建入门

Spring MVC程序搭建入门

环境准备

  • idea
  • jdk 1.8 以上版本
  • tomcat

Spring MVC 原理图

此图为Spring MVC 原理图,转自
https://www.cnblogs.com/chuiyuan/p/5301216.html
在这里插入图片描述

Spring MVC底层原理初探

  • 新建maven空的工程spring-parent

  • 新建spring-mvc-01模块

    工程目录结构如下

在这里插入图片描述

详细结构图如下
在这里插入图片描述

  • 引入依赖包如下

    <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            </dependency>
        </dependencies>
    
  • 记得添加web支持

在这里插入图片描述

  • 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">
    
        <!-- 注册DispatcherServlet-->
        <servlet>
            <servlet-name>spring-mvc-servlet</servlet-name>
            <!--设置servlet class 名字-->
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!-- 关联spring mvc上下文配置xml -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <!-- / 匹配请求中不包括jsp;/*匹配所有请求包括jsp -->
        <servlet-mapping>
            <servlet-name>spring-mvc-servlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    
  • 编写Controller业务

    public class MyController implements Controller {
    
        public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
            PrintWriter writer = httpServletResponse.getWriter();
            writer.write("hello spring mvc");
            writer.flush();
            return null;
        }
    }
    
  • 配置servlet 上下文spring-servlet.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!-- 添加HandlerMapping bean-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        <!-- 添加HandlerAdapter bean-->
        <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>
    
        <bean id="/hello" class="com.shadow.controller.MyController"/>
    
    </beans>
    
    
    
  • 测试

在这里插入图片描述

企业开发配置

如上为Spring MVC 配置版实现,下面我们看下实际企业中如何配置开发!

  • 初始环境同上

  • 引入maven依赖包,同上

  • 配置web.xml配置,同上

  • 配置spring-servlet.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:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!-- 拷贝狂神的解说,此处实际上简化了HandlerMapping和HandlerAdapter的配置
           支持mvc注解驱动
          在spring中一般采用@RequestMapping注解来完成映射关系
          要想使@RequestMapping注解生效
          必须向上下文中注册DefaultAnnotationHandlerMapping
          和一个AnnotationMethodHandlerAdapter实例
          这两个实例分别在类级别和方法级别处理。
          而annotation-driven配置帮助我们自动完成上述两个实例的注入。
       -->
        <mvc:annotation-driven/>
        <!-- 自动扫描包-->
        <context:component-scan base-package="com.shadow.controller"></context:component-scan>
        <!--&lt;!&ndash; 让Spring MVC不处理静态资源 .css .js .html .mp3等&ndash;&gt;-->
        <mvc:default-servlet-handler />
    
        <!--视图解析器: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>
    
    </beans>
    

​ 如果报错,参考https://blog.csdn.net/yuynim/article/details/79738802 链接,mvc命名空间一定要 对

  • Controller 业务编写

    @Controller
    public class MyController {
    
        @RequestMapping("/hello")
        @ResponseBody
        public String test(){
            return "hello, spring mvc";
        }
    }
    

关于

对于此 <mvc:default-servlet-handler />注解,大家可以自己注释掉测试一下

  • 第一步,将index.jsp 替换为index.html
  1. 此注释不注释掉

​ 访问http://localhost:8080/index.html

​ – 结果
在这里插入图片描述

  1. 将此注释注释掉

    访问http://localhost:8080/index.html

    ​ – 结果

在这里插入图片描述

服务端

[http-nio-8080-exec-1] org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping for GET /index.html

参考链接如下:

https://blog.csdn.net/qq_33369905/article/details/106647319

https://www.cnblogs.com/chuiyuan/p/5301216.html

https://blog.csdn.net/yuynim/article/details/79738802

顺便说下,最近发现狂神的csdn 讲的还不错,大家可以去看看,参考链接中第一个!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值