日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

如何将不带web.xml的Spring应用程序部署到Tomcat

發布時間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何将不带web.xml的Spring应用程序部署到Tomcat 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

由于Servlet 3規范不再需要web.xml來配置Web應用程序,因此已通過使用注釋代替。 在本文中,我們將研究如何在不使用web.xml情況下將簡單的基于Spring的應用程序部署到Tomcat 8.5。*。

創建一個空的應用程序

使用以下命令使用maven webapp原型創建一個空的Web應用程序:

mvn archetype:generate -DgroupId=info.sanaulla -DartifactId=spring-tomcat-sample -Dversion=1.0 -DarchetypeArtifactId=maven-archetype-webapp

刪除在src\main\webapp\WEB-INF創建的web.xml ,然后我們需要更新maven-war-plugin以便在缺少web.xml不會失敗,這可以通過更新build的插件信息來完成標簽,如下所示:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.1.0</version><executions><execution><id>default-war</id><phase>prepare-package</phase><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></execution></executions> </plugin>

設置依賴

我們需要將以下依賴項添加到pom.xml :

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version><scope>provided</scope> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version> </dependency> <dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>${thymeleaf.version}</version> </dependency> <dependency><groupId>nz.net.ultraq.thymeleaf</groupId><artifactId>thymeleaf-layout-dialect</artifactId><version>${thymeleaf-layout-dialect.version}</version> </dependency> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version> </dependency> <dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>${h2.version}</version> </dependency> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional><version>${lombok.version}</version> </dependency>

以及它們相應的版本屬性如下:

<properties><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.source>1.8</maven.compiler.source><java.version>1.8</java.version><apache.commons.version>3.6</apache.commons.version><h2.version>1.4.196</h2.version><jackson.version>2.9.2</jackson.version><lombok.version>1.16.18</lombok.version><spring.version>5.0.0.RELEASE</spring.version><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><thymeleaf-layout-dialect.version>2.2.1</thymeleaf-layout-dialect.version> </properties>

配置H2嵌入式數據庫

讓我們創建一個配置Bean來配置嵌入式H2的DataSource ,并創建一個NamedParameterJdbcTemplate類型的Bean :

@Configuration public class DBConfiguration {@Beanpublic DataSource dataSource() {return new EmbeddedDatabaseBuilder().generateUniqueName(false).setName("testdb").setType(EmbeddedDatabaseType.H2).addDefaultScripts().setScriptEncoding("UTF-8").ignoreFailedDrops(true).build();}@Beanpublic NamedParameterJdbcTemplate namedParamJdbcTemplate() {NamedParameterJdbcTemplate namedParamJdbcTemplate = new NamedParameterJdbcTemplate(dataSource());return namedParamJdbcTemplate;} }

然后,我們需要一個SQL腳本schema.sql ,該腳本將設置表,而data.sql將在每次運行應用程序時為它們添加數據。 讓我們在src/main/resources創建相應的文件:

-- schema.sql DROP TABLE IF EXISTS person;CREATE TABLE person(id NUMERIC IDENTITY PRIMARY KEY,first_name VARCHAR(512) NOT NULL,last_name VARCHAR(512) NOT NULL,date_of_birth TIMESTAMP NOT NULL,place_of_birth VARCHAR(512) );-- data.sql INSERT INTO person(first_name, last_name, date_of_birth, place_of_birth) VALUES ('First', 'Last', DATE '1990-02-21', 'Bangalore'); INSERT INTO person(first_name, last_name, date_of_birth, place_of_birth) VALUES ('First2', 'Last2', DATE '1987-02-21', 'Mumbai'); INSERT INTO person(first_name, last_name, date_of_birth, place_of_birth) VALUES ('First3', 'Last3', DATE '1996-02-21', 'Chennai'); INSERT INTO person(first_name, last_name, date_of_birth, place_of_birth) VALUES ('First4', 'Last4', DATE '1978-02-21', 'Delhi');

創建一個API控制器

讓我們創建一個模型類Person :

@Data public class Person {private Integer id;private String firstName;private String lastName;private Date dateOfBirth;private String placeOfBirth; }

以及相應的DAO類PersonDAO :

@Service public class PersonDAO {@Autowired NamedParameterJdbcTemplate jdbcTemplate;public List<Person> getPersons(){return jdbcTemplate.query("SELECT * FROM person", (ResultSet rs, int rowNum) -> {Person p = new Person();p.setId(rs.getInt("id"));p.setFirstName(rs.getString("first_name"));p.setLastName(rs.getString("last_name"));p.setDateOfBirth(rs.getDate("date_of_birth"));p.setPlaceOfBirth(rs.getString("place_of_birth"));return p;});} }

API控制器如下所示:

@RestController @RequestMapping("/api/persons") public class ApiController {@Autowired PersonDAO personDao;@GetMappingpublic ResponseEntity<?> getPersons(){return ResponseEntity.ok(personDao.getPersons());} }

將應用程序部署到Tomcat

我假設您已經下載了Tomcat并解壓縮到文件系統中。 出于開發目的,我更喜歡更新server.xml來配置上下文并指向爆炸的war目錄,如下所示:

<Context path="/sample" reloadable="true" docBase="G:\samples\spring-tomcat-sample\target\spring-tomcat-sample" />

對于與生產相關的部署,您可以將戰爭上傳到服務器上。

因此,一旦啟動服務器,就可以通過在瀏覽器中訪問API URL http:// localhost:8080 / sample / api / persons來驗證應用程序是否已正確部署,如下所示:

配置Thymeleaf

現在,讓我們將Thymeleaf配置為模板引擎,以為應用程序提供UI。 配置它需要以下bean定義:
–解決模板的技術。 有很多可能性,我們將使用基于類路徑的模板解析器
–創建SpringTemplateEngine的實例并設置模板解析器技術 –設置Spring的ViewResolver以使用SpringTemplateEngine

@Configuration public class ViewConfiguration {@Beanpublic ClassLoaderTemplateResolver templateResolver() {ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();templateResolver.setPrefix("templates/");templateResolver.setSuffix(".html");templateResolver.setTemplateMode(TemplateMode.HTML);templateResolver.setCacheable(false);return templateResolver;}@Beanpublic SpringTemplateEngine templateEngine() {SpringTemplateEngine templateEngine = new SpringTemplateEngine();templateEngine.setTemplateResolver(templateResolver());templateEngine.addDialect(new LayoutDialect());return templateEngine;}@Beanpublic ViewResolver viewResolver() {ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();viewResolver.setTemplateEngine(templateEngine());viewResolver.setCharacterEncoding("UTF-8");return viewResolver;}}

創建視圖控制器

讓我們創建一個簡單的控制器,它將為我們的UI模板提供服務:

@Controller @RequestMapping("/") public class ViewController {@Autowired PersonDAO personDao;@GetMappingpublic String index(Model model) {model.addAttribute("persons", personDao.getPersons());return "index";} }

創建基于Thymeleaf的模板

我們需要創建一個模板index.html ,它是從上述控制器返回的:

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"><head><link rel="stylesheet" href="https://bootswatch.com/4/cerulean/bootstrap.min.css" /></head><body><nav class="navbar navbar-expand-lg navbar-dark bg-primary"><a class="navbar-brand" href="#">Spring on Tomcat</a></nav><div class="container"><div class="page-header"><h1>Spring on Tomcat</h1></div><div class="row"><div class="col"><ul class="list-group"><li class="list-group-item" th:each="p : ${persons}">[[${p.firstName}]] [[${p.lastName}]], Date Of Birth: [[${#dates.format(p.dateOfBirth, 'dd/MMM/yyyy')}]]Place: [[${p.placeOfBirth}]]</li></ul></div></div></div><script src="https://bootswatch.com/_vendor/jquery/dist/jquery.min.js"></script><script src="https://bootswatch.com/_vendor/popper.js/dist/umd/popper.min.js"></script><script src="https://bootswatch.com/_vendor/bootstrap/dist/js/bootstrap.min.js"></script></body> </html>

結論

在本文中,我們研究了如何在不使用web.xml情況下(不使用Spring Boot)配置一個基于Spring MVC的簡單應用程序,并將其部署到Tomcat。 我們還配置了Thymeleaf來呈現我們的UI模板。 完整的代碼可以在這里找到

翻譯自: https://www.javacodegeeks.com/2017/11/deploy-spring-application-without-web-xml-tomcat.html

總結

以上是生活随笔為你收集整理的如何将不带web.xml的Spring应用程序部署到Tomcat的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。