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

文章原创。如你发现错误,欢迎指正,在这里先谢过了。博主的所有的文章、笔记都会在优化并整理后发布在个人公众号上,如果我的笔记对你有一定的用处的话,欢迎关注一下,我会提供更多优质的笔记的。
原文地址:https://www.cnblogs.com/Eastry/p/12527769.html