Note:SpringMVC入門程式 實現Control介面

今晚看星星發表於2020-10-26

Spring MVC概述

  • Spring框架的一部分,可以方便的利用Spring所提供的其他功能,靈活性強,易於與其他框架整合
  • 提供了一個前端控制器DispatcherServlet,使開發人員無需額外開發控制器物件
  • 可自動繫結使用者輸入,並能正確的轉換資料型別
  • 內建了常見的校驗器,可以校驗使用者輸入。如果校驗不能通過,那麼就會重定向到輸入表單
  • 使用基於XML的配置檔案,在編輯後,不需要重新編譯應用程式
  • 支援多種檢視技術。它支援JSP、Velocity和FreeMarker等檢視技術

Maven依賴

<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.2.9.RELEASE</version>
		</dependency>
	</dependencies>

配置Servlet的xml檔案

<?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">
	
	<servlet>
	    
	    <!-- SpringMVC 配置前端過濾器 -->
		<servlet-name>springmvc</servlet-name>
		<servlet-class>
              org.springframework.web.servlet.DispatcherServlet
         </servlet-class>
		
		<!-- 初始化時載入配置檔案 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!-- 配置載入Spring MVC配置檔案位置 -->
			<param-value>classpath:springmvc-config.xml</param-value>
		</init-param>
		
		<!-- 1 表示容器在啟動時立即載入Servlet -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>

		<!-- /表示攔截所有URL的請求 -->
		<url-pattern>/</url-pattern> 
	</servlet-mapping>
</web-app>

建立實現 Controller的類 firstController

public class FirstController implements Controller{
     @Override
     public ModelAndView handleRequest(HttpServletRequest request,
			                    HttpServletResponse response) {
		// 新建ModelView物件
     	ModelAndView mav = new ModelAndView();
    	mav.addObject("msg", "這是我的第一個Spring MVC程式");
		mav.setViewName("/WEB-INF/jsp/first.jsp");
		return mav;
           }
     }

在這裡插入圖片描述

編寫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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 配置處理器Handle,對映“/firstController”請求 -->
	<bean name="/firstController"  class="com.hlq.ch11.controller.FirstController" />
	
	<!-- 處理器對映器,將處理器Handle的name作為url進行查詢 -->
	<bean class= "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
	
	<!-- 處理器介面卡,配置對處理器中handleRequest()方法的呼叫-->
	<bean class=
	"org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
	
	<!-- 檢視解析器 -->
	<bean class= "org.springframework.web.servlet.view.InternalResourceViewResolver">
	</bean>
</beans> 

檢視的JSP檔案

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@page isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	${msg}
</body>
</html>

EL表示式簡介

  • EL 全名為Expression Language
  • 注意Servlet版本,如果是Servlet 2.x,需要設定isELIgnored <%@page isELIgnored="false" %>
  • EL的作用
    • 獲取資料
      • ${msg}
      • ${user.address.city}
    • 執行運算
      • ${user==null}
      • ${user!=null?user.name:""}
    • 獲取web開發常用物件
      • ${隱式物件名稱}
      • ${pageContext.request.contextPath}

在瀏覽器中輸入實現介面的類

輸入對應的URL
在這裡插入圖片描述
在這裡插入圖片描述

  • 設定ModelAndView的資訊
    在這裡插入圖片描述
    頁面中獲取
    在這裡插入圖片描述

相關文章