<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Spring Web 應用簡介 > 原文: [http://zetcode.com/articles/springwebfirst/](http://zetcode.com/articles/springwebfirst/) 在本教程中,我們將在 Spring 中創建簡單的 Web 應用。 創建了三個 Web 應用。 每個應用都以不同的方式配置。 在我們的 Spring Web 應用中,我們使用 Spring 5 和 Thymeleaf 3。 Spring 是流行的 Java 應用框架。 Spring Boot 致力于以最小的努力來創建獨立的,生產級的基于 Spring 的應用。 有三種配置 Spring Web 應用的基本方法: * XML 格式 * Java 配置 * Spring Boot 自動配置 傳統上,Spring 使用 XML 文件來配置應用。 后來,創建了一種新方法,其中在 Java 配置類中完成配置。 Spring Boot 自動配置魔術是配置 Spring Web 應用的最新方法。 ## 使用 XML 的 Spring Web 應用配置 在第一個示例中,我們創建一個以 XML 文件配置的 Spring Web 應用。 ```java pom.mxl src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ └───controller │ │ HomeController.java │ ├───resources │ └───webapp │ │ index.html │ └───WEB-INF │ │ spring-servlet.xml │ │ web.xml │ └───templates │ showMessage.html └───test └───java ``` 這是項目結構。 `pom.xml` ```java <?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.zetcode</groupId> <artifactId>springwebfirst</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> <version>3.0.11.RELEASE</version> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.11.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.3.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> </plugins> </build> </project> ``` 這是 Maven 構建文件。 我們具有以下依賴關系:`slf4j-api`和`slf4j-simple`用于日志記錄,`javax.servlet-api`用于 Java Servlet 技術,`thymeleaf-spring5`和`thymeleaf`用于 Thymeleaf 模板引擎,以及`spring-webmvc`用于創建 Spring Web MVC 應用。 `maven-war-plugin`創建 Web 存檔(WAR)。 `WEB-INF/spring-servlet.xml` ```java <?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" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.zetcode"/> <mvc:annotation-driven/> <mvc:default-servlet-handler/> <bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> <property name="prefix" value="/WEB-INF/templates/"/> <property name="suffix" value=".html"/> <property name="templateMode" value="HTML"/> </bean> <bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine"/> </bean> <bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver"/> </bean> </beans> ``` `spring-servlet.xml`配置 Spring Web 應用。 它啟用組件掃描,Spring Web 注解(`@Controller`)并配置 Thymeleaf 模板。 ```java <context:component-scan base-package="com.zetcode" /> ``` 這告訴 Spring 在哪里尋找帶有`@Controller`,`@Repository`,`@Service`,`@Component`注解的類并進行注冊。 在我們的例子中,我們有一個帶有`@Controller`注解的控制器。 ```java <mvc:annotation-driven/> ``` `<mvc:annotation-driven/>`啟用基于 Web 的 Spring 注解。 ```java <mvc:default-servlet-handler/> ``` 我們需要此標記來啟用靜態 HTML 文件。 主頁上有一個靜態的`index.html`。 ```java <bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> <property name="prefix" value="/WEB-INF/templates/"/> <property name="suffix" value=".html"/> <property name="templateMode" value="HTML"/> </bean> <bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine"/> </bean> <bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver"/> </bean> ``` 這些行用模板引擎,模板視圖解析器和模板解析器配置 Thymeleaf。 在模板解析器中,我們指定模板的位置及其擴展名。 `WEB-INF/web.xml` ```java <?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"> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> ``` 在`web.xml`文件中,我們設置了 Spring `DispatcherServlet`并選擇了歡迎文件。 `DispatcherServlet`是 Spring 的前端控制器。 該 Servlet 映射到擴展名為`*.html`的 URL。 `com/zetcode/controller/HomeController.java` ```java package com.zetcode.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/message") public String message() { return "showMessage"; } } ``` HTTP 請求由控制器處理。 它準備一個模型并返回一個視圖。 返回的`showMessage`字符串映射到位于`WEB-INF/templates/`目錄中的`showMessage.html`文件。 `WEB-INF/templates/showMessage.html` ```java <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Message</title> </head> <body> <p> Hello there </p> </body> </html> ``` `showMessage.html`文件顯示一條消息。 `index.html` ```java <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Home page</title> </head> <body> <p> <a href="message">Show message</a> </p> </body> </html> ``` `index.html`是主頁。 它包含一個鏈接。 ## 使用 Java 配置進行 Spring Web 應用配置 在第二個示例中,我們創建一個在 Java 配置類中配置的 Spring Web 應用。 在該示例中,`web.xml`和`spring-servlet.xml`被替換為`MyWebInitializer.java`和`WebConfig.java`。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ ├───config │ │ │ MyWebInitializer.java │ │ │ WebConfig.java │ │ └───controller │ │ MyController.java │ ├───resources │ └───webapp │ └───WEB-INF │ └───templates │ index.html │ showMessage.html └───test └───java ``` 這是項目結構。 `pom.xml`文件與第一個示例中的相同。 `com/zetcode/config/WebConfig.java` ```java package com.zetcode.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.thymeleaf.spring5.SpringTemplateEngine; import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring5.view.ThymeleafViewResolver; @Configuration @EnableWebMvc @ComponentScan(basePackages = {"com.zetcode"}) public class WebConfig implements WebMvcConfigurer { @Autowired private ApplicationContext applicationContext; @Bean public SpringResourceTemplateResolver templateResolver() { var templateResolver = new SpringResourceTemplateResolver(); templateResolver.setApplicationContext(applicationContext); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); return templateResolver; } @Bean public SpringTemplateEngine templateEngine() { var templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver()); templateEngine.setEnableSpringELCompiler(true); return templateEngine; } @Bean public ViewResolver viewResolver() { var resolver = new ThymeleafViewResolver(); var registry = new ViewResolverRegistry(null, applicationContext); resolver.setTemplateEngine(templateEngine()); registry.viewResolver(resolver); return resolver; } } ``` 使用`WebConfig.java`代替`spring-servlet.xml`文件。 在`WebConfig`中,我們使用`@EnableWebMvc`啟用 Spring Web 注解,使用`@ComponentScan`啟用組件掃描,并配置 Thymeleaf 模板引擎。 `com/zetcode/config/MyWebInitializer.java` ```java package com.zetcode.config; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class MyWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return null; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[]{WebConfig.class}; } @Override protected String[] getServletMappings() { return new String[]{"/"}; } } ``` 使用`MyWebInitializer`類代替`web.xml`文件。 我們指定 servlet 配置類的名稱。 `com/zetcode/controller/MyController.java` ```java package com.zetcode.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class MyController { @GetMapping("/") public String index() { return "index"; } @GetMapping("/message") public String message() { return "showMessage"; } } ``` 這是控制器。 我們有主頁和`showMessage`頁面的映射。 `WEB-INF/templates/showMessage.html` ```java <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Message</title> </head> <body> <p>Today is a sunny day!</p> </body> </html> ``` `showMessage.html`文件顯示一條消息。 `WEB-INF/templates/index.html` ```java <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Home page</title> </head> <body> <p> <a href="message.html">Show message</a> </p> </body> </html> ``` `index.html`是主頁。 它包含一個鏈接。 ## Spring Boot Web 應用 在第三個示例中,我們使用 Spring Boot 創建一個 Web 應用。 Spring Boot 使用另一種默認方法。 它通過嵌入式 Web 服務器使用 JAR 存檔。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ └───controller │ │ MyController.java │ └───resources │ │ application.properties │ ├───static │ │ index.html │ └───templates │ showMessage.html └───test └───java ``` 這是項目結構。 `pom.xml` ```java <?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.zetcode</groupId> <artifactId>springbootwebfirst</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` 這是 Maven 構建文件。 `spring-boot-starter-web`是使用 Spring MVC 構建 Web(包括 RESTful)應用的入門 POM。 `spring-boot-starter-thymeleaf`是 Thymeleaf 模板引擎的啟動器 POM。 請注意,包裝設置為 JAR。 `com/zetcode/controller/MyController.java` ```java package com.zetcode.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class MyController { @GetMapping("/message") public String message() { return "showMessage"; } } ``` 這是 Spring Boot Web 應用的控制器類。 控制器以`@Controller`注解修飾。 控制器具有一個映射。 映射解析為`showMessage.html`模板,該模板位于`WEB-INF/templates`目錄中。 `Application.java` ```java package com.zetcode; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` `Application`設置 Spring Boot 應用。 `WEB-INF/templates/showMessage.html` ```java <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Message</title> </head> <body> <p>Today is a cold day</p> </body> </html> ``` `showMessage.html`顯示一條簡單消息。 `WEB-INF/static/index.html` ```java <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Home page</title> </head> <body> <p> <a href="message">Show message</a> </p> </body> </html> ``` `index.html`是包含鏈接的應用的主頁。 靜態資源(例如,純 HTML 文件)被放入`static`目錄。 在本教程中,我們創建了第一個 Spring Web 應用。 您可能也對相關教程感興趣:[獨立的 Spring 應用](/articles/standalonespring/), [FreeMarker 教程](/java/freemarker/), [Java 教程](/lang/java/), [Spring `DefaultServlet`教程](/spring/defaultservlet/), [Spark 簡介](/java/spark/)或[Strips 簡介](/java/stripes/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看