1 SpringMVC 特點&概述
- SpringMVC 從易用性,效率上 比曾經流行的 Struts2 更好?
- SpringMVC 是 WEB 層框架,接管了 Web 層組件, 比如控制器, 視圖, 視圖解析, 返回給用戶的數據格式, 同時支持 MVC 的開發模式/開發架構
- SpringMVC 通過注解,讓 POJO 成為控制器,不需要繼承類或者實現接口
- SpringMVC 采用低耦合的組件設計方式,具有更好擴展和靈活性.
- 支持 REST 格式的 URL 請求.
- SpringMVC 是基于 Spring 的, 也就是 SpringMVC 是在 Spring 基礎上的。SpringMVC 的核心包 spring-webmvc-xx.jar 和 spring-web-xx.jar
2 Spring、SpringMVC和SpringBoot 的關系
- Spring MVC 只是 Spring 處理 WEB 層請求的一個模塊/組件, Spring MVC 的基石是Servlet[Java WEB]
- Spring Boot 是為了簡化開發者的使用, 推出的封神框架(約定優于配置,簡化了 Spring 的配置流程), SpringBoot 包含很多組件/框架,Spring就是最核心的內容之一,也包含 SpringMVC
- 他們的關系大概是: Spring Boot > Spring > Spring MVC
3?SpringMVC-快速入門(構建項目)
(1)新建一個java項目
?(2)添加web框架
?點擊確定后,可以看到項目目錄下自動生成了一個web目錄
?
(3)在WEB-INF目錄下新建一個lib目錄,存放jar包
?
(4)將需要使用的jar包復到lib目錄下(所需jar包可在文章頂部獲取)
?全選復制
粘貼到lib目錄
(5)將所有jar包添加為庫
?
(6)在src目錄下創建spring容器文件
?
?(7)配置 web/WEB-INF/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"><!--配置前端控制器/中央控制器/分發控制器--><!--1.用戶的請求都會經過它的處理--><servlet><!--servlet-name可以自己定義--><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置屬性contextConfigLocation,指定 DispatcherServlet 去操作的spring配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-mvc.xml</param-value></init-param><!--在web項目啟動時,就自動加載DispatcherServlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><!--需要和上面的servlet-name保持一致--><servlet-name>springDispatcherServlet</servlet-name><!--1.這里配置的 url-pattern 是 / ,表示用戶的請求都經過DispatcherServlet2.這樣配置也支持 rest 風格的 url 請求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
(8)在web目錄下創建 login.jsp 作為登錄頁面
<%--Created by IntelliJ IDEA.User: xxxDate: 2024-05-25Time: 20:50To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登錄</title>
</head>
<body>
<h3>登錄頁面</h3>
<%--
action="login" 表示的url 是 http://localhost:8080/springmvc/login
--%>
<form action="login">u:<input name="username" type="text">p:<input name="password" type="password"><input type="submit" value="登錄">
</form>
</body>
</html>
(9)在src目錄下創建包com.web,在該包下創建 UserServlet.java 作為控制器
package com.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 如果使用了SpringMVC框架,在一個類上標識@Controller* 表示將該類視為一個控制器,注入到容器中*/
@Controller
public class UserServlet {//編寫方法,響應用戶的請求/*** 1.login方法是用于響應用戶的登錄請求* 2.@RequestMapping(value = "/login") 表示給控制器的這個方法配了一個url映射* 當用戶在瀏覽器輸入 http://localhost:8080/web工程路徑/login 就能訪問到login()* 3.return "login_ok"; 表示返回結果給視圖解析器(InternalResourceViewResolver)* ,視圖解析器會根據配置,來決定跳轉哪個頁面*/@RequestMapping(value = "/login")public String login(){System.out.println("login ok....");return "login_ok";}
}
(10)在前面已經創建好spring容器文件中進行配置
<?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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--配置自動掃描包--><context:component-scan base-package="com.web"/><!--下面配置springMVC的視圖解析器,比如我們的controller return 的是 login_ok那么要跳轉的頁面頁面就是 /WEB-INF/pages/login_ok--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置屬性suffix(后綴) 和 prefix(前綴)--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean>
</beans>
(11)在web/WEB-INF目錄下新建目錄 pages,在pages目錄新建一個jsp文件,login_ok.jsp
<%--Created by IntelliJ IDEA.User: 王偉俊Date: 2024-05-25Time: 21:11To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登錄成功</title>
</head>
<body>
<h1>恭喜 登錄成功</h1>
</body>
</html>
(12)配置 tomcat 服務器
?
?
tomcat配置成功!
?(13)啟動服務器
在瀏覽器輸入網址http://localhost:8080/springmvc/login.jsp?
點擊登錄,顯示如下頁面,跳轉成功!
4 細節說明
- ?重點學習如何搭建一個 springmvc 項目,初步理解 springmvc 工作流程
- 這里的 UserServlet 需要注解成@Controller ,我們稱為一個 Handler 處理器
- UserServlet 指定 url 時,value可以省略
@RequestMapping("/login")
- 關 于 SpringMVC 的 DispatcherServlet 的 配 置 文 件 , 如 果 不 在 web.xml 指 定 applicationContext-mvc.xml, 默認在 /WEB-INF/springDispatcherServlet-servlet.xml 找這 個配置文件