בקר מערכת הפעלה האביב – בקר MVC של האביב

ההערה Controller של Spring היא התמחור של ההערה @Component. ההערה Controller של Spring בדרך כלל משמשת בשילוב עם שיטות טיפול מסומנות באמצעות ההערה RequestMapping.

ההערה Controller של Spring

ההערה Controller של Spring יכולה להיות מיושם על מחלקות בלבד. נעשה שימוש בה כדי לסמן מחלקה כטפסיק פעולות בקשות אינטרנט. נעשה שימוש רב בה ביישומים של Spring MVC.

ההערה RestController של Spring

ההערה @RestController של Spring היא ההערה המיועדת שמיועדת יחד עם @Controller ו-@ResponseBody. ההערה הזו משמשת לסימון של מחלקה כטפסיק לטיפול בבקשות לשירותי אינטרנט RESTful.

דוגמת Spring Controller

בואו ניצור יישום Spring פשוט שבו נממש בקר MVC סטנדרטי וגם בקר REST. יש ליצור "פרויקט אינטרנט דינמי" ב־Eclipse ולהמיר אותו לפרויקט Maven. זה יספק לנו מבנה של יישום אינטרנט מבוסס על Maven ונוכל לבנות את היישום שלנו עליו. בתמונה למטה מוצג מבנה הפרויקט הסופי של היישום שלנו בשליטת MVC של Spring. נצטרך את התלויות הבאות עבור היישום שלנו.

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-web</artifactId>
	<version>5.0.7.RELEASE</version>
</dependency>

<!-- Jackson for REST -->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.9.6</version>
</dependency>

בואו נסתכל על קובץ התיאור התפוצתי (web.xml) שבו נגדיר את סרבל DispatcherServlet כמחבר החזיתי.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://xmlns.jcp.org/xml/ns/javaee" 
 xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Spring-Controller</display-name>
  <!-- Add Spring MVC DispatcherServlet as front controller -->
	<servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
       		<param-name>contextConfigLocation</param-name>
       		<param-value>/WEB-INF/spring-servlet.xml</param-value>
    		</init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern> 
    </servlet-mapping>
</web-app>

לבסוף, יש לנו קובץ הקשר של Spring הבא. כאן אנו מגדירים את היישום שלנו להיות מבוסס על אנוטציות ומספקים את החבילה הראשית לסריקת רכיבי Spring. אנו גם מגדירים את הערך InternalResourceViewResolver ומספקים פרטי עמודי התצוגה.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="https://www.springframework.org/schema/mvc"
	xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:beans="https://www.springframework.org/schema/beans"
	xmlns:context="https://www.springframework.org/schema/context"
	xsi:schemaLocation="https://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<context:component-scan base-package="com.journaldev.spring" />

	<!-- Resolves views selected for rendering by @Controllers to JSP resources 
		in the /WEB-INF/views directory -->
	<beans:bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>

</beans:beans>

קבצי התצורה שלנו מוכנים, בואו נמשיך לכתובת הבקר כעת.

package com.journaldev.spring.controller;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

	@GetMapping("/hello")
	public String home(Locale locale, Model model) {
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		String formattedDate = dateFormat.format(date);
		model.addAttribute("serverTime", formattedDate);
		return "home";
	}

}

הגדרנו שיטת טיפול בבקשה יחידה, היא מקבלת בקשות GET עם URI "/hello" ומחזירה את הדף "home.jsp" כתגובה. שימו לב שאנו מגדירים מאפיין למודל, שיעשה שימוש בדף home.jsp. הנה קוד הדף הפשוט שלנו home.jsp.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<html>
<head>
<title>Home</title>
</head>
<body>
	<h1>Hello world!</h1>

	<p>The time on the server is ${serverTime}.</p>

</body>
</html>

בדיקת בקרת ממשק Spring MVC

היישום שלנו בהתבסס על Servlet עם בקרת ממשק פשוטה מוכן, פשוט ייצא אותו כקובץ WAR וינותק על Tomcat או כל סביבת Servlet אחרת. לאחר מכן עברו לכתובת ה-URL https://localhost:8080/Spring-Controller/hello ואמור לראות את המסך הבא כפלט.

דוגמה לבקרת REST של Spring

עכשיו נרחיב את היישום שלנו כך שיחשף גם עבורו ממשקי API של REST. ניצור מודל שישלח כגוף תגובת JSON.

package com.journaldev.spring.model;

public class Person {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

הנה המחלקה של בקרת REST שלנו בצורה פשוטה.

package com.journaldev.spring.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.journaldev.spring.model.Person;

@RestController
public class PersonRESTController {

	@RequestMapping("/rest")
	public String healthCheck() {
		return "OK";
	}

	@RequestMapping("/rest/person/get")
	public Person getPerson(@RequestParam(name = "name", required = false, defaultValue = "Unknown") String name) {
		Person person = new Person();
		person.setName(name);
		return person;
	}

}

הפצת היישום שוב כדי לבדוק את ממשקי ה-REST שלנו.

בדיקת בקרת REST של Spring

גש לכתובת URL https://localhost:8080/Spring-Controller/rest ותקבל את הפלט הבא. עבור לכתובת URL https://localhost:8080/Spring-Controller/rest/person/get ותקבל תגובת JSON הבאה: כעת נספק את ערך הפרמטר של השם ב-URL, עבור ל-https://localhost:8080/Spring-Controller/rest/person/get?name=Pankaj ותקבל תגובת JSON הבאה.

סיכום

Spring Controller הוא עמוד התמיכה של יישומי Spring MVC. זהו המקום בו מתחילה הלוגיקה העסקית שלנו. בנוסף, RestController עוזר לנו ליצור בקלות שירותי רשת מבוססי REST.

ניתן להוריד את קוד הפרויקט לדוגמה ממאגר ה-GitHub שלנו.

Source:
https://www.digitalocean.com/community/tutorials/spring-controller-spring-mvc-controller