봄 부팅 웹 앱이 준비된 후 자동으로 브라우저 시작
스프링 부팅 애플리케이션을 시작한 후 브라우저를 자동으로 실행하려면 어떻게 해야 합니까?브라우저가 로드되면 사용자가 인덱스 페이지를 보고 웹 앱과 상호 작용을 시작할 수 있도록 웹 앱이 배포되고 요청을 처리할 준비가 되었는지 확인하는 수신기 메서드 콜백이 있습니까?
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
// launch browser on localhost
}
아래 코드가 작동했습니다.
@EventListener({ApplicationReadyEvent.class})
void applicationReadyEvent() {
System.out.println("Application started ... launching browser now");
browse("www.google.com");
}
public static void browse(String url) {
if(Desktop.isDesktopSupported()){
Desktop desktop = Desktop.getDesktop();
try {
desktop.browse(new URI(url));
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
}
}else{
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec("rundll32 url.dll,FileProtocolHandler " + url);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@SpringBootApplication
@ComponentScan(basePackageClasses = com.io.controller.HelloController.class)
public class HectorApplication {
public static void main(String[] args) throws IOException {
SpringApplication.run(HectorApplication.class, args);
openHomePage();
}
private static void openHomePage() throws IOException {
Runtime rt = Runtime.getRuntime();
rt.exec("rundll32 url.dll,FileProtocolHandler " + "http://localhost:8080");
}
}
자바 코드로 할 수 있습니다.봄 부츠에 기성품이 들어 있는지 잘 모르겠습니다.
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class Browser {
public static void main(String[] args) {
String url = "http://www.google.com";
if(Desktop.isDesktopSupported()){
Desktop desktop = Desktop.getDesktop();
try {
desktop.browse(new URI(url));
} catch (IOException | URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec("xdg-open " + url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
저는 최근에 직접 이 문제를 해결하기 위해 노력하고 있습니다. 이 질문을 받은 지 오래되었지만, 저의 작동(그리고 매우 기본적인/간단한) 해결책이 아래에 나와 있습니다.이것은 당신의 앱에서 필요에 따라 리팩터로 작동하기를 원하는 모든 사람들을 위한 출발점입니다!
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
openHomePage();
}
private static void openHomePage() {
try {
URI homepage = new URI("http://localhost:8080/");
Desktop.getDesktop().browse(homepage);
} catch (URISyntaxException | IOException e) {
e.printStackTrace();
}
}
}
응용 프로그램을 다음과 같이 패키지화하는 경우WAR
파일, 응용 프로그램 서버 구성 등Tomcat
IDE를 통해 구성된 응용 프로그램 서버를 다시 시작하면 IDE에서 브라우저 탭을 자동으로 열 수 있습니다.
응용프로그램을 패키지로 만들려는 경우JAR
파일, IDE는 웹 브라우저를 열 수 없으므로 웹 브라우저를 열고 원하는 링크를 입력해야 합니다.localhost:8080
하지만 개발 단계에서는 이러한 지루한 단계를 밟는 것이 매우 지루할 수 있습니다.
스프링 부트 응용 프로그램이 준비된 후 Java 프로그래밍 언어로 브라우저를 열 수 있습니다.다음과 같이 타사 라이브러리를 사용할 수 있습니다.Selenium
또는 다음 코드 스니펫을 사용합니다.
브라우저를 여는 코드 조각입니다.
@EventListener({ApplicationReadyEvent.class})
private void applicationReadyEvent()
{
if (Desktop.isDesktopSupported())
{
Desktop desktop = Desktop.getDesktop();
try
{
desktop.browse(new URI(url));
} catch (IOException | URISyntaxException e)
{
e.printStackTrace();
}
} else
{
Runtime runtime = Runtime.getRuntime();
String[] command;
String operatingSystemName = System.getProperty("os.name").toLowerCase();
if (operatingSystemName.indexOf("nix") >= 0 || operatingSystemName.indexOf("nux") >= 0)
{
String[] browsers = {"opera", "google-chrome", "epiphany", "firefox", "mozilla", "konqueror", "netscape", "links", "lynx"};
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < browsers.length; i++)
{
if (i == 0) stringBuffer.append(String.format("%s \"%s\"", browsers[i], url));
else stringBuffer.append(String.format(" || %s \"%s\"", browsers[i], url));
}
command = new String[]{"sh", "-c", stringBuffer.toString()};
} else if (operatingSystemName.indexOf("win") >= 0)
{
command = new String[]{"rundll32 url.dll,FileProtocolHandler " + url};
} else if (operatingSystemName.indexOf("mac") >= 0)
{
command = new String[]{"open " + url};
} else
{
System.out.println("an unknown operating system!!");
return;
}
try
{
if (command.length > 1) runtime.exec(command); // linux
else runtime.exec(command[0]); // windows or mac
} catch (IOException e)
{
e.printStackTrace();
}
}
}
Selenium을 사용하여 브라우저 열기
셀레늄 라이브러리를 사용하려면 다음 종속성을 에 추가합니다.pom.xml
파일.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
그런 다음 기본 클래스에 다음 코드 조각을 추가합니다.
@EventListener({ApplicationReadyEvent.class})
private void applicationReadyEvent()
{
String url = "http://localhost:8080";
// pointing to the download driver
System.setProperty("webdriver.chrome.driver", "Downloaded-PATH/chromedriver");
ChromeDriver chromeDriver = new ChromeDriver();
chromeDriver.get(url);
}
알림: 다음과 같은 대부분의 인기 있는 브라우저를 사용할 수 있습니다.FirefoxDriver
,OperaDriver
,EdgeDriver
그러나 브라우저 드라이버를 미리 다운로드해야 합니다.
Runtime rt = Runtime.getRuntime();
try {
rt.exec("cmd /c start chrome.exe https://localhost:8080");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
위의 코드는 저에게 효과가 있었습니다.크롬을 바꿈.exe를 선택한 브라우저로 이동하고 원하는 URL로 이동합니다.참고: http 또는 https와 같은 구성을 포함해야 하며, 선택한 브라우저를 설치해야 합니다. 그렇지 않으면 브라우저를 자동으로 열지 않고 앱이 실행됩니다.하지만 창에서만 작동합니다.
언급URL : https://stackoverflow.com/questions/27378292/launch-browser-automatically-after-spring-boot-webapp-is-ready
'programing' 카테고리의 다른 글
Android가 텍스트 편집에 자리 표시자 텍스트 추가 (0) | 2023.07.12 |
---|---|
루프(또는 이해)에서 함수(또는 람다) 만들기 (0) | 2023.07.12 |
R2DBC - Oracle 데이터베이스 지원 (0) | 2023.07.12 |
데이터 그리드 보기에서 셀 강조 표시 사용 안 함 (0) | 2023.07.07 |
SqlPlus SP2-0734: 오류 (0) | 2023.07.07 |