我在100%java代码模式下实现spring MVC这是我编写的代码
的index.jsp
<!-- forward to home page -->
<jsp:forward page="home.htm"></jsp:forward>
针对home.jsp
<!-- header page -->
<jsp:include page="header.jsp"></jsp:include>
<h1>Hi this is Home Page</h1>
<!-- footer page -->
<jsp:include page="footer.jsp"></jsp:include>
这是我的调度程序servlet初始化程序类
package com.example.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ExampleAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// return rootapp config class
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
// return webmvc config class
return new Class[] {ExampleConfig.class};
}
@Override
protected String[] getServletMappings() {
//retunr url
return new String[] {"*.htm"};
}
}//ExampleAppInitializer
这是spring web MVC配置类代码
package com.example.config;
import java.util.Properties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.mvc.ParameterizableViewController;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@EnableWebMvc
@Configuration
@ComponentScan(basePackages="com.example.*")
public class ExampleConfig extends WebMvcConfigurerAdapter{
@Bean(id="createHandlerMapping")
public HandlerMapping createHandlerMapping() {
System.out.println("createHandlerMapping ");
// lcal variable declarations
SimpleUrlHandlerMapping simpleUrlHandlerMapping = null;
Properties mappingProperties = null;
// create object of handler
simpleUrlHandlerMapping = new SimpleUrlHandlerMapping();
mappingProperties = new Properties();
// mapping the urls
mappingProperties.put("/home.htm", "homePageController");
simpleUrlHandlerMapping.setMappings(mappingProperties);
return simpleUrlHandlerMapping;
}// createHandlerMapping
@Bean(id="homePageController")
public Controller homePageController() {
System.out.println("homePageController ");
// local variable declarations
ParameterizableViewController homePageController = null;
// create the objects
homePageController = new ParameterizableViewController();
homePageController.setViewName("home");
// return homePageController
return homePageController;
}// homePageController
@Bean(id="getViewName")
public ViewResolver getViewName() {
System.out.println("getViewName ");
// local variable declarations
InternalResourceViewResolver getViewName = null;
// create the objects
getViewName = new InternalResourceViewResolver();
// setting the paths
getViewName.setPrefix("/WEB-INF/view/");
getViewNa me.setSuffix(".jsp");
// return
return getViewName;
}// getViewName
}// ExampleConfig
因此,当我在tomcat 8服务器中部署它时,我收到404错误,如http://localhost:7979/example/ /example/home.htm未找到任何人都可以帮我解决这个问题
首先,您需要更改此方法
@Override
protected String[] getServletMappings() {
//retunr url
return new String[] {"*.htm"};
}
对此
@Override
protected String[] getServletMappings() {
//retunr url
return new String[] {"/"};
}
Class WebMvcConfigurerAdapter Deprecated。从5.0开始,WebMvcConfigurer具有默认方法(由Java 8基线实现)并且可以直接实现而无需此适配器
在这里,不要使用WebMvcConfigurerAdapter,因为它在Spring 5及更高版本中已弃用。 (我认为你提到了一个旧教程)
public class ExampleConfig extends WebMvcConfigurerAdapter{
而不是那个配置尝试这种配置
@Configuration
@EnableWebMvc
@ComponentScan("com.example") //no need to put .* after package name
public class ExampleConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
}
上面的代码对我有用,让我知道发生了什么错误,我建议你参考this Java config example
请查看Spring web MVC示例(https://spring.io/guides/gs/serving-web-content/)。对于您似乎想要实现的目标,这看起来过于复杂。