原文地址:SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI


采用 spring 零配置,参考 http://hanqunfeng.iteye.com/blog/2113820,WebInitializer 类代码如下:

public class WebInitializer implements WebApplicationInitializer {

    private static final Logger logger = LogManager.getLogger(WebInitializer.class);

    @Override
public void onStartup(ServletContext servletContext) throws ServletException { logger.info("-------->启动web应用"); /*
* Log4jConfigListener: log4j 2日志配置,配置文件为 classpath:log4j2.xml
*/
servletContext.addListener(new Log4jServletContextListener()); Log4jServletFilter log4jServletFilter = new Log4jServletFilter();
servletContext.addFilter("log4jServletFilter", log4jServletFilter); /*
* OpenSessionInViewFilter: 加上该 filter 可以保证jackson能够序列化LAZY FetchType
*/
OpenSessionInViewFilter openSessionInViewFilter = new OpenSessionInViewFilter();
FilterRegistration.Dynamic openSessionInViewFilterRegistration = servletContext
.addFilter("openSessionInViewFilter", openSessionInViewFilter);
//指定在spring配置的sessionFactory
openSessionInViewFilterRegistration.setInitParameter("sessionFactoryBeanName", "sessionFactory");
//singleSession默认为true,若设为false则等于没用OpenSessionInView
openSessionInViewFilterRegistration.setInitParameter("singleSession", "true");
openSessionInViewFilterRegistration.addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE), false, "/"); ServerParameter params = ServerParameter.getInstance();
DBMananger.loadEnv();
if(DBMananger.connDB()) { // 数据库连接成功,再载入APP配置
params.addAttribute("connDBSataus", true);
/*
* spring mvc 外的配置 AppConfig类
*/
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(AppConfig.class);
servletContext.addListener(new ContextLoaderListener(rootContext)); } /*
* spring-mvc 上下文
*/
AnnotationConfigWebApplicationContext springMvcContext = new AnnotationConfigWebApplicationContext();
// springMvcContext.register(MvcConfig.class); /*
* DispatcherServlet
*/
DispatcherServlet dispatcherServlet = new DispatcherServlet(springMvcContext);
ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcherServlet", dispatcherServlet);
dynamic.setLoadOnStartup(1);
dynamic.addMapping("/"); /*
* CharacterEncodingFilter: 解决中文乱码问题
*/
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("utf-8");
FilterRegistration characterEncodingfilterRegistration =
servletContext.addFilter("characterEncodingFilter", characterEncodingFilter);
characterEncodingfilterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
} }

MvcConfig 配置如下:

public class MvcConfig extends WebMvcConfigurationSupport {

    private static final Logger logger = LogManager.getLogger(MvcConfig.class);

    /**
* 注册视图处理器
* @return
*/
@Bean
public ViewResolver viewResolver() {
logger.info("注册视图处理器-------->ViewResolver");
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
} /**
* 资源访问处理器
* 可以在jsp中使用/images/**的方式访问/images/下的内容
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
logger.info("资源访问处理器-------->addResourceHandlers");
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/")
.resourceChain(true).addResolver(
new VersionResourceResolver().addContentVersionStrategy("/**"));
}
}

结果出现No mapping found for HTTP request with URI警告,访问静态资源时为404错误。

经调试发现,在MvcConfig类中加入下面Bean,问题解决

    @Bean
public HandlerMapping resourceHandlerMapping() {
logger.info("HandlerMapping");
return super.resourceHandlerMapping();
}

为什么要显式声明该Bean,尚未得知。

另外,如果在MvcConfig类中加注解,@Configuration,在WebInitializer类中配置

        AnnotationConfigWebApplicationContext springMvcContext = new AnnotationConfigWebApplicationContext();
springMvcContext.register(MvcConfig.class);

将会导致MvcConfig加载两次,可以注释掉其中一边。

												

SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI(转)的更多相关文章

  1. spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js...

    问题:spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js... web.x ...

  2. springmvc No mapping found for HTTP request with URI in Dispatc

    springmvc No mapping found for HTTP request with URI in Dispatc 博客分类: Java Web springmvcspring MVCNo ...

  3. SpringMvc出现No mapping found for HTTP request with URI的终极解决办法

    No mapping found for HTTP request with URI 出现这个问题的原因是在web.xml中配置错了,如: <servlet> <servlet-na ...

  4. 相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘springmvc’解决方法

    首先一点,WebRoot目录下的文件是都可以通过浏览器输入路径,直接读取到的 例如这样: 而WebRoot下面WEB-INF是无法浏览器输入路径直接读取的. 因为是受保护的. 如果jsp读取一个图片的 ...

  5. org.springframework.web.servlet.PageNotFound No mapping found for HTTP request with URI [/AssetRepair/assetRepairController/test.do] in DispatcherServlet with name 'assetrepair'

    web.xml文件配置: xxx-servlet.xml 我们可以发现DispatcherServlet会处理"jsp"后缀的请求;而模型视图后缀也是jsp的 如果这样配置会报以下 ...

  6. Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决--转载

    原文地址:http://www.programgo.com/article/96083031845/ 最近项目中使用到Spring3,在感叹Spring3注解配置清爽的同时竟然出现了这个不和谐的事情, ...

  7. No mapping found for HTTP request with URI [/user/login.do] in DispatcherServlet with name 'dispatcher'错误

    1.警告的相关信息 七月 24, 2017 3:53:04 下午 org.springframework.web.servlet.DispatcherServlet noHandlerFound警告: ...

  8. <context:annotation-config/>和<mvc:annotation-driven/>及解决No mapping found for HTTP request with URI [/role/getRole] in DispatcherServlet with name 'springmvc-config'

    1:什么时候使用<context:annotation-config> 当你使用@Autowired,@Required,@Resource,@PostConstruct,@PreDest ...

  9. org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI

    在重启项目中会遇到[org.springframework.web.servlet.PageNotFound] - No mapping found for HTTP request with URI ...

随机推荐

  1. OAuth的MVC实现(微软)

    LoginController中: 第三方登陆 public ActionResult LogOn() { string liveUrl = string.Format( "https:// ...

  2. Lintcode9-Fizz Buzz-Easy

    Fizz Buzz Given number n. Print number from 1 to n. But: when number is divided by 3, print "fi ...

  3. HDU 3400 Line belt (三分套三分)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=3400 题意: 有两条带子ab和cd,在ab上的速度为p,在cd上的速度为q,在其它地方的速度为r.现 ...

  4. python学习 day018打卡 反射

    本节主要内容: 1.isinstance,type,issubclass 2.区分函数和方法 3.反射(重点) 一.isinstance,type,issubclass issubclass():判断 ...

  5. python学习 day05打卡

    今天可变学习的主要内容是 : 本节主要内容: 1.字典的简单介绍 2.字典增删改查和其他操作 3.字典的嵌套 一.字典的简单介绍 字典(dict)是pytho中唯一的一个映射类型.它是以{}括起来的键 ...

  6. Android CPU耗电量测试

    Android CPU耗电量测试 在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu.内存.流量.电量等.简单介绍下电量测试中的cpu耗电. 影响耗电的因素 C ...

  7. echo -n 和echo -e 参数意义

    echo -n 不换行输出 $echo -n "123" $echo "456" 1 2 最终输出 123456 而不是 123 456 1 2 3 4 5 6 ...

  8. 使用ajax判断登录用户名

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx. ...

  9. WebAPI使用Token进行验证

    1.需要用到的包  可以先敲代码   发现没有包在添加 2.在项目根目录下Web层添加“Startup”类   这个是Token的配置 3.在WebAPI层添加WebApiConfig类  也是Tok ...

  10. java类加载器和双亲委派模型

    一. 类加载器 ClassLoader即常说的类加载器,其功能是用于从Class文件加载所需的类,主要场景用于热部署.代码热替换等场景. 系统提供3种的类加载器:Bootstrap ClassLoad ...