好,我遇到了相当常见的错误: 警告:在DispatcherServlet中没有使用URI [/WEB-INF/jsp/index.jsp]的HTTP请求的映射,名称为“app” 我正在查看现有答案,我没有看到组件如何相互影响的真正好解释
警告:在DispatcherServlet中没有使用URI [/WEB-INF/jsp/index.jsp]的HTTP请求的映射,名称为“app”
我正在查看现有答案,我没有看到组件如何相互影响的真正好解释.看到我根据现有的答案无法解决我的问题,我希望有人可以详细的说明DispatcherServlet和Resolvers的功能.
在Eclipse开发中,我有以下结构:
/src/com/whiuk/philip/web/controller/IndexController.java /WebContent /WebContent/WEB-INF /WebContent/WEB-INF/web.xml /WebContent/WEB-INF/app-servlet.xml /WebContent/WEB-INF/jsp/index.jsp
Eclipse部署装配意味着它部署如下:
/src -> WEB-INF/classes /WebContent -> / /ivy.xml[*] -> WEB-INF/lib
我有一个web.xml文件定义了一个DispatcherServlet和映射到所有文件(/ *)
<servlet> <servlet-name>app</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
我有一个app-servlet.xml文件来扫描程序包并定义一个InternalResourceViewResolver:
<context:component-scan base-package="com.whiuk.philip.web" /> <mvc:annotation-driven /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
我有一个IndexController具有索引的RequestMapping:
@Controller public class IndexController { @RequestMapping(value = "/index", method = RequestMethod.GET) public ModelAndView index() { return new ModelAndView(); } }
日志显示注册:
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod INFO: Mapped "{[/index],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.whiuk.philip.web.controller.IndexController.index()
最后我有一个index.jsp文件.
有人可以解释错误配置是什么导致错误显示在顶部,如果可能的话,提供一个句子等等,DispatcherServlet,解决方案的目的以及它们如何进入控制器.
基本上发生的是,由于您将Spring的DispatcherServlet映射到/ *,因此每个请求都调用(这是可以的),但是即使请求被分派到JSP页面(/ WEB-INF / jsp / index.jsp),而不是容器默认的servlet被调用.我所知道的修复如下:
将其映射到默认的servlet路径/代替:
<servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
您上面看到的一个问题是,您的webapp根目录下的资源将不幸得到DispatcherServlet的处理,DispatcherServlet将不知道该怎么做,修复程序是register a default-servlet-handler this way:
<mvc:default-servlet-handler />