• SpringMVC详细笔记(一) —— 几步快速搭建一个SpringMVC程序


    前言

    你懂的,快速搭建一个SpringMVC项目。

    先来见识一下SpringMVC的魅力和用法。然后再去详细解释内部原理,这样可以一边回想实现过程,一边理解,能够达到加强记忆的目的。

    本博客源码下载:链接:https://pan.baidu.com/s/16lviOgXUR41WDXQd0JIDhQ  提取码:pzrn 

    要实现的效果

    SpringMVC是一个基于spring的MVC框架。在这个案例要实现:在浏览器中输入:http://localhost:8080/SpringMVC_Demo1/hello.demo,浏览器会显示出“Hello SpringMVC!“的字样。

    那么废话不多说,开始搭建第一个SpringMVC的程序。

    新建Web项目,导入需要的jar包

    初学可以使用eclipse来做,用idea的话,他会自动生成太多,虽然方便,但是会遗漏很多东西。

    1、用eclipse新建一个web项目:右击_>New_>Porject.._>Dynamic Web Project。

    2、并导入需要的jar包到WEB-INF/lib目录下(没有这个lib目录可以新建)。

    jsp-api.jar和servlet-api.jar是在tomcat安装路径下的lib目录下面找的,如果没有这两个包,会在编程过程中报错: javax.servlet 找不到。

    这里的其他jar包可以到https://mvnrepository.com/中取搜spring。注意版本哦。

    添加springmvc配置文件

    在src目录下新建springmvc-config.xml文件,用来当作springmvc的配置文件(位置和文件名不固定,可以根据喜好修改,但是下面跟其相关的配置也要改变)。

    代码如下:后面还会用得到它,这里先新建一个。

    <?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:oxm="http://www.springframework.org/schema/oxm" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/oxm https://www.springframework.org/schema/oxm/spring-oxm.xsd">
        
        
    </beans>

    修改web.xml文件

    在web.xml文件中配置springmvc的前端控制器DispatcherServlet。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
         
        <display-name>SpringMVC_Demo1</display-name>
        <!-- 配置前端控制器 -->
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!-- 给DispatcherServlet这个类中的属性赋值 -->
            <init-param>
                <!-- 这个参数可以在org.springframework.web.servlet.FrameworkServlet类中找到 -->
                <!-- 用于配置用于设置配置文件的位置 -->
                <param-name>contextConfigLocation</param-name>
                <!-- 告诉DispatcherServlet配置文件在classpath目录下的一个叫springmvc-config.xml的文件 -->
                <param-value>classpath:springmvc-config.xml</param-value>
            </init-param>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <!-- 这里是拦截规则,下面的意思是是用户访问的url是以.demo结束的都会被springmvc的前端控制器拦截  -->
            <!-- 这里你可以换成.do/.action都无所谓。或者直接写成/,意思是所有url请求都会被springmvc处理 -->
            <!-- 
                *.do:会拦截http://xxx/../xxx.do的请求。
                *.action:会拦截http://xx/../xx.action的请求
                /:会拦截所有请求
             -->
            <url-pattern>*.demo</url-pattern>
        </servlet-mapping>
    
    </web-app>

    看上去跟配置servlet一样嘛,对这玩意就是个servlet。

    编写HelloController.java

    巴拉巴拉的导包配置了这么久,现在才开始写java代码,这也是spring被称为配置地狱的原因。我们这才一个最简单的实例就这样了。

    创建一个HelloController类,实现org.springframework.web.servlet.mvc.Controller;接口,这也就是我们所说的控制器了,也就是mvc中的c位。

    package com.demo.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    /** * 实现了controller接口,负责处理前端的请求和相应 */ public class HelloController implements Controller { @Override //当前端访问这个controller的时候,会执行这个方法。 public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception { //通过这个ModelAndView对象,springmvc将模型(也就是数据)和图形(也就是jsp,html等)结合在一起。 ModelAndView mav=new ModelAndView(); //下面两句的意思是:输出Hello SpringMVC!到WEB-INF/jsp目录下面的index.jsp。 //jsp可以通过key值say,获取Hello SpringMVC!字符串 mav.addObject("say","Hello SpringMVC!"); mav.setViewName("/WEB-INF/jsp/index.jsp"); return mav; } }

    ModeAndView中的model是mvc中的m代表数据,View就是mvc中的v代表视图。这个类将视图和数据结合在了一起,因为视图上要显示数据嘛。

    配置SpringMVC的配置文件

    刚才新建的springmvc-config.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:oxm="http://www.springframework.org/schema/oxm" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/oxm https://www.springframework.org/schema/oxm/spring-oxm.xsd">
        
        <!-- 配置上面编写的controller -->
        <bean id="hello" class="com.demo.controller.HelloController"/>
        
        <!-- 
            SimpleUrlHandlerMapping,控制器映射器,意思是将请求的url映射给一个控制器,并控制器中的代码。
    比如:http://localhost:8080/SpringMVC_Demo1/hello.demo这个请求,这里就会映射给上面配置的hello控制器,执行其中的代码。。。
    --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- 意思是当请求路径是/hello.demo的时候,会把请求给id或者name为hello的控制器执行 --> <prop key="/hello.demo">hello</prop> </props> </property> </bean> </beans>

    编写index.jsp文件

    还记得上面编写HelloController的时候,返回的视图层是一个jsp嘛。就是这句mav.setViewName("/WEB-INF/jsp/index.jsp");

    所以springmvc会到WEB-INFO/jsp目录下面去找index.jsp文件,然后把model传给页面,处理后输出到浏览器显示。

    index.jsp如下。

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>SpringMVC_Demo1</title>
      </head>
      <body>
      ${say}
      </body>
    </html>

    这里使用是jsp,当然可以配置其他种类的视图如html等,这里先不介绍。

    部署Tomcat将项目添加到其中运行

    首先要到tomcat官网下载tomcat。然后添加到eclipse中(idea添加到idea中)。

     这里有时候会有小问题,还记得导包的时候有:jsp-api.jar和servlet-api.jar这两个包嘛?当时是从tomcat/lib路径下赋值过来的,如果是从其他的地方赋值的,有可能会出现包冲突的问题,主要是你导入的跟tomcat里面的版本不一样导致的。

    浏览器输入地址查看效果

    输入:http://localhost:8080/SpringMVC_Demo1/hello.demo

     

     总结

    上面一共通过几步完成了一个springmvc的小demo

    1、准备:新建项目、下载包、将jar包导入到lib目录。

     2、修改web.xml文件,配置org.springframework.web.servlet.DispatcherServlet前端控制器。

     3、新建springmvc的配置文件,springmvc-config.xml。

    4、编写controller类。

    5、部署到tomcat中运行。


    下一篇........

    作者:BobC

    文章原创。如你发现错误,欢迎指正,在这里先谢过了。博主的所有的文章、笔记都会在优化并整理后发布在个人公众号上,如果我的笔记对你有一定的用处的话,欢迎关注一下,我会提供更多优质的笔记的。
  • 相关阅读:
    机器学习(八) 多项式回归与模型泛化(上)
    机器学习(七) PCA与梯度上升法 (下)
    机器学习(七) PCA与梯度上升法 (上)
    机器学习(六) 梯度下降法 (下)
    机器学习(六) 梯度下降法 (上)
    机器学习(五) 线性回归法 (下)
    机器学习(五) 线性回归法 (上)
    机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)
    获取字符串中img标签的url集合(转载)
    微信上传文章素材—ASP.NET MVC从View层传数据到Controller层
  • 原文地址:https://www.cnblogs.com/Eastry/p/12527769.html
Copyright © 2020-2023  润新知