<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java MVC 教程 原文:http://zetcode.com/java/mvc/ Java MVC 教程是 Java MVC 框架的入門教程。 我們使用 Java MVC 創建一個簡單的 Web 應用,并將其部署在 Tomcat 和 Glassfish 上。 ## MVC 模型視圖控制器(MVC)架構模式將應用分為三個部分:模型,視圖和控制器。 該模型表示應用中的數據,視圖是數據的可視表示,控制器處理并響應事件(通常是用戶操作),并且可以調用模型上的更改。 這個想法是通過引入一個中間組件:控制器,將數據訪問和業務邏輯與數據表示和用戶交互分開。 ## Java MVC Java MVC 是針對新的基于 Java 動作的 Web 框架的規范(JSR-371)。 它是傳統的基于組件的 JSF 的替代方案。 MVC API 位于 JAX-RS 之上,并與現有的 Java EE 技術(如 CDI 和 Bean 驗證)集成。 Eclipse Ozark 是 Java MVC 的實現。 它當前包含對 RESTEasy,Jersey 和 Apache CXF 的支持。 MVC 控制器是由`@Controller`裝飾的 JAX-RS 資源方法。 MVC 控制器負責組合數據模型和視圖(模板)以生成 Web 應用頁面。 模型承載在視圖中顯示的數據。 使用`@Named`注解或通過注入`Models`接口創建模型。 視圖定義了輸出頁面的結構,可以引用一個或多個模型。 視圖引擎的責任是通過提取模型中的信息并生成輸出頁面來呈現視圖。 ## Tomcat 中的 Java MVC 示例 我們使用 Java MVC 創建一個簡單的 Web 應用,并將其部署在 Tomcat 上。 在 JAX-RS 庫中,我們選擇了 Jersey。 ```java $ tree . ├── nb-configuration.xml ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── zetcode │ │ ├── conf │ │ │ └── ApplicationConfig.java │ │ ├── controller │ │ │ └── HelloController.java │ │ └── model │ │ └── Message.java │ ├── resources │ └── webapp │ ├── index.html │ ├── META-INF │ │ └── context.xml │ └── WEB-INF │ ├── beans.xml │ └── views │ └── hello.jsp └── 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>JavaMvcTomcatEx</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>JavaMvcTomcatEx</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.glassfish.jersey</groupId> <artifactId>jersey-bom</artifactId> <version>2.26</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId> </dependency> <dependency> <groupId>org.glassfish.jersey.ext.cdi</groupId> <artifactId>jersey-cdi1x</artifactId> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-bean-validation</artifactId> </dependency> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <version>2.0-EDR1</version> </dependency> <dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet-shaded</artifactId> <version>3.0.2.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.2.Final</version> </dependency> <dependency> <groupId>javax.mvc</groupId> <artifactId>javax.mvc-api</artifactId> <version>1.0-pr</version> </dependency> <dependency> <groupId>org.mvc-spec.ozark</groupId> <artifactId>ozark-core</artifactId> <version>1.0.0-m03</version> </dependency> <dependency> <groupId>org.mvc-spec.ozark</groupId> <artifactId>ozark-jersey</artifactId> <version>1.0.0-m03</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project> ``` 為了在 Tomcat 上運行 Java MVC,我們需要包括 Java MVC,Jersey,Bean Validation 和 CDI 的多個依賴項。 `context.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <Context path="/JavaMvcTomcatEx"> <Resource name="BeanManager" auth="Container" type="javax.enterprise.inject.spi.BeanManager" factory="org.jboss.weld.resources.ManagerObjectFactory" /> </Context> ``` 在 Tomcat 的`context.xml`文件中,我們定義上下文路徑并注冊`Weld`的`BeanManager`工廠。 `beans.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <beans 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/beans_1_1.xsd" bean-discovery-mode="all"> </beans> ``` 在`WEB-INF`目錄中,我們有一個空的`beans.xml`文件。 它是 CDI 的部署描述符。 它可用于配置攔截器,裝飾器和其他內容。 即使沒有配置,我們也需要添加一個空的`beans.xml`來注冊 CDI。 `ApplicationConfig.java` ```java package com.zetcode.conf; import com.zetcode.controller.HelloController; import java.util.HashSet; import java.util.Set; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("mvc") public class ApplicationConfig extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> set = new HashSet<>(); set.add(HelloController.class); return set; } } ``` `ApplicationConfig`是應用配置類。 從 Servlet 3.0 開始,可以省略`web.xml`文件。 在 Jersey 中,我們創建一個配置類來擴展抽象`Application`并使用`@ApplicationPath`注解。 `Application`定義 JAX-RS 應用的組件并提供其他元數據。 在這里,我們注冊應用所需的資源類,供應器或屬性。 ```java set.add(HelloController.class); ``` 我們注冊`HelloController`。 `Message.java` ```java package com.zetcode.model; import javax.enterprise.context.RequestScoped; import javax.inject.Named; @Named("message") @RequestScoped public class Message { private String text; public String getText() { return text; } public void setText(String text) { this.text = text; } } ``` 這是一個模型類。 它保存該視圖的數據。 `@Named`注解為模型命名。 我們將在視圖中引用該模型。 `@RequestScoped`使模型在請求期內有效。 `HelloController.java` ```java package com.zetcode.controller; import com.zetcode.model.Message; import javax.inject.Inject; import javax.mvc.annotation.Controller; import javax.ws.rs.GET; import javax.ws.rs.Path; @Path("hello") @Controller public class HelloController { @Inject private Message message; @GET public String hello() { message.setText("Today is a sunny day"); return "hello.jsp"; } } ``` 用`@Controller`裝飾的類是 Java MVC 控制器。 使用`@Path`,它綁定到`hello`路徑段。 ```java @Inject private Message message; ``` 使用`@Inject`,我們注入了模型對象。 它將數據從控制器傳送到視圖。 ```java @GET public String hello() { message.setText("Today is a sunny day"); return "hello.jsp"; } ``` `hello()`方法對 GET 請求作出反應。 它將數據設置到模型并返回視圖。 從控制器方法返回的字符串被解釋為視圖路徑。 視圖引擎的默認視圖目錄為`WEB-INF/views`。 `hello.jsp` ```java <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP Page</title> </head> <body> <p> The message: ${message.text} </p> </body> </html> ``` 這是視圖。 它使用`${}`語法顯示數據。 `index.html` ```java <!DOCTYPE html> <html> <head> <title>Home Page</title> <meta charset="UTF-8"> </head> <body> <p> <a href="mvc/hello">Get message</a> </p> </body> </html> ``` 這是一個主頁。 它包含一個調用控制器的鏈接。 ## Glassfish 中的 Java MVC 示例 要在 Glassfish 上運行該示例,我們不需要`context.xml`文件,并且需要以下三個依賴項: ```java <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.mvc</groupId> <artifactId>javax.mvc-api</artifactId> <version>1.0-pr</version> </dependency> <dependency> <groupId>org.mvc-spec.ozark</groupId> <artifactId>ozark-jersey</artifactId> <version>1.0.0-m03</version> </dependency> </dependencies> ``` Glasfish 已經包含許多 Tomcat 中不存在的庫。 無需其他修改。 在本教程中,我們介紹了 Java MVC 框架。 您可能也對相關教程感興趣: [Java 教程](/lang/java/), [Java MVC Thymeleaf 教程](/articles/javamvcthymeleaf/),[游戲簡介](/java/play/),[Stripes 簡介](/java/stripes/), 或 [Java Spark 教程](/java/spark/)。
                  <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>

                              哎呀哎呀视频在线观看