您好,登錄后才能下訂單哦!
小編給大家分享一下怎么運用springboot搭建并部署web項目,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
所用工具
IntelliJ IDEA 2018.1.4
JDK 1.8
apache-tomcat-8.0.50
所解決的問題
1、如何用idea創建springboot項目
2、如何進行 服務器、數據庫、mybatis、視圖解析器的配置
3、如何使用mybatis generator 自動生成代碼
4、如何使用multipart進行文件上傳
5、如何運用springboot的事務
6、如何打包進行tomcat部署
運用idea創建springboot項目
1、打開IDEA,File -> New -> Project,選擇Spring Initializr,然后next。
2、修改Ariifact,下面的Name、package會自動修改;Packaging有兩種模式,一種是Jar,一種是War;因為springboot中自帶了tomcat,因此可以將項目打成jar,直接運行;而我現有項目是部署到tomcat上,因此我需要打成war包;然后next。
3、設置項目依賴,然后next ,進入下一頁 ,設置project name,點擊finish完成。
4、進入項目
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>springbootdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>springbootdemo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
無配置文件的springmvc
通過兩個例子:1、http請求訪問并渲染頁面 2、http請求返回json字符串
-配置數據源、視圖渲染
-添加視圖渲染pom依賴
-創建WelcomeController、welcome.jsp
新增之后的項目結構
application.yml 配置數據源 和 視圖渲染
# 數據源、視圖配置 spring: datasource: url: jdbc:sqlserver://xx:1433;DatabaseName=xx username: xx password: xx driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver mvc: view: prefix: /WEB-INF/views/ suffix: .jsp
pom.xml新增視圖渲染依賴
<!-- 使用 jsp 必要依賴 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
創建WelcomeController
package com.example.springbootdemo.web; import com.example.springbootdemo.entity.Welcome; import com.example.springbootdemo.response.Response; import com.example.springbootdemo.response.ResponseCode; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import java.util.ArrayList; import java.util.List; @Controller @RequestMapping("/welcome") public class WelcomeController { /** * 訪問welcome.jsp頁面 * @return */ @RequestMapping("welcomeIndex") public ModelAndView welcomeIndex(){ ModelAndView mv = new ModelAndView(); mv.setViewName("welcome"); mv.addObject("name","xx"); return mv; } /** * 返回json字符串 * @return */ @RequestMapping("getWelcomeInfo") @ResponseBody public Response getWelcomeInfo(){ /** * 測試數據 */ List<Welcome> welcomes = new ArrayList<>(); Welcome w1 = new Welcome(); w1.setId("1"); w1.setName("xx1"); w1.setAge(11); w1.setGender("女"); Welcome w2 = new Welcome(); w2.setId("2"); w2.setName("xx2"); w2.setAge(22); w2.setGender("男"); welcomes.add(w1); welcomes.add(w2); Response response = new Response(); response.setData(welcomes); response.setRetcode(ResponseCode.SUCCESS); response.setRetdesc("Success"); return response; } }
創建welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>視圖渲染</title> </head> <body> 您好,${name} </body> </html>
啟動項目,并訪問
http://localhost:8080/welcome/getWelcomeInfo
http://localhost:8080/welcome/welcomeIndex
使用mybatis generator自動生成代碼
用于為表創建 *Mapper.xml、model、dao文件
在pom.xml 添加mybatis generator 自動生成代碼插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- mybatis generator 自動生成代碼插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin> </plugins> </build>
在上面pom.xml配置的pugin路徑resources/generator 文件夾下添加generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 數據庫驅動:選擇你的本地硬盤上面的數據庫驅動包--> <classPathEntry location="C:\Users\.m2\repository\com\microsoft\sqlserver\mssql-jdbc\6.2.2.jre8\mssql-jdbc-6.2.2.jre8.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自動生成的注釋 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--數據庫鏈接URL,用戶名、密碼 --> <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL="jdbc:sqlserver://xx:1433;DatabaseName=xx" userId="xx" password="xx"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.example.springbootdemo.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="mybatis" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.springbootdemo.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是數據庫中的表名或視圖名 domainObjectName是實體類名--> <table tableName="xx" domainObjectName="StudentBinding" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
使用maven中的mybatis-generator:generate根據數據庫里面表生產相關的類
Edit Configurations -> 添加 -> Maven
配置mybatis
在application.yml 中添加mybatis的配置
# mybatis配置 mybatis: mapper-locations: classpath*:mybatis/*Mapper.xml type-aliases-package: com.example.springbootdemo.entity
在StudentBindingMapper.java中添加 @Repository("studentBindingMapper")注解才能使用@MapperScan掃描到
@Repository("studentBindingMapper") public interface StudentBindingMapper {}
在SpringbootdemoApplication.java添加@MapperScan
package com.example.springbootdemo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.example.springbootdemo.mapper") public class SpringbootdemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootdemoApplication.class, args); } }
添加service、controller層
項目層級
添加StudentBindingService
package com.example.springbootdemo.service; import com.example.springbootdemo.entity.StudentBinding; import java.util.List; public interface StudentBindingService { int deleteByPrimaryKey(Long id); int insert(StudentBinding record); int insertSelective(StudentBinding record); StudentBinding selectByPrimaryKey(Long id); int updateByPrimaryKeySelective(StudentBinding record); int updateByPrimaryKey(StudentBinding record); void validTransaction(Long id); List<StudentBinding> getStudentBindByQuery(StudentBinding record); }
添加StudentBindingServiceImpl
package com.example.springbootdemo.service.impl; import com.example.springbootdemo.entity.StudentBinding; import com.example.springbootdemo.mapper.StudentBindingMapper; import com.example.springbootdemo.service.StudentBindingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service(value = "studentBindingService") public class StudentBindingServiceImpl implements StudentBindingService { @Autowired private StudentBindingMapper studentBindingMapper; @Override public int deleteByPrimaryKey(Long id) { return studentBindingMapper.deleteByPrimaryKey(id); } @Override public int insert(StudentBinding record) { return studentBindingMapper.insert(record); } @Override public int insertSelective(StudentBinding record) { return studentBindingMapper.insertSelective(record); } @Override public StudentBinding selectByPrimaryKey(Long id) { return studentBindingMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(StudentBinding record) { return studentBindingMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(StudentBinding record) { return studentBindingMapper.updateByPrimaryKey(record); } @Override @Transactional public void validTransaction(Long id){ // 刪除之后,插入該id的數據 studentBindingMapper.deleteByPrimaryKey(id); StudentBinding record = new StudentBinding(); record.setId(id); studentBindingMapper.insertSelective(record); } @Override public List<StudentBinding> getStudentBindByQuery(StudentBinding record) { return studentBindingMapper.getStudentBindByQuery(record); } }
新增StudentBindingController
package com.example.springbootdemo.web; import com.example.springbootdemo.entity.StudentBinding; import com.example.springbootdemo.response.Response; import com.example.springbootdemo.response.ResponseCode; import com.example.springbootdemo.service.StudentBindingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import java.io.File; import java.io.IOException; import java.util.List; @Controller @RequestMapping(value = "/studentBind") public class StudentBindingController { @Autowired private StudentBindingService studentBindingService; /** * 根據請求參數,刪除綁定學生信息 * @param id * @return */ @RequestMapping("deleteByPrimaryKey") @ResponseBody public Response deleteByPrimaryKey(Long id){ Response response = new Response(); if(id==null){ response.setRetcode(ResponseCode.PARAMARTER_ERROR); response.setRetdesc("參數錯誤"); return response; } try{ studentBindingService.deleteByPrimaryKey(id); response.setRetcode(ResponseCode.SUCCESS); response.setRetdesc("刪除成功"); }catch (Exception e){ e.printStackTrace(); response.setRetcode(ResponseCode.FAILED); response.setRetdesc("刪除異常"); } return response; } /** * 根據請求參數,添加綁定學生信息 * @param record * @return */ @RequestMapping("insertSelective") @ResponseBody public Response insertSelective(StudentBinding record){ Response response = new Response(); if(record==null){ response.setRetcode(ResponseCode.PARAMARTER_ERROR); response.setRetdesc("參數錯誤"); return response; } try{ studentBindingService.insertSelective(record); response.setRetcode(ResponseCode.SUCCESS); response.setRetdesc("添加成功"); }catch (Exception e){ e.printStackTrace(); response.setRetcode(ResponseCode.FAILED); response.setRetdesc("添加異常"); } return response; } /** * 根據請求參數,查詢綁定學生信息 * @param id * @return */ @RequestMapping("selectByPrimaryKey") @ResponseBody public Response selectByPrimaryKey(Long id){ Response response = new Response(); if(id==null){ response.setRetcode(ResponseCode.PARAMARTER_ERROR); response.setRetdesc("參數錯誤"); return response; } try{ StudentBinding studentBinding = studentBindingService.selectByPrimaryKey(id); response.setData(studentBinding); response.setRetcode(ResponseCode.SUCCESS); response.setRetdesc("查詢成功"); }catch (Exception e){ e.printStackTrace(); response.setRetcode(ResponseCode.FAILED); response.setRetdesc("查詢異常"); } return response; } /** * 驗證@Transaction注解是否好用 * @param id * @return */ @RequestMapping("validTransaction") @ResponseBody public Response validTransaction(Long id){ Response response = new Response(); if(id==null){ response.setRetcode(ResponseCode.PARAMARTER_ERROR); response.setRetdesc("參數錯誤"); return response; } try{ studentBindingService.validTransaction(id); response.setRetcode(ResponseCode.SUCCESS); }catch (Exception e){ e.printStackTrace(); response.setRetcode(ResponseCode.FAILED); } return response; } /** * 渲染jsp頁面 * @return */ @RequestMapping("welcomeIndex") public ModelAndView welcomeIndex(){ List<StudentBinding> studentBindings = studentBindingService.getStudentBindByQuery(new StudentBinding()); // model.addAttribute("studentBindings",studentBindings); ModelAndView mv = new ModelAndView(); mv.setViewName("welcome"); mv.addObject("studentBindings",studentBindings); return mv; } /** * 跳轉到上傳文件頁面 * @return */ @RequestMapping("multipartIndex") public String multipartIndex(){ return "multipart-index"; } /** * 上傳文件到指定目錄 * @param file * @return */ @RequestMapping("/upload") @ResponseBody public Response upload(@RequestParam("file") MultipartFile file){ Response response = new Response(); if (file.isEmpty()){ response.setRetcode(ResponseCode.PARAMARTER_ERROR); response.setRetdesc("參數錯誤"); return response; } try { String filePath = "D:\\ceshi\\upload\\"; File dir = new File(filePath); if(!dir.isDirectory()){ dir.mkdir(); } String fileOriginalName = file.getOriginalFilename(); File writeFile = new File(filePath + fileOriginalName); //文件寫入磁盤 file.transferTo(writeFile); response.setRetcode(ResponseCode.SUCCESS); response.setRetdesc("上傳成功"); } catch (IOException e) { e.printStackTrace(); response.setRetcode(ResponseCode.FAILED); response.setRetdesc("上傳失敗"); } return response; } }
重啟項目之后,就可以訪問各個接口
springboot配置事務
springboot配置事務有兩種方式
1、在SpringbootdemoApplication.java項目入口,添加@EnableTransactionManagement的注解用來開啟事務
2、在service實現類上添加@Transactional注解,那么該類的所有方法都進行事務管理;也可以直接在service實現類的方法上直接添加@Transactional注解,那么只對該方法進行事務管理,上面代碼中有對方法添加事務的例子
springboot打包進行tomcat部署
Edit Configuration -> Maven -> 添加 ->啟動 -> 復制war包 -> tomcat webapp ->修改war包的名字 -> tomcat bin -> startup.bat
tomcat啟動之后,訪問 http://localhost:8080/springbootdemo/welcome/welcomeIndex 進行驗證
看完了這篇文章,相信你對“怎么運用springboot搭建并部署web項目”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。