কেন স্প্রিং এমভিসি 404 এর সাথে সাড়া দেয় এবং রিপোর্ট করে "ইউআরআই-এর সাথে এইচটিটিপি অনুরোধের জন্য কোনও ম্যাপিং পাওয়া যায় নি […] ডিসপ্যাচারসার্ভলেটে"?


91

আমি টমক্যাটে মোতায়েন করা একটি স্প্রিং এমভিসি অ্যাপ্লিকেশন লিখছি। নিম্নলিখিত নিম্নতম, সম্পূর্ণ এবং যাচাইযোগ্য উদাহরণ দেখুন

public class Application extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { };
    }
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { SpringServletConfig.class };
    }
    protected String[] getServletMappings() {
        return new String[] { "/*" };
    }
}

কোথায় SpringServletConfigআছে

@Configuration
@ComponentScan("com.example.controllers")
@EnableWebMvc
public class SpringServletConfig {
    @Bean
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver vr = new InternalResourceViewResolver();
        vr.setPrefix("/WEB-INF/jsps/");
        vr.setSuffix(".jsp");
        return vr;
    }
}

অবশেষে, আমার @Controllerপ্যাকেজে একটি আছেcom.example.controllers

@Controller
public class ExampleController {
    @RequestMapping(path = "/home", method = RequestMethod.GET)
    public String example() {
        return "index";
    }
}

আমার আবেদনের প্রসঙ্গ নাম Example। আমি যখন একটি অনুরোধ প্রেরণ

http://localhost:8080/Example/home

অ্যাপ্লিকেশনটি HTTP স্থিতি 404 এর সাথে সাড়া দেয় এবং নীচে লগ করে

WARN  o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI `[/Example/WEB-INF/jsps/index.jsp]` in `DispatcherServlet` with name 'dispatcher'

আমার কাছে একটি জেএসপি রিসোর্স রয়েছে /WEB-INF/jsps/index.jspবলে আমি আশা করেছি যে স্প্রিং এমভিসি আমার কন্ট্রোলারটি অনুরোধটি পরিচালনা করতে ব্যবহার করবে এবং জেএসপিতে এগিয়ে যাবে, তবে কেন এটি 404 দিয়ে সাড়া দিচ্ছে?


এই সতর্কতা বার্তা সম্পর্কে প্রশ্নের জন্য একটি আধ্যাত্মিক পোস্ট বোঝানো হয়।

উত্তর:


100

আপনার স্ট্যান্ডার্ড স্প্রিং এমভিসি অ্যাপ্লিকেশনটি এ এর ​​মাধ্যমে সমস্ত অনুরোধগুলি সরবরাহ করবে DispatcherServlet আপনি আপনার সার্লেট ধারকটির সাথে নিবন্ধভুক্ত করেছেন তার ।

এর DispatcherServletচেহারা ApplicationContextএবং যদি উপলভ্য হয় তবে এটি ApplicationContextএকটি ContextLoaderListenerবিশেষ মটরশুটিটির জন্য নিবন্ধীকৃত এটির জন্য তার অনুরোধটি সরবরাহ করার যুক্তিটি সেটআপ করা দরকার। এই মটরশুটি ডকুমেন্টেশন বর্ণিত হয়

যুক্তিযুক্তভাবে সর্বাধিক গুরুত্বপূর্ণ, টাইপ HandlerMappingম্যাপের মটরশুটি

হ্যান্ডলারের কাছে আগত অনুরোধ এবং কিছু মানদণ্ডের উপর ভিত্তি করে প্রাক- এবং পোস্ট প্রসেসরগুলির একটি তালিকা (হ্যান্ডলার ইন্টারসেপ্টার) যার HandlerMappingপ্রয়োগের দ্বারা পৃথক হয় । সর্বাধিক জনপ্রিয় বাস্তবায়ন টীকাগুলি নিয়ন্ত্রকদের সমর্থন করে তবে অন্যান্য বাস্তবায়নও বিদ্যমান।

এর javadocHandlerMapping আরও বর্ণনা কিভাবে বাস্তবায়নের আচরণ নয়।

DispatcherServlet(কাস্টমাইজড করা যাবে) এই ধরনের সমস্ত মটরশুটি খুঁজে পায় এবং তাদের কিছু অনুক্রমে খাতাপত্র। একটি অনুরোধ পরিবেশন করার সময়, DispatcherServletএই HandlerMappingঅবজেক্টগুলির মধ্য দিয়ে লুপগুলি আসে এবং getHandlerস্ট্যান্ডার্ড হিসাবে উপস্থাপিত আগত অনুরোধটিকে পরিচালনা করতে পারে এমন একটি সন্ধানের জন্য এগুলির প্রত্যেকের পরীক্ষা করে HttpServletRequest। ৪.৩.x হিসাবে, এটি যদি কিছু না পায় তবে এটি যে সতর্কতাটি দেখছে তা লগ করে

কোন ম্যাপিং URI এর মাধ্যমে HTTP অনুরোধ জন্য পাওয়া যায় [/some/path]যে DispatcherServletনাম SomeName সঙ্গে

এবং হয় একটি নিক্ষেপNoHandlerFoundException বা অবিলম্বে 404 পাওয়া যায়নি স্থিতি কোড দিয়ে প্রতিক্রিয়া প্রকাশ করে comm

কেন খুঁজে পেলাম না DispatcherServletএকটিHandlerMapping যে আমার অনুরোধ হ্যান্ডেল করতে পারে?

সর্বাধিক সাধারণ HandlerMappingবাস্তবায়ন হ'ল RequestMappingHandlerMapping, যা শিমকে হ্যান্ডলার @Controllerহিসাবে নিবন্ধিত করে (সত্যই তাদের @RequestMappingবর্ণিত পদ্ধতিগুলি)। আপনি নিজেই এই ধরণের শিমটি নিজেই ঘোষণা করতে পারেন ( @Beanবা <bean>বা অন্য যন্ত্রে) বা আপনি অন্তর্নির্মিত বিকল্পগুলি ব্যবহার করতে পারেন । এইগুলো:

  1. @Configurationদিয়ে আপনার ক্লাসটি টিকিয়ে দিন @EnableWebMvc
  2. <mvc:annotation-driven />আপনার এক্সএমএল কনফিগারেশনে কোনও সদস্য ঘোষণা করুন।

উপরের লিঙ্কটির বর্ণনা হিসাবে, এই দু'টিই RequestMappingHandlerMappingশিম (এবং অন্যান্য সামগ্রীর একগুচ্ছ) নিবন্ধভুক্ত করবে । যাইহোক, HandlerMappingএকটি হ্যান্ডলার ছাড়া খুব দরকারী নয়। RequestMappingHandlerMappingকিছু @Controllerমটরশুটি প্রত্যাশা করে তাই আপনার @Beanজাভা কনফিগারেশনের পদ্ধতিগুলির মাধ্যমে বা <bean>এক্সএমএল কনফিগারেশনে ঘোষণাপত্রের মাধ্যমে বা @Controllerউভয়টিতে এনোটোটেড ক্লাসগুলির উপাদান স্ক্যানিংয়ের মাধ্যমে আপনার সেগুলিও ঘোষণা করতে হবে। নিশ্চিত করুন যে এই মটরশুটি উপস্থিত রয়েছে।

যদি আপনি সতর্কতা বার্তা এবং একটি 404 পেয়ে থাকেন এবং আপনি উপরের সমস্তটি সঠিকভাবে কনফিগার করেছেন, তবে আপনি আপনার অনুরোধটি ভুল ইউআরআই-তে প্রেরণ করছেন , এটি সনাক্তকরণযুক্ত @RequestMappingএনোটোটেড হ্যান্ডলার পদ্ধতির দ্বারা পরিচালিত নয় ।

spring-webmvcঅন্যান্য গ্রন্থাগার অফার বিল্ট-ইন HandlerMappingবাস্তবায়নের। উদাহরণস্বরূপ, BeanNameUrlHandlerMappingমানচিত্র

URL গুলি থেকে মটরশুটি পর্যন্ত নামের সাথে স্ল্যাশ ("/") দিয়ে শুরু হয়

এবং আপনি সর্বদা আপনার নিজের লিখতে পারেন। স্পষ্টতই, আপনাকে নিশ্চিত করতে হবে যে আপনি যে অনুরোধটি পাঠাচ্ছেন তা নিবন্ধিত HandlerMappingঅবজেক্টের হ্যান্ডলারের অন্তত একটির সাথে মেলে ।

আপনি যদি স্পষ্টভাবে বা স্পষ্টভাবে কোনও HandlerMappingমটরশুটি (বা detectAllHandlerMappingsহয় true) DispatcherServletনিবন্ধন না করেন তবে কিছু ডিফল্ট নিবন্ধভুক্ত করুন । এগুলি শ্রেণীর DispatcherServlet.propertiesমতো একই প্যাকেজে সংজ্ঞায়িত হয় DispatcherServlet। এগুলি BeanNameUrlHandlerMappingএবং DefaultAnnotationHandlerMapping(যা অনুরূপ RequestMappingHandlerMappingতবে অবনমিত)।

ডিবাগিং

স্প্রিং এমভিসি এর মাধ্যমে নিবন্ধিত হ্যান্ডলারদের লগ করবে RequestMappingHandlerMapping। যেমন একটি @Controllerমত

@Controller
public class ExampleController {
    @RequestMapping(path = "/example", method = RequestMethod.GET, headers = "X-Custom")
    public String example() {
        return "example-view-name";
    }
}

INFO পর্যায়ে নিম্নলিখিত লগ ইন করবে

Mapped "{[/example],methods=[GET],headers=[X-Custom]}" onto public java.lang.String com.spring.servlet.ExampleController.example()

এটি নিবন্ধিত ম্যাপিং বর্ণনা করে। যখন আপনি কোনও হ্যান্ডলার খুঁজে পাওয়া যায়নি এমন সতর্কতাটি দেখেন, বার্তায় থাকা ইউআরআইকে এখানে তালিকাবদ্ধ ম্যাপিংয়ের সাথে তুলনা করুন। @RequestMappingহ্যান্ডলারটি নির্বাচন করতে স্প্রিং এমভিসির পক্ষে অবশ্যই নির্দিষ্ট করা সমস্ত বিধিনিষেধের সাথে মেলে।

অন্যান্য HandlerMappingবাস্তবায়নগুলি তাদের নিজস্ব বিবৃতি লগ করে যা তাদের ম্যাপিং এবং তাদের সম্পর্কিত হ্যান্ডলারগুলিতে ইঙ্গিত দেওয়া উচিত।

একইভাবে, কোন সিমের স্প্রিং রেজিস্টারগুলি তা দেখতে ডিইবিইউজি স্তরে স্প্রিং লগিং সক্ষম করুন। এটি কোন এনोटেটেড ক্লাসগুলি খুঁজে পেয়েছে, কোনটি প্যাকেজগুলি স্ক্যান করে, এবং কোনটি শিমটি শুরু করে তা রিপোর্ট করা উচিত। আপনি যা প্রত্যাশা করেছেন তা উপস্থিত না থাকলে আপনার ApplicationContextকনফিগারেশনটি পর্যালোচনা করুন ।

অন্যান্য সাধারণ ভুল

DispatcherServletকেবল একটি সাধারণ জাভা ইই Servlet। আপনি এটিকে আপনার আদর্শ <web.xml> <servlet-class>এবং <servlet-mapping>ঘোষণার সাথে রেজিস্ট্রেশন করুন , বা সরাসরি ServletContext#addServletএকটি মাধ্যমে WebApplicationInitializerবা স্প্রিং বুটের যে কোনও প্রক্রিয়া ব্যবহার করে। যেমন, আপনাকে সার্ভলেট নির্দিষ্টকরণে নির্দিষ্ট ইউআরএল ম্যাপিং যুক্তির উপর নির্ভর করতে হবে , অধ্যায় 12 দেখুন also আরও দেখুন

এই বিষয়টি মনে রেখে, একটি সাধারণ ভুল হ'ল একটি হ্যান্ডলার পদ্ধতি থেকে একটি ভিউয়ের নাম ফিরিয়ে দেওয়া এবং কোনও জেএসপি রেন্ডার হওয়ার প্রত্যাশা করে DispatcherServletইউআরএল ম্যাপিংয়ের মাধ্যমে নিবন্ধন করা। উদাহরণস্বরূপ, যেমন একটি হ্যান্ডলার পদ্ধতি বিবেচনা করুন/*@RequestMapping

@RequestMapping(path = "/example", method = RequestMethod.GET)
public String example() {
    return "example-view-name";
}

একটি সঙ্গে InternalResourceViewResolver

@Bean
public InternalResourceViewResolver resolver() {
    InternalResourceViewResolver vr = new InternalResourceViewResolver();
    vr.setPrefix("/WEB-INF/jsps/");
    vr.setSuffix(".jsp");
    return vr;
}

আপনি অনুরোধটি কোনও জেএসপি রিসোর্সে পাঠানোর জন্য আশা করতে পারেন /WEB-INF/jsps/example-view-name.jsp। এটি হবে না। পরিবর্তে, একটি প্রেক্ষাপটে নাম অভিমানী Example, DisaptcherServletরিপোর্ট হবে

ইউআরআই- [/Example/WEB-INF/jsps/example-view-name.jsp]এর DispatcherServletসাথে 'প্রেরণকারী' নামের সাথে এইচটিটিপি অনুরোধের জন্য কোনও ম্যাপিং পাওয়া যায়নি

কারণ DispatcherServletম্যাপ করা হয় /*এবং /*সবকিছু মিলে যায় (সঠিক মিল, যা উচ্চ অগ্রাধিকার আছে ব্যতীত), DispatcherServletহ্যান্ডেল করতে বেছে নেওয়া হবে forwardথেকে JstlView(দ্বারা ফিরে InternalResourceViewResolver)। প্রায় প্রতিটি ক্ষেত্রেই, এই DispatcherServletজাতীয় অনুরোধটি পরিচালনা করতে কনফিগার করা হবে না

পরিবর্তে, এই সরল ক্ষেত্রে, আপনি রেজিস্টার করা উচিত DispatcherServletকরতে /, ডিফল্ট সার্ভলেট যেমন উপলক্ষে। একটি অনুরোধের জন্য ডিফল্ট সার্লেটটি সর্বশেষ ম্যাচ। এটি ডিফল্ট সার্লেটের সাহায্যে চেষ্টা করার আগে আপনার সাধারণ সার্লেট কন্টেইনারটিকে *.jspজেএসপি রিসোর্স (উদাহরণস্বরূপ, টমক্যাট রয়েছে JspServlet) হ্যান্ডেল করার জন্য ম্যাপযুক্ত একটি অভ্যন্তরীণ সার্লেট বাস্তবায়ন বেছে নেবে।

আপনি আপনার উদাহরণে এটি দেখতে পাচ্ছেন।


@ এনেবল ওয়েবেএমভিসি দিয়ে ডিসপ্যাচার সার্ভলেট এটি ইতিমধ্যে / এ নিবন্ধিত হয়েছে। "আপনি অনুরোধটি জেএসপি রিসোর্সে / WEB-INF/jsps/example-view-name.jsp পথে প্রেরণ করার আশা করতে পারেন। এটি হবে না।" আপনি কীভাবে এটি কাজ করবেন যাতে এটি কোনও জেএসপি সংস্থার দিকে এগিয়ে যায়? এটিই মূলত প্রশ্ন করা।
টোর

@Tor তার নিজের উপর, @EnableWebMvcএকটি উপর @Configurationসটীক বর্গ যে কি করে না। এটি যা করে তা হ'ল অ্যাপ্লিকেশন প্রসঙ্গে অনেকগুলি ডিফল্ট স্প্রিং এমভিসি হ্যান্ডলার / অ্যাডাপ্টারের মটরশুটি যুক্ত করা। DispatcherServletপরিবেশন করতে একটি রেজিস্ট্রেশন করা /সম্পূর্ণ আলাদা প্রক্রিয়া যা আমি অন্যান্য সাধারণ ভুল বিভাগে বর্ণনা করেছি এমন বিভিন্ন উপায়ে সম্পন্ন হয়েছে । আপনি যা উদ্ধৃত করেছেন তার নীচে দুটি অনুচ্ছেদ জিজ্ঞাসা করা প্রশ্নের আমি উত্তর দিয়েছি ।
সোটিরিওস ডেলিমনলিস

5

আগে বর্ণনা করা ছাড়াও আমি আমার সমস্যাটি সমাধান করেছি: `

@Bean
public InternalResourceViewResolver resolver() {
    InternalResourceViewResolver vr = new InternalResourceViewResolver();
    vr.setPrefix("/WEB-INF/jsps/");
    vr.setSuffix(".jsp");
    return vr;
}

added tomcat-embed-jasper:

<dependency>
       <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
       <scope>provided</scope>
</dependency>

`থেকে: জেএসপি ফাইলটি স্প্রিং বুট ওয়েব অ্যাপ্লিকেশনটিতে রেন্ডারিং করছে না


2

আমার ক্ষেত্রে, আমি ভার্সন 5.1.2 সংস্করণ ( স্প্রিং বুট v2.0.4.RELEASE ব্যবহার করার সময় ) এর জন্য ইন্টারসেপ্টর স্প্রিং ডকুমেন্টেশন অনুসরণ করছিলাম এবং ক্লাসটিতেWebConfig টীকাটি ছিল @EnableWebMvcযা আমার অ্যাপ্লিকেশনে অন্য কোনও কিছুর সাথে সাংঘর্ষিক বলে মনে হচ্ছে যা আমার স্থিতিশীল প্রতিরোধ করছে সঠিকভাবে সমাধান হওয়া থেকে সম্পদগুলি (যেমন কোনও সিএসএস বা জেএস ফাইল ক্লায়েন্টকে ফেরানো হচ্ছে না)।

প্রচুর বিভিন্ন জিনিস চেষ্টা করার পরে, আমি এটি সরিয়ে দেওয়ার চেষ্টা করেছি @EnableWebMvcএবং এটি কাজ করেছে!

সম্পাদনা করুন: এখানে রেফারেন্স ডকুমেন্টেশন রয়েছে যা বলেছে যে @EnableWebMvcটীকাটি মুছে ফেলা উচিত

আপাতদৃষ্টিতে আমার ক্ষেত্রে, আমি ইতিমধ্যে আমার স্প্রিং অ্যাপ্লিকেশনটি কনফিগার করছি (যদিও এটি ব্যবহার করে web.xmlবা অন্য কোনও স্ট্যাটিক ফাইল ব্যবহার করে নয় , এটি অবশ্যই প্রোগ্রামিকভাবে রয়েছে), তাই এটি সেখানে বিরোধ ছিল।


1

আপনার কনফিগার ফাইলে নিম্নলিখিত পরিবর্তন সহ আপনার কোডটি সংশোধন করার চেষ্টা করুন। এর পরিবর্তে জাভা কনফিগারেশন ব্যবহার করা হয় application.propertiesconfigureDefaultServletHandlingপদ্ধতিতে কনফিগারেশন সক্ষম করতে ভুলবেন না ।

WebMvcConfigurerAdapterবর্গ অবচয় করা হয়েছে, তাই আমরা WebMvcConfigurerইন্টারফেস ব্যবহার করি ।

@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

আমি গ্রেড ব্যবহার করি, আপনার নিম্নলিখিত নীচে নির্ভরশীলতা থাকা উচিত pom.xml:

dependencies {

    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.3.0.RELEASE'
    compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.35'
}

0

একই ত্রুটির জন্য আমি আরও একটি কারণ পেলাম। এটি আপনার কন্ট্রোলআর জাভা ফাইলের জন্য শ্রেণিবদ্ধ ফাইল তৈরি না করার কারণেও হতে পারে। যার ফলস্বরূপ ওয়েব.এক্সএমএল-তে উল্লিখিত প্রেরণকারী সার্লেটটি নিয়ামক শ্রেণিতে উপযুক্ত পদ্ধতিতে এটি ম্যাপ করতে অক্ষম।

@Controller
Class Controller{
@RequestMapping(value="/abc.html")//abc is the requesting page
public void method()
{.....}
}

প্রকল্পের অধীনে গ্রহণের জন্য>> ক্লিন -> বিল্ড প্রজেক্ট নির্বাচন করুন your আপনার ওয়ার্কস্পেসের বিল্ডগুলির অধীনে নিয়ামক ফাইলের জন্য ক্লাস ফাইলটি তৈরি করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।


0

আমার জন্য, আমি দেখতে পেয়েছি যে আমার টার্গেট ক্লাসগুলি উত্সের মতো নয় এমন একটি ফোল্ডার প্যাটার্নে উত্পন্ন হয়েছিল। এটি সম্ভবতগ্রহণের ক্ষেত্রেই আমি আমার নিয়ন্ত্রকগুলি রাখার জন্য ফোল্ডার যুক্ত করি এবং সেগুলি প্যাকেজ হিসাবে যোগ করি না। সুতরাং আমি বসন্ত কনফিগারেশন মধ্যে ভুল পথ সংজ্ঞা শেষ।

আমার টার্গেট ক্লাসটি অ্যাপের অধীনে ক্লাস তৈরি করছিল এবং আমি com.happy.app উল্লেখ করছি

<context:annotation-config />
<context:component-scan
    base-package="com.happy.app"></context:component-scan> 

আমি com.happy.app এর জন্য প্যাকেজগুলি (ফোল্ডার নয়) যুক্ত করেছি এবং ফোল্ডারগুলি থেকে ফাইলগুলি গ্রহনের প্যাকেজে স্থানান্তরিত করেছি এবং এটি সমস্যার সমাধান করেছে।


0

আপনার সার্ভার পরিষ্কার করুন। সম্ভবত সার্ভারটি মুছুন এবং আবার প্রকল্প যুক্ত করুন এবং রান করুন।

  1. টমক্যাট সার্ভারটি বন্ধ করুন

  2. সার্ভারে ডান ক্লিক করুন এবং "পরিষ্কার" নির্বাচন করুন

  3. আবার সার্ভারে রাইট ক্লিক করুন এবং "ক্লিন টমক্যাট ওয়ার্ক ডিরেক্টরি" নির্বাচন করুন


0

আমার ক্ষেত্রে, আমি একটি প্রধান জাভা কনফিগারেশন ফাইলে গৌণ জাভা কনফিগারেশন ফাইলগুলি আমদানি করে খেলছিলাম। সেকেন্ডারি কনফিগারেশন ফাইলগুলি তৈরি করার সময়, আমি প্রধান কনফিগার ক্লাসের নামটি পরিবর্তন করেছি, তবে আমি ওয়েব.এক্সএমএলে নামটি আপডেট করতে ব্যর্থ হয়েছি। সুতরাং, আমি প্রতিবার টমক্যাট সার্ভারটি পুনরায় চালু করার সময়, আমি এক্লিপস আইডিই কনসোলে ম্যাপিং হ্যান্ডলারগুলি দেখছি না, এবং যখন আমি আমার হোম পৃষ্ঠায় নেভিগেট করার চেষ্টা করছিলাম তখন আমি এই ত্রুটিটি দেখছিলাম:

নভেম্বর 1, 2019 11:00:01 প্রধানমন্ত্রী org.springframework.web.servlet.PageNotFound NoHandlerFound সতর্কতা: ইউএসআই [/ ওয়েবঅ্যাপ / হোম / ইনডেক্স] এর সাথে ডিসপ্যাচার সার্ভেলে 'ডিসপ্যাচার' নামে কোনও ম্যাপিং পাওয়া যায়নি

স্থিরতাটি ছিল ওয়েব.এক্সএমএল ফাইল আপডেট করার জন্য যাতে পুরানো নাম "ওয়েবকনফিগ" পরিবর্তে "মেইনকনফিগ" হয়ে যায়, কেবল প্রধান জাভা কনফিগার ফাইলের সর্বশেষ নামটি প্রতিফলিত করার জন্য এটির নামকরণ করা হয় (যেখানে "মেইনকনফিগ" নির্বিচারে শব্দ এবং " এখানে ব্যবহৃত ওয়েব "এবং" প্রধান "একটি সিনট্যাক্সের প্রয়োজনীয়তা নয়)। মেনকনফিগ গুরুত্বপূর্ণ ছিল, কারণ এটি সেই ফাইল যা "ওয়েবকন্ট্রোলার", আমার স্প্রিং এমভিসি কন্ট্রোলার ক্লাস যা আমার ওয়েব অনুরোধগুলি পরিচালনা করে সেগুলির জন্য উপাদান স্ক্যান করেছিল।

@ComponentScan(basePackageClasses={WebController.class})

ওয়েব.এক্সএমএল এটি ছিল:

<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        com.lionheart.fourthed.config.WebConfig
    </param-value>
</init-param>

ওয়েব.এক্সএমএল ফাইলটিতে এখন রয়েছে:

<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        com.lionheart.fourthed.config.MainConfig
    </param-value>
</init-param>

এখন আমি কনসোল উইন্ডোতে ম্যাপিংটি দেখছি:

INFO: "or। [/ Home / index], পদ্ধতি = [GET]}" কে সার্বজনীন org.springframework.web.servlet.ModelAndView com.lionheart.fourthed.controller.WebController.gotoIndex () এ ম্যাপ করা হয়েছে

এবং আমার ওয়েব পৃষ্ঠা আবার লোড হচ্ছে।


-1

আমার যেমন সমস্যা ছিল **No mapping found for HTTP request with URI [/some/path] in DispatcherServlet with name SomeName**

আমি 2 থেকে 4 দিনের জন্য বিশ্লেষণ করার পরে আমি এর মূল কারণটি খুঁজে পেয়েছি। আমি প্রকল্পটি চালানোর পরে ক্লাস ফাইলগুলি তৈরি করা হয়নি। আমি প্রকল্প ট্যাব ক্লিক করেছি।

প্রকল্প -> ক্লোজপ্রজেক্ট -> ওপেনপ্রজেক্ট -> পরিষ্কার -> প্রকল্প তৈরি করুন

উত্স কোডের জন্য ক্লাস ফাইল তৈরি করা হয়েছে। এটি আমার সমস্যার সমাধান করেছে। ক্লাস ফাইলগুলি উত্পন্ন হয়েছে কিনা তা পরীক্ষা করতে দয়া করে আপনার প্রকল্প ফোল্ডারে বিল্ড ফোল্ডারটি পরীক্ষা করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.