当前位置: 首页 > article >正文

使用IDEA社区版搭建Springboot、jsp开发环境

1,感觉传统的JSP可以放弃,直接前端JS+后端就可以了

2,建议不要用低版本的springboot,版本兼容搭配太麻烦

如果仅仅是搭建springboot开发环境,没什么难度,本文主要记录以下几个问题的解决:

1,支持jsp

2,打包war后在外部tomcat环境下运行

使用软件清单

安装IDEA社区版的最新版本(时下是2024.3.2.2)

下载Maven

下载java21

配置maven

以下内容为D:\Develop\apache-maven-3.9.9\settings.xml,从网上搬来的,感谢该网友的分享。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!--本地仓库。该值表示构建系统本地仓库的路径。其默认值为${user.home}/.m2/repository。  -->
    <localRepository>D:\Develop\apache-maven-3.9.9\local</localRepository>
    <!--配置服务端的一些设置。如果局域网内部有nexus,需要管理项目jar包可配置 -->  
    <servers>
    </servers>
    <!--为仓库列表配置的下载镜像列表-->  
    <mirrors>
        <!--给定仓库的下载镜像-->  
        <mirror>
            <id>aliyun</id>
            <mirrorOf>central</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
    <!-- 仓库配置 -->
    <profiles>
        <!--根据环境参数来调整的构件的配置 -->  
        <profile>
            <!--该配置的唯一标识符 -->  
            <id>lovecto_profile</id>
            <!-- 远程仓库列表 -->  
            <repositories>
                <repository>
                    <id>aliyun</id>
                    <name>aliyun</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
            </repositories>
            <!-- 配置插件下载的仓库列表-->
            <pluginRepositories>
                <pluginRepository>
                    <id>thirdparty_repository</id>
                    <name>thirdparty_repository</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <!-- 激活所使用的配置-->
    <activeProfiles>
        <activeProfile>lovecto_profile</activeProfile>
    </activeProfiles>
</settings>

打开Idea,配置Maven:

 

创建一个web项目

打开pom.xml,修改配置后如下(注意其中的注释,需要保留,后面打war包需要):

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>TestSpringBoot3</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>TestSpringBoot3 Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.2</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
<!--
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
-->
        </dependency>

        <!-- for jsp -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
<!--
            <scope>provided</scope>
-->
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
<!--
            <scope>provided</scope>
-->
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>10.1.34</version>
<!--
            <scope>provided</scope>
-->
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>10.1.19</version>
<!--
            <scope>provided</scope>
-->
        </dependency>
        <!-- end for jsp -->

    </dependencies>
    <!--for spring boot init application-->
    <build>
        <finalName>TestSpringBoot3</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.sample.Application</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

最后的build-plugin的配置就是让外部tomcat环境启动时能够正常加载Springboot框架二设置的。其中所指的Application.java代码如下:

package com.sample;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
@ServletComponentScan("com.sample")
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        System.out.println("--SpringApplicationBuilder  ------------------x-");
        return builder.sources(Application.class);
    }
}

这个文件可以分成两个,也可以像我一样放在一个文件里,它包含了连个部分:springbootapplication和Springbootservletinitializer,前者只有一个main方法,用来在idea环境下启动springboot项目用,后者是打包war后用的。

添加Springboot的配置文件application.properties(在src-main-resources目录下):

#server.port=8080
#server.servlet.context-path=/test3
spring.mvc.view.suffix=.jsp
#spring.mvc.view.prefix=/WEB-INF/jsp/
server.servlet.jsp.init-parameters.development=true

注意最后一行,那个也是支持jsp的关键。 

写一个Controller测试以下:

package com.sample.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Hello {
    @RequestMapping("/hello")
    public String helloHtml() {
        System.out.println("--hello1-index.html-------");
        return "index";
    }

    //@GetMapping("/helloJsp")
    @RequestMapping("/helloJsp")
    public String hello() {
        System.out.println("--hello1-jsp-------");
        return "/WEB-INF/jsp/hello1";
    }
}

请看我代码里特意保留了一个注释@GetMapping,不要用它,那个是SpringMvc的注解,在springboot项目里不起作用。

在src-main-webapp目录下编写一个index.jsp、WEB-INF/jsp/目录下编写hello1.jsp,内容只有一行即可,用来区分输出的页面,例如(两个文件里自己修改输出的内容,能够区分开两个文件即可):

<%out.println("This is index.jsp file.");%>

在Idea开发环境运行springboot项目

直接在Application.java代码页面右键 Run Application.main

注意观察下方的运行日志,其中就标明了默认的服务器端口8080,看到正常启动后,就可以打开浏览器输入以下地址:

http://localhost:8080/hello

http://localhost:8080/helloJsp

就可以分别看到两个页面的输出了。

打包war

去掉pom.xml里的所有注释,然后在maven栏目-plugin-war:war双击。


http://www.kler.cn/a/531767.html

相关文章:

  • GRN前沿:利用DigNet从scRNA-seq数据中生成基于扩散的基因调控网络
  • X Window System 架构概述
  • Java | CompletableFuture详解
  • 机器学习10
  • Vue.js 异步、延迟组件加载
  • 连续预测、
  • RAG 与历史信息相结合
  • 自动化运维的未来:从脚本到AIOps的演进
  • 基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决
  • 自托管看板工具BanBan
  • 利用redux与react实现异步操作
  • Mac本地部署DeekSeek-R1下载太慢怎么办?
  • 基于Spring Security 6的OAuth2 系列之九 - 授权服务器--token的获取
  • Golang 并发机制-5:详解syn包同步原语
  • 【玩转 Postman 接口测试与开发2_015】第12章:模拟服务器(Mock servers)在 Postman 中的创建与用法(含完整实测效果图)
  • 大模型综述一镜到底(全文八万字) ——《Large Language Models: A Survey》
  • DeepSeek:以AI创新引领全球科技潮流
  • 容器适配器(以stack和queue为例)
  • DeepSeek 提示词之角色扮演的使用技巧
  • openssl 静态编译
  • 下载hugging face上的数据集
  • 【Go - 小顶堆/大顶堆】
  • CSDN原力值提升秘籍:解锁社区活跃新姿势
  • AI开发学习之——PyTorch框架
  • Java控制台登录系统示例代码
  • nginx 新手指南