開發過程css
1)配置DispatcherServlet前端控制器html
2)開發處理具體業務邏輯的Handler(@Controller、 @RequestMapping)前端
3) xml配置⽂件配置controller掃描,配置springmvc三⼤件java
4)將xml⽂件路徑告訴springmvc(DispatcherServlet)web
詳細流程:spring
新建maven項目,注意選擇webapp骨架。
apache
建立成功以後會發現沒有src等目錄,這些須要咱們手動建立:
在src下面新建main,main下面新建java目錄,選擇java目錄,右鍵,
瀏覽器
在main下面繼續新建resource目錄,選擇resource目錄,右鍵,
spring-mvc
pom.xmltomcat
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lagou.edu</groupId> <artifactId>springmvc-demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <!--引入spring webmvc的依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.12.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
注意Tomcat7插件是用來運行項目的,右側運行:
main文件夾下面新建webapp文件夾,webapp下面新建WEB-INF,下面新建web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 方式一:帶後綴,好比*.action *.do *.aaa 該種方式比較精確、方便,在之前和如今企業中都有很大的使用比例 方式二:/ 不會攔截 .jsp,可是會攔截.html等靜態資源(靜態資源:除了servlet和jsp以外的js、css、png等) 爲何配置爲/ 會攔截靜態資源??? 由於tomcat容器中有一個web.xml(父),你的項目中也有一個web.xml(子),是一個繼承關係 父web.xml中有一個DefaultServlet, url-pattern 是一個 / 此時咱們本身的web.xml中也配置了一個 / ,覆寫了父web.xml的配置 爲何不攔截.jsp呢? 由於父web.xml中有一個JspServlet,這個servlet攔截.jsp文件,而咱們並無覆寫這個配置, 因此springmvc此時不攔截jsp,jsp的處理交給了tomcat 如何解決/攔截靜態資源這件事? 方式三:/* 攔截全部,包括.jsp --> <!--攔截匹配規則的url請求,進入springmvc框架處理--> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
裏面配置了springmvc相關的配置,引入了springmvc.xml:
在resource目錄下新建springmvc.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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!--開啓controller掃描--> <context:component-scan base-package="com.lagou.edu.controller"/> <!--配置springmvc的視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 自動註冊最合適的處理器映射器,處理器適配器(調用handler方法) --> <mvc:annotation-driven/> </beans>
在java目錄下新建包com.lagou.edu.controller,下面新建DemoController:
package com.lagou.edu.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import java.util.Date; /** * @author lyj * @Title: DemoController * @ProjectName springmvc-demo * @Description: TODO * @date 2020/6/9 21:21 */ @Controller @RequestMapping("/demo") public class DemoController { /** * http://localhost:8080/demo/handle01 */ @RequestMapping("/handle01") public ModelAndView handle01(){ Date date=new Date(); ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("date",date); modelAndView.setViewName("success"); return modelAndView; } }
在WEB-INF下面新建jsp文件夾,下面新建success.jsp:
<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 當前時間 ${date} </body> </html>
完畢後整個項目結構以下:
瀏覽器訪問: