前言
你懂的,快速搭建一个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中运行。
下一篇........