त्यागलेखक एक प्रोग्रामर नहीं है, कोड नहीं कर सकता
मैं न तो कोटलिन में, न ही स्प्रिंग में, न ही गुरु या शांत विशेषज्ञ हूं और न ही इस लेख में इस्तेमाल की गई किसी अन्य तकनीक में। मैं एक नियमित जावा जूनियर हूं जिसने कोटलिन की कोशिश करने का फैसला किया। टेकट्रेन के साथ सड़क पर घुटने पर सैपसन में सब कुछ किया जाता है
किसके लिए
जावा डेवलपर्स के लिए जो सिर्फ कोटलिन के बारे में सुनते थे, लेकिन इसे अभी तक अपने हाथों से नहीं छू पाया था
किस लिए
यह दिखाने के लिए कि कोटलिन स्प्रिंग बूट के साथ ठीक काम करता है, और html के साथ काम करने के मामले में DSL के साथ संयोजन में यह jsp के साथ शास्त्रीय दृष्टिकोण की तुलना में अधिक सुविधाजनक होगा।
वसंत बूट के लिए विन्यास
यहां, सब कुछ जावा से बहुत अलग नहीं है
- प्रोजेक्ट बनाएं (कोटलिन)
- रिपॉजिटरी jcenter, kotlin-stdlib पर निर्भरता और स्प्रिंग-बूट-स्टार्टर-वेब, kotlin-maven-plugin जोड़ें
- काम करने के लिए एक पैकेज बनाना सुनिश्चित करें, अन्यथा वसंत गिर जाएगा
- एक खुला अनुप्रयोग वर्ग बनाएँ
- अनुप्रयोग में, लाइन runApplication <Application> (* args) के साथ मुख्य विधि जोड़ें
- एक HelloWorld नियंत्रक जोड़ें जो दुनिया को एक अभिवादन लौटाएगा
कोडpom.xml<?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.example</groupId> <artifactId>habr-sample</artifactId> <version>1.0-SNAPSHOT</version> <repositories> <repository> <id>jcenter</id> <name>jcenter</name> <url>https://jcenter.bintray.com</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>RELEASE</version> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> <configuration> <jvmTarget>1.8</jvmTarget> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>RELEASE</version> </dependency> </dependencies> </project>
कक्षाएं package example import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication open class Application fun main(args: Array<String>) { runApplication<Application>(*args) }
package example import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.ResponseBody @Controller class HelloWorld{ @RequestMapping("/") @ResponseBody fun mainPage(): String { return " " } }
Kotlinx.html जोड़ें
Html के साथ सुविधाजनक काम के लिए कोटलिन का DSL के रूप में विस्तार है। यह आपको html के घोषणात्मक दृष्टिकोण को एक सामान्य भाषा के अनिवार्य दृष्टिकोण के साथ मिलाने की अनुमति देता है।
table {// thead{ tr { td { +"" //+ } td { +"" } } } for (person in PersonGenerator().generate()) { // for kotlin tr { td { +person.name } td { text(person.age) // "+" String } } } }
यह कोड एक html पेज बनाएगा जिसमें लोगों के नाम और उनकी उम्र के साथ एक प्लेट होगी
कोडpom.xml <?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.example</groupId> <artifactId>habr-sample</artifactId> <version>1.0-SNAPSHOT</version> <repositories> <repository> <id>jcenter</id> <name>jcenter</name> <url>https://jcenter.bintray.com</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>RELEASE</version> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> <configuration> <jvmTarget>1.8</jvmTarget> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jdk8</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.jetbrains.kotlinx</groupId> <artifactId>kotlinx-html-jvm</artifactId> <version>RELEASE</version> </dependency> </dependencies> </project>
कक्षाएं package example data class Person(val name: String,var age: Int)
package example import java.util.* import kotlin.collections.ArrayList class PersonGenerator{ private val nameList = arrayOf("", "", "", "", "", ""); fun generate(): List<Person> { val random = Random() val personList = ArrayList<Person>() for (i in 1..15) { personList.add(Person(nameList.get(random.nextInt(nameList.size)), random.nextInt(30) + 18)) } return personList; } }
package example import kotlinx.html.* import kotlinx.html.stream.createHTML import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.ResponseBody @Controller class HelloWorld { @RequestMapping("/") @ResponseBody fun mainPage(): String { return createHTML() .html { body { table { thead() { tr { td { +"" } td { +"" } } } val personList= PersonGenerator().generate() for (person in personList ) { tr { td { +person.name } td { text(person.age) } } } } } } } }
सीएसएस जोड़ें
Kotlinx.html व्यावहारिक रूप से सीएसएस के साथ काम करने का तरीका नहीं जानता है, इसके साथ आप पहले से तैयार शैली के लिए एक लिंक जोड़ सकते हैं या असुरक्षित का उपयोग करके अपना खुद का सम्मिलित कर सकते हैं। अगर आप Aza-Kotlin-CSS - DSL को css के साथ जोड़ते हैं तो सब कुछ बहुत बेहतर हो जाता है
head { // bootstrap styleLink("https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css") styleLink("https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css") // style("text/css") { unsafe {// unsafe kotlinx.html raw( Stylesheet { // Aza-Kotlin-CSS table and td and th { color = 0xFC0Fc0 } }.render() ) } } meta { charset = "utf-8" } }
Js के साथ काम भी असुरक्षित हो जाता है
सारांश
मेरी राय में, डीएसपी पर लिखने का दृश्य जेएसपी की तुलना में अधिक सुविधाजनक है। मुझे पहले डेटाबेस में जाने की जरूरत नहीं है, गणना परिणाम को एक मध्यवर्ती वस्तु में डालें, जिसे मैं बाद में जेपी में बाहर निकाल दूंगा। मैं तुरंत परियोजना कोड आधार से अपनी jsp को एब्सट्रैक्शन परत को दरकिनार कर सकता हूं जिसे मुझे ज़रूरत नहीं है। दुर्भाग्य से, मैंने केवल अपने पालतू-प्रोजेक्ट में jsp का उपयोग किया और सामने वाले के साथ बिल्कुल भी व्यवहार नहीं किया। मुझे इस मुद्दे पर पेशेवरों की राय पढ़ने में दिलचस्पी होगी।
उपयोगी लिंक
एक लेख में विकसित गुलाबी लेबल का एक उदाहरण
कोटलिन प्रलेखन
डॉक्यूमेंटेशन जो स्प्रिंग बूट को कोटलिन से जोड़ता है
Kotlinx.html प्रलेखन
आजा-कोटलिन-सीएसएस प्रलेखन