# 從頭開始寫SpringMVC ###### tags: `SpringMVC-基礎` 1.先在web資料夾下創建jsp檔 ![](https://i.imgur.com/OEFgkBH.png) 2.試著在jsp中寫一個簡單的動態數據 ```htmlembedded= <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${msg} </body> </html> ``` 3.先確認是否有SpringMVC的dependencies ![](https://i.imgur.com/n14ku82.png) 以及Artifacts ![](https://i.imgur.com/7ANJkN2.png) 4.在web.xml中,寫入DispatcherServlet,並且配置springmvc ```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"> <!--配置DispatcherServlet:這個是SpringMVC的核心:請求分發器,前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <!-- <servlet-class>:對應文件位置 --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--DispatcherServlet要綁定Spring的配置文件--> <!--init-param是配置Servlet的初始化参数--> <init-param> <!--在web.xml中通過contextConfigLocation配置spring, contextConfigLocation引數定義了要裝入的 Spring 配置檔案。--> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--啟動級別:1--> <load-on-startup>1</load-on-startup> </servlet> <!-- 在SpringMVC中, / /* 有區別 / :只匹配所有的請求,不會去配置jsp頁面 /*:匹配所有的請求,包括jsp頁面 因為視圖解析器包含jsp,如果使用/*,會形成jsp.jsp.jsp...的無限嵌套 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- <url-pattern>:瀏覽器訪問地址--> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` 5.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" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <!--springmvc的核心三要素:處理器映射器、處理器適配器、視圖解析器--> <!--springmvc會自行處理,所以通常不用自己編寫--> <!--處理器映射器--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--處理器適配器--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--視圖解析器:模板引擎 Thymeleaf Freemarker...--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--前綴--> <property name="prefix" value="/WEB-INF/jsp/"/> <!--後綴--> <property name="suffix" value=".jsp"/> </bean> <!--BeanNameUrlHandlerMapping:bean --> <bean id="/hello" class="com.kuang.controller.HelloController"/> </beans> ``` 6.controller ```java= import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView(); //業務代碼 String result = "HelloSpring"; mv.addObject("msg",result); //視圖跳轉 mv.setViewName("test"); return mv; } } ```