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

首先申明,本文并没有原理性的东西(请自行百度),适合于刚接触 springBoot并有一定 javaweb开发基础的人群,大神和小白请出门左拐。 ' E# G' |& ?8 j0 |( X; S

一、使用工具, Q/ W# _3 t# g* T2 I+ \
Eclipse、Maven、springBoot8 ]2 K, [. J, w' C$ ?1 {
本文不会讲解Maven的安装使用以及Eclipse下如何创建一个Maven项目
6 G) _& I5 ^. R* {1 t
二、实现功能
1、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>7 j! f$ ]. l9 j0 U3 y5 a
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=false1 b% m& F9 R  O! U) g
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("项目启动 ");
  •     }
  • }6 x6 M9 i3 S; a3 F
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";
  •     }
  • }) Y/ }0 I8 ~$ 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 {  
  •     }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 3000 多个 star:本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能的讲解,通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。作者寄语本课程录制于 2020 年,代码基于 Spring Boot 2.x 版本。到目前为止,Spring Boot 技术栈也有一些版本升级,比如 Spring Boot 2.7 发版、Spring Boot 3.x 版本发布正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。课程特色 课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。开发程详细完整、文档资源齐全、实验过程循序渐进简单明了。实践项目页面美观且实用,交互效果完美。包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。实战项目预览    
好的,以下是搭建一个 Maven 的 Shiro 十分钟快速上手完整测试项目的步骤: 1. 创建 Maven 项目 首先,我们需要创建一个 Maven 项目。可以使用 Eclipse、IntelliJ IDEA 等 IDE,也可以使用 Maven 命令行创建。这里我使用 IntelliJ IDEA 创建 Maven 项目。 在 IntelliJ IDEA 中,选择 File -> New -> Project,在弹出的窗口中选择 Maven,然后点击 Next。 在 Create Maven Project 窗口中,填写 GroupId、ArtifactId 和 Version,然后点击 Next。 接着,在 New Project 窗口中,填写项目名称和项目路径,然后点击 Finish。 2. 添加 Shiro 依赖 在 pom.xml 文件中添加 Shiro 依赖: ```xml <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.7.1</version> </dependency> ``` 3. 配置 Shiro 在 src/main/resources 目录下创建 shiro.ini 文件,配置 Shiro: ```ini [users] # 用户名 = 密码, 角色1, 角色2, ... admin = admin123, admin guest = guest123, guest [roles] # 角色名 = 权限1, 权限2, ... admin = * guest = user:read [urls] # URL = 过滤器1, 过滤器2, ... / = anon /login = anon /logout = logout /admin/** = authc, roles[admin] /user/** = authc, roles[guest] ``` 以上配置文件定义了两个用户 admin 和 guest,admin 拥有 admin 角色,guest 拥有 guest 角色。admin 角色拥有所有权限,guest 角色只有 user:read 权限。配置了一些 URL 的访问规则,例如 /admin/** 表示必须登录并且拥有 admin 角色才能访问。 4. 编写测试代码 在 src/test 目录下创建一个测试类,编写测试代码: ```java import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; import org.junit.Test; public class ShiroTest { @Test public void testLogin() { // 读取 shiro.ini 配置文件,并创建 SecurityManager Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); // 获取当前用户 Subject currentUser = SecurityUtils.getSubject(); // 登录 UsernamePasswordToken token = new UsernamePasswordToken("admin", "admin123"); currentUser.login(token); // 判断是否登录成功 assert currentUser.isAuthenticated(); // 判断是否拥有 admin 角色 assert currentUser.hasRole("admin"); // 判断是否拥有 user:read 权限 assert currentUser.isPermitted("user:read"); // 退出登录 currentUser.logout(); // 判断是否退出成功 assert !currentUser.isAuthenticated(); } } ``` 以上测试代码首先读取 shiro.ini 配置文件,并创建 SecurityManager。然后获取当前用户,使用 admin 用户登录,判断登录是否成功,判断是否拥有 admin 角色和 user:read 权限,退出登录,判断是否退出成功。 5. 运行测试 在 IntelliJ IDEA 中,可以直接运行测试类,或者使用 Maven 命令运行测试: ``` mvn test ``` 测试结果应该全部通过。 至此,一个 Maven 的 Shiro 十分钟快速上手完整测试项目就搭建好了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值