我的日常

登录/注册
您现在的位置:论坛 新手区 新手教程 > 教你十分钟快速搭建springBoot项目实战
总共48087条微博

动态微博

查看: 5612|回复: 4

教你十分钟快速搭建springBoot项目实战

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2017-02-27 20:33:56 |只看该作者 |倒序浏览
    首先申明,本文并没有原理性的东西(请自行百度),适合于刚接触springBoot并有一定javaweb开发基础的人群,大神和小白请出门左拐。& ^+ c3 q) ]- s

    " N9 l8 }  K: z+ q, h# q7 y
    一、使用工具
    & w1 R5 J7 |' w/ n' j, S, REclipse、Maven、springBoot5 @4 G3 g% a" x
    本文不会讲解Maven的安装使用以及Eclipse下如何创建一个Maven项目
    * U( [( E9 f* t( Z# Z8 z" q$ }
    / z3 n9 S" F, Q2 Q. U) C二、实现功能
    0 E" g; J! X# T$ Y2 V% k8 d1、springBoot项目项目结构
    pom.xml 文件:
    • <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.acts.java</groupId>
    •   <artifactId>springBoot_demo</artifactId>
    •   <version>0.0.1-SNAPSHOT</version>
    •   <packaging>jar</packaging>
    •   <name>springBoot_demo</name>
    •   <url>http://maven.apache.org</url>
    •   <properties>
    •     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    •   </properties>
    •    <!-- spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写<version>版本号 -->
    •   <parent>
    •         <groupId>org.springframework.boot</groupId>
    •         <artifactId>spring-boot-starter-parent</artifactId>
    •         <version>1.5.1.RELEASE</version>
    •         <relativePath/>
    •   </parent>
    •   <dependencies>
    •         <!-- 实现web功能 -->
    •         <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>
    •         <dependency>
    •             <groupId>org.springframework.boot</groupId>
    •             <artifactId>spring-boot-starter-test</artifactId>
    •             <scope>test</scope>
    •         </dependency>
    •   </dependencies>
    •   <build>
    •         <plugins>
    •             <!-- 打包项目 mvn clean package -->
    •             <plugin>
    •                 <groupId>org.springframework.boot</groupId>
    •                 <artifactId>spring-boot-maven-plugin</artifactId>
    •                 <dependencies>
    •                     <!-- mvn spring-boot:run 热部署启动 -->
    •                     <dependency>
    •                         <groupId>org.springframework</groupId>
    •                         <artifactId>springloaded</artifactId>
    •                         <version>1.4.0.RELEASE</version>
    •                     </dependency>
    •                 </dependencies>
    •             </plugin>
    •         </plugins>
    •     </build>
    • </project>
      ! a) _# t, R& O0 I. h# p
    2、如何启动项目以及配置项目启动端口以及日志级别
    • #服务端口
    • server.port=8080
    • #spring boot从控制台打印出来的日志级别只有ERROR, WARN 还有INFO,如果你想要打印debug级别的日志
    • #debug=true
    • logging.level.root=INFO
    • #logging.level.org.springframework.web=DEBUG
    • #logging.level.org.hibernate=ERROR
    • #thymeleaf start
    • #spring.thymeleaf.prefix: /templates/   
    • #spring.thymeleaf.suffix: .html
    • #spring.thymeleaf.mode=HTML5
    • #spring.thymeleaf.encoding=UTF-8
    • #spring.thymeleaf.content-type=text/html
    • #开发时关闭缓存,不然没法看到实时页面
    • #spring.thymeleaf.cache=false% ?0 u" @; V) F, ^, p0 Z
    3、启动springBoot项目并展示一个页面,对应的是templates下index.html页面。
    • /**
    • * 其实我是个演员
    • * 小柒
    • */
    • @SpringBootApplication
    • @Controller
    • public class App {
    •     private static final Logger logger = Logger.getLogger(App.class);
    •     @RequestMapping("/")
    •     public String   greeting() {
    •         return "index";
    •     }
    •     public static void main(String[] args) {
    •         SpringApplication.run(App.class, args);
    •         logger.info("项目启动 ");
    •     }
    • }
      : g# F: g7 d' I
    4、整合thymeleaf模版实现一个简单的页面,对应的是templates下hello.html页面。
    • @Controller
    • public class HelloController {
    •     @RequestMapping("/hello")
    •     public String   greeting(ModelMap map) {
    •         map.addAttribute("name", "其实我是个演员");
    •         map.addAttribute("host", "http://blog.52itstyle.com");
    •         return "hello";
    •     }
    • }: F# n1 z1 e1 A" g5 b" g
    5、如何统一配置404和500页面
    • @Controller  
    • public class ErrorInterceptor implements HandlerInterceptor {  
    •     /**  
    •      * preHandle方法是进行处理器拦截用的,顾名思义,该方法将在Controller处理之前进行调用,SpringMVC中的Interceptor拦截器是链式的,可以同时存在  
    •      * 多个Interceptor,然后SpringMVC会根据声明的前后顺序一个接一个的执行,而且所有的Interceptor中的preHandle方法都会在  
    •      * Controller方法调用之前调用。SpringMVC的这种Interceptor链式结构也是可以进行中断的,这种中断方式是令preHandle的返  
    •      * 回值为false,当preHandle的返回值为false的时候整个请求就结束了。  
    •      */   
    •     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)  
    •             throws Exception {  
    •         return true;// 只有返回true才会继续向下执行,返回false取消当前请求  
    •     }  
    •     /**  
    •      * 这个方法只会在当前这个Interceptor的preHandle方法返回值为true的时候才会执行。postHandle是进行处理器拦截用的,它的执行时间是在处理器进行处理之  
    •      * 后,也就是在Controller的方法调用之后执行,但是它会在DispatcherServlet进行视图的渲染之前执行,也就是说在这个方法中你可以对ModelAndView进行操  
    •      * 作。这个方法的链式结构跟正常访问的方向是相反的,也就是说先声明的Interceptor拦截器该方法反而会后调用,这跟struts2里面的拦截器的执行过程有点像,  
    •      * 只是Struts2里面的intercept方法中要手动的调用ActionInvocation的invoke方法,Struts2中调用ActionInvocation的invoke方法就是调用下一个Interceptor  
    •      * 或者是调用action,然后要在Interceptor之前调用的内容都写在调用invoke之前,要在Interceptor之后调用的内容都写在调用invoke方法之后。  
    •      */   
    •     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,  
    •                            ModelAndView modelAndView) throws Exception {  
    •         if(response.getStatus()==500){  
    •             modelAndView.setViewName("/errorpage/500");  
    •         }else if(response.getStatus()==404){  
    •             modelAndView.setViewName("/errorpage/404");  
    •         }  
    •     }  
    •     /**  
    •      * 该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行。该方法将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行,  
    •      * 这个方法的主要作用是用于清理资源的,当然这个方法也只能在当前这个Interceptor的preHandle方法的返回值为true时才会执行。  
    •      */   
    •     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)  
    •             throws Exception {  
    •     }  
    • }
      ! c6 B# N0 Q) O' T# P1 e: c
    6、最终项目演示+ I( N4 P/ D6 C5 d* C
    - A5 a$ ~; v% |, O

    , P# C  _3 a1 c. U0 |

    ( C. [4 {. R& v
    项目源码下载8 M! j: O) {' k2 V
    $ n3 a( C% {0 {5 _! i) R9 R. A. p

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    红红火火恍恍惚惚

    326

    主题

    72

    听众

    999

    金钱

    实习版主

    该用户从未签到

    优秀版主

    沙发
    发表于 2017-03-03 09:05:38 |只看该作者
    不错 顶~~~~~~~~~~~
    回复

    使用道具 举报

    45

    主题

    5

    听众

    119

    金钱

    三袋弟子

    该用户从未签到

    板凳
    发表于 2017-03-04 13:49:14 |只看该作者
    其实 我是个 演员~~~~~~~
    回复

    使用道具 举报

    2

    主题

    0

    听众

    396

    金钱

    三袋弟子

    该用户从未签到

    地板
    发表于 2017-03-22 09:57:23 |只看该作者
    多谢坛主,这是个很棒的框架
    回复

    使用道具 举报

    5

    主题

    2

    听众

    214

    金钱

    三袋弟子

    该用户从未签到

    5#
    发表于 2017-04-20 13:21:40 |只看该作者
    学习了,谢谢
    $ ^) z0 c" n' V4 b6 C( X2 ]2 Q0 `8 X
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表