Я разработал маленькое приложение для весенней загрузки с упаковкой в банку. Пример использования приложения: пользователь войдет в приложение и отобразит страницу приветствия. Ниже мой код.
Основной класс
package com.ibm.heathcare;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages= {"com.ibm.heathcare.*"})
public class HeathcareappApplication {
public static void main(String[] args) {
SpringApplication.run(HeathcareappApplication.class, args);
}
}
Класс контроллера входа
package com.ibm.heathcare.controller;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.ibm.heathcare.modal.Login;
import com.ibm.heathcare.modal.User;
import com.ibm.heathcare.service.AuthService;
@Controller
@SessionAttributes({"userName","uid"})
public class LoginController {
@Autowired
AuthService authService;
@RequestMapping("/login")
public String showLoginPage(ModelMap model){
//model.addAttribute("login", new Login());
return "login";
}
@RequestMapping("/logout")
public String showLogoutPage(ModelMap model){
model.put("message", "Successfully Log out...");
return "redirect:/login";
}
@RequestMapping("/welcome")
public String showWelcomePage(ModelMap model) {
return "welcome";
}
@RequestMapping(value="/login" ,method=RequestMethod.POST)
public String showwelcomePage(@RequestParam String uid, @RequestParam String pwd,ModelMap model){
Optional<User> optUser=authService.getAuthenticate(uid, pwd);
if(optUser.isPresent()) {
User user=optUser.get();
model.put("userName", user.getUserName() );
model.put("uid", user.getUserId());
return "welcome";
}else {
model.addAttribute("login", new Login("",""));
model.addAttribute("errorMessage",new String("Invalid Credential"));
return "login";
}
}
}
вход. jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post">
User ID :<input type="text" name="uid"/><p>
Password:<input type="password" name="pwd"/><br>
<input type="submit" value="Login" />
</form>
</body>
</html>
добро пожаловать. jsp
<%@ include file="common/header.jspf" %>
<%@ include file="common/navigation.jspf" %>
<div class="jumbotron text-center" >
<h1>Welcome<h1><p>
<h2> ${userName} </h2>
</div>
<%@ include file="common/footer.jspf" %>
application.properties
#Server Configuration
server.port = 8282
#ViwResolver
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
POM. xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.ibm</groupId>
<artifactId>heathcare</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>heathcareapp</name>
<description>Health Care Management Application</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.6</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap-datepicker</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Теперь, когда я выполнил это приложение через eclipse, оно работало хорошо. Я создал банку приложения с помощью инструмента maven, созданного в целевой папке. Я выполнил jar приложения из целевой папки с помощью командной строки. Работало нормально. Но когда я копирую ту же банку в другую папку на моем компьютере и пытаюсь выполнить с помощью команды java -jar app.jar и нажимаю URL-адрес http://localhost: 8282 / login в браузере, это дает мне страницу ошибки Whitelabel со статусом код 404. Я не уверен, что не так с приложением. Я много искал в Интернете, и некоторые эксперты предложили явно написать @ComponentScan с информацией о базовом пакете в основном классе. Я сделал то же самое, но у меня это не сработало. В консоли отображается журнал ниже.
2020-07-10 10:38:52.605 INFO 11788 --- [ task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-07-10 10:38:53.888 INFO 11788 --- [ main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
2020-07-10 10:38:53.918 INFO 11788 --- [ main] c.ibm.heathcare.HeathcareappApplication : Started HeathcareappApplication in 24.424 seconds (JVM running for 25.755)
2020-07-10 10:39:18.728 INFO 11788 --- [nio-8282-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-07-10 10:39:18.729 INFO 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-07-10 10:39:18.730 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : Detected StandardServletMultipartResolver
2020-07-10 10:39:18.783 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : enableLoggingRequestDetails='false': request parameters and headers will be masked to prevent unsafe logging of potentially sensitive data
2020-07-10 10:39:18.784 INFO 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 54 ms
2020-07-10 10:39:18.901 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : GET "/login", parameters={}
2020-07-10 10:39:18.916 DEBUG 11788 --- [nio-8282-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.ibm.heathcare.controller.LoginController#showLoginPage(ModelMap)
2020-07-10 10:39:19.022 DEBUG 11788 --- [nio-8282-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, application/xhtml+xml, image/webp, application/xml;q=0.9, */*;q=0.8]
2020-07-10 10:39:19.022 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.view.JstlView : View name 'login', model {}
2020-07-10 10:39:19.043 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.view.JstlView : Forwarding to [/WEB-INF/jsp/login.jsp]
2020-07-10 10:39:19.160 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : Completed 404 NOT_FOUND
2020-07-10 10:39:19.163 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for GET "/error", parameters={}
2020-07-10 10:39:19.168 DEBUG 11788 --- [nio-8282-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse)
2020-07-10 10:39:19.664 DEBUG 11788 --- [nio-8282-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, text/html;q=0.8]
2020-07-10 10:39:19.684 DEBUG 11788 --- [nio-8282-exec-1] o.s.web.servlet.DispatcherServlet : Exiting from "ERROR" dispatch, status 404
Пожалуйста, помогите мне найти проблему.