Idea远程debug操作步骤【SpringBoot项目】
1 创建本地SpringBoot项目
注意,具体业务逻辑可以随意写,此处我为了简介,并没有严格按照规范来
1.1 定义service
@Service
public class AddService {
public int add(int a, int b){
int sum = a + b;
System.out.println(sum);
return sum;
}
}
1.2 定义controller
@RestController
public class TestController {
@Autowired
private AddService addService;
@RequestMapping("/test")
public String testController(){
int a = -1;
int b = 4;
System.out.println("addService.add(a, b) = " + addService.add(a, b));
return "test....";
}
}
1.3 启动类
@SpringBootApplication
//@EnableMBeanExport // 自动注册MBean
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
2 创建并配置远程连接
2.1 在本地idea配置远程连接
远程连接地址Host:填写自己服务器的地址即可
端口Port:5005(默认)
命令行参数(默认):-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
2.2 运行maven,将SpringBoot程序打包并上传启动(此处打成war包)
将打包好的war包,上传到linux服务器上
此处我上传到了test目录下
启动项目:
2.3 在本地打好断点(并以debug方式启动)
注意:本地java代码需要与linux服务器上的保持一致【否则debug会失败】
①在本地idea打断点
②以debug方式启动
③当出现Connected to the target VM,…表示与远程连接成功
④运行成功
⑤运行结果:
拓展 :
①war包与jar包区别
jar是普通java项目打包,通常是开发时要引用通用类,达成jar包便于存放管理
war是java web项目打包,web网站完成后,达成war包部署到服务器,目的是为了节省资源,提高效率。
- war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块,jar一般只是包括一些class文件,在声明了Main_class之后可以直接用java命令执行
- war是做好一个web应用后(通常是网站),打成包部署到容器中;jar包通常是开发时要引用通用类,打成包方便存放管理
- war是Sun公司提出的一种Web应用格式,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织;classes目录下包含编译好的Servlet类和Jsp或Servlet所依赖的其他类(如JavaBean)可以达成jar包放到WEB-INF的lib目录下
JAR文件格式以ZIP文件格式为基础。与ZIP不同的是,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件
程序,并可被类似于编译期和JVM这样的工具直接使用。
- JAR文件:
安全性:可以对JAR文件加上数字化签名,用于检测代码是否被篡改过
减少下载时间:共用一个连接
压缩:允许再压缩
传输平台扩展:提供了向Java核心平台添加功能的方法 - WAR文件:
就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个war扩展名
②SpringBoot访问静态资源[统一配置]
项目结构:
controller层(配置页面跳转)
@Controller
public class TestController {
@RequestMapping("/test")
public String test(){
return "test.html";
// return "/test.html"; 此处/可不加
}
}
yml文件设置静态资源映射路径
spring:
mvc:
static-path-pattern: /**
# HTTP的请求地址
# static-path-pattern: /login/**
web:
resources:
static-locations: classpath:/static/, classpath:/templates/