জাভা স্প্রিং বুট: কীভাবে আমার অ্যাপ্লিকেশন রুটটিকে ("/") সূচক html এ ম্যাপ করবেন?


133

আমি জাভা এবং বসন্তে নতুন। আমি কীভাবে আমার অ্যাপ্লিকেশনটির মূলটিকে http://localhost:8080/একটি স্থিতিতে ম্যাপ করতে পারি index.html? আমি যদি http://localhost:8080/index.htmlএর কাজগুলিতে নেভিগেট করি তবে ।

আমার অ্যাপ স্ট্রাকচারটি হ'ল:

dirs

আমার config\WebConfig.javaচেহারাটি এরকম:

@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/");
        }
}

আমি যোগ করার চেষ্টা করেছি registry.addResourceHandler("/").addResourceLocations("/index.html");কিন্তু এটি ব্যর্থ হয়েছে।


1
হতে পারে এটি সহায়তা করে: stackoverflow.com/questions/20405474/spring-boot-context-root
Udo Klimaschewski

3
@ উডো ক্লিমাচেসউইস্কি এটি দেখায় যে কীভাবে মানচিত্র তৈরি করা যায় http://localhost:8080/appNameতবে এটি আমার যা প্রয়োজন তা নয় ...
শোহাম

1
WebMvcConfigurerAdapter অবচয় করা হয়েছে
ব্যবহারকারী 1346730

উত্তর:


150

আপনি যদি @EnableWebMvcটীকাটি না ব্যবহার করেন তবে এটি বাক্সটি থেকে বেরিয়ে আসবে । যখন আপনি এটি করেন আপনি স্প্রিং বুট আপনার জন্য যা কিছু করে সেগুলি স্যুইচ করে WebMvcAutoConfiguration। আপনি সেই টীকাটি সরিয়ে ফেলতে পারেন, বা আপনি যে ভিউ কন্ট্রোলারটি স্যুইচ করেছেন তা ফিরিয়ে দিতে পারেন:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("forward:/index.html");
}

1
ধন্যবাদ .. আমি বুঝতে পারি নি ... তাদের সাইটে একটি সাধারণ ডেমো খুঁজে পেল না যা এটি দেখায় ...
শোহাম

12
থেকে রেফারেন্স ডক্স : "আপনি কি বসন্ত বুট MVC অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে রাখা করতে চান, এবং আপনি শুধু অতিরিক্ত MVC কনফিগারেশন (interceptors খুব, formatters করুন, দেখুন কন্ট্রোলার ইত্যাদি) যোগ করার জন্য আপনি টাইপ আপনার নিজস্ব @Bean যোগ করতে পারেন চান WebMvcConfigurerAdapte, কিন্তু ছাড়া দ @EnableWebMvc"
ডেভ সিয়ার

1
এটি পরিবেশন করা index.htmlহবে /। এটাও ব্রাউজার আসলে থেকে URL পরিবর্তন করা সম্ভব /করতে /index.html?
asmaier

12
ঠিক আছে আমি এটি খুঁজে বের করতে। যদি আপনার কাছে থেকে URL পরিবর্তন করতে চান /করতে /index.htmlব্যবহার "redirect:/index.html" পরিবর্তে এগিয়ে।
asmaier

4
আমি @EableableWebMvc টীকাটি ব্যবহার করছি না, এবং আমি সূচি html এ পুনঃনির্দেশিত হই না।
জেলি

44

ডেভ সিয়ারের উত্তরের একটি উদাহরণ:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MyWebMvcConfig {

    @Bean
    public WebMvcConfigurerAdapter forwardToIndex() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                // forward requests to /admin and /user to their index.html
                registry.addViewController("/admin").setViewName(
                        "forward:/admin/index.html");
                registry.addViewController("/user").setViewName(
                        "forward:/user/index.html");
            }
        };
    }

}

8
স্প্রিং 5. উঠিয়ে WebMvcConfigurerAdapter পরিবর্তে WebMvcConfigurer ব্যবহারের
খুলে আমেরিকার হরিণবিশেষ

22

এটি যদি একটি স্প্রিং বুট অ্যাপ হয়।

স্প্রিং বুট স্বয়ংক্রিয়ভাবে সর্বজনীন / স্ট্যাটিক / ওয়েব অ্যাপ্লিকেশন ফোল্ডারে সূচকগুলি সনাক্ত করে। আপনি যদি কোনও নিয়ামক লিখে থাকেন তবে @Requestmapping("/")এটি ডিফল্ট বৈশিষ্ট্যটিকে ওভাররাইড করবে এবং index.htmlআপনি টাইপ না করলে এটি প্রদর্শন করবে নাlocalhost:8080/index.html


4
আমি একটি সিআরসি / প্রধান / সংস্থানগুলি / সর্বজনীন / সূচক html ফাইল তৈরি করেছি এবং এটি কার্যকর হয়েছে! ধন্যবাদ
জেমস ওয়াটকিন্স

এটা কি এখনও সত্য?
ফিয়ারএক্স


8

আপডেট: জানুয়ারী -2018

প্রথমে সংস্থানসমূহের অধীনে সর্বজনীন ফোল্ডার তৈরি করুন এবং সূচিপত্র html ফাইল তৈরি করুন। WebMvcConfigurerAdapter এর পরিবর্তে WebMvcConfigurer ব্যবহার করুন।

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebAppConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
    }

}

যদি এটি কাজ না করে তবে কী ভুল হতে পারে? উত্স / সর্বজনীন / সূচক html উপস্থিত; জাভা 13; বসন্ত 2.2.2; টমক্যাট
জেএফএফআইজিগ

7

আপনি যদি spring-boot 2.1.6.RELEASEসাধারণ @RestControllerটীকা দিয়ে সর্বশেষত ব্যবহার করেন তবে আপনাকে কিছু করার দরকার নেই, কেবল ফোল্ডারের index.htmlনীচে নিজের ফাইলটি যুক্ত করুন resources/static:

project
  ├── src
      ├── main
          └── resources
              └── static
                  └── index.html

তারপরে URL টিপুন : http: // লোকালহোস্ট: 8080 । আশা করি এটি সকলকে সাহায্য করবে।


আমার ক্ষেত্রে, এটি কাজ করছিল তবে আমি যখন টমক্যাট থেকে আন্ডারটোতে পরিবর্তিত হলাম তখন হঠাৎ কাজ করা বন্ধ করুন। এখন আমার ফরোয়ার্ড করার / আমার সূচক html- এ যাওয়ার জন্য একটি উপায় দরকার
জার্মান ফ্যালার

5

ইনসাইড Spring Boot, আমি সবসময় ওয়েব পেজ একটি ফোল্ডার ভিতরে মত করা publicবা webappsবা viewsএবং এটি জায়গা ভিতরে src/main/resourcesডিরেক্টরির হিসাবে আপনি দেখতে পাবেন application.propertiesএছাড়াও।

Spring_Boot-প্রজেক্ট-এক্সপ্লোরার-দেখুন

এবং এটি আমার application.properties:

server.port=15800
spring.mvc.view.prefix=/public/
spring.mvc.view.suffix=.html
spring.datasource.url=jdbc:mysql://localhost:3306/hibernatedb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.format_sql = true

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

যত তাড়াতাড়ি আপনি ইউআরএলটি রাখবেন servername:15800এবং স্প্রিং বুট দ্বারা চালিত সার্লেলেট প্রেরণকারী দ্বারা প্রাপ্ত এই অনুরোধটি ঠিক এটি অনুসন্ধান করবে index.htmlএবং এই নামটি সংবেদনশীল ক্ষেত্রে যেমনটি spring.mvc.view.suffixএইচটিএমএল, জেএসপি, এইচটিএম ইত্যাদি হবে will

আশা করি এটি অনেকের সহায়তা করবে।


@ আরিফমুস্তফা সাম্প্রতিক স্প্রিন্ট বুট সংস্করণগুলিতে আমি ওয়েবপৃষ্ঠাগুলি টেম্পলেটগুলির মধ্যে রাখার পরামর্শ দিচ্ছি।
আরিফ মুস্তফা

আপনার জন্য কি রেফারেন্স আছে? আমি একটি স্প্রিং ব্যাকএন্ডের সাথে একটি রিয়েট / রিডেক্স ফ্রন্টএন্ড প্রকল্প তৈরি করার চেষ্টা করছি এবং আমি জড়িত সেরা অনুশীলন সম্পর্কে নিশ্চিত নই।
মাইকে

2
  1. index.html ফাইলটি নীচের অবস্থানের অধীনে হওয়া উচিত - src / উত্স / পাবলিক / সূচক html বা src / উত্স / স্ট্যাটিক / সূচক html যদি উভয় অবস্থান নির্ধারিত হয় তবে প্রথমে কোন সূচকটি ঘটে তা সূচী। html সেই ডিরেক্টরি থেকে কল করবে।
  2. উত্স কোডটি দেখে মনে হচ্ছে -

    package com.bluestone.pms.app.boot; 
    import org.springframework.boot.Banner;
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    import org.springframework.context.annotation.ComponentScan;
    
    
    
    @SpringBootApplication 
    @EnableAutoConfiguration
    @ComponentScan(basePackages = {"com.your.pkg"}) 
    public class BootApplication extends SpringBootServletInitializer {
    
    
    
    /**
     * @param args Arguments
    */
    public static void main(String[] args) {
    SpringApplication application = new SpringApplication(BootApplication.class);
    /* Setting Boot banner off default value is true */
    application.setBannerMode(Banner.Mode.OFF);
    application.run(args);
    }
    
    /**
      * @param builder a builder for the application context
      * @return the application builder
      * @see SpringApplicationBuilder
     */
     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilder 
      builder) {
        return super.configure(builder);
       }
    }

1

আমারও একই সমস্যা ছিল। স্থির এইচটিএমএল ফাইলগুলি কোথায় অবস্থিত তা স্প্রিং বুট জানে।

  1. উত্স / স্থিতিশীল ফোল্ডারে সূচক html যুক্ত করুন
  2. তারপরে @RequestMapping ("/") ইত্যাদির জন্য রুট পাথের সম্পূর্ণ নিয়ন্ত্রক পদ্ধতিটি মুছুন
  3. অ্যাপ্লিকেশন চালান এবং http: // লোকালহোস্ট: 8080 পরীক্ষা করুন (কাজ করা উচিত)

0

আপনি রিডাইরেক্টভিউ কনট্রোলার যুক্ত করতে পারেন:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/", "/index.html");
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.