404 - 请求的资源不可用。 (Spring的MVC)

时间:2013-11-23 15:05:38

标签: java spring spring-mvc tiles

我对Spring MVC视图解析器不太熟悉。我正在尝试从我的控制器返回一个JSP。 我的Controller方法正在正确执行,但在返回视图时,我收到404 -The requested resource is not available错误。

这是我的servlet-context.xml文件

中的条目
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <beans:property name="prefix" value="/WEB-INF/views/" />
  <beans:property name="suffix" value=".jsp" />
</beans:bean>

这就是我如何定义资源结构

webapp
  --WEB-INF
      --views
         --shop
           --common
             --cart
                myjsp.jsp

这就是我从控制器返回JSP视图的方法

private final static String MYVIEW="shop/common/cart/myjsp";
@RequestMapping(value={"/shop/myMethod.html"},  method = RequestMethod.GET)
     public String myMethod(HttpServletRequest request, Model model){
     return MYVIEW;
 }

这是我的应用主页网址

http://localhost:7777/my-shop/shop/

不知道我在做什么。

修改的 我们正在使用带有弹簧的Tiles并且已经看到了这些附加信息

<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  <beans:property name="viewClass">
    <beans:value>org.springframework.web.servlet.view.tiles2.TilesView</beans:value>               
  </beans:property>
</beans:bean>

<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
  <beans:property name="definitions">
    <beans:list>
      <beans:value>/WEB-INF/tiles/tiles-admin.xml</beans:value>
      <beans:value>/WEB-INF/tiles/tiles-shop.xml</beans:value>
    </beans:list>
  </beans:property>
</beans:bean>

不确定我如何添加其他视图解析器?

错误

请求的资源(/my-shop/WEB-INF/views/shop/common/cart/myjsp.jsp)不可用 我记下了一个更奇怪的事情,WEB-INF/views下的JSP很少可以访问,但是当我在同一个位置放置新的JSP时,它不起作用并给出相同的错误。

4 个答案:

答案 0 :(得分:2)

我可以帮助你抓住一些问题,我发现了难度

  1. 在web.xml中,在context-param
  2. 下配置servlet-context.xml的正确路径
  3. 在上下文中的servlet-context.xml中:component-scan base-package =“/ youcontrollerclass”/ - 检查您是否给出了正确的路径
  4. POM.xml中的依赖项文件
  5. 这是我的servlet-context.xml的一部分

        <context:component-scan base-package="mypath"/>
    
         <bean id="jspViewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />    
    

答案 1 :(得分:2)

仅供参考,如果您的视图出现错误,那么即使控制器/视图/ JSP文件存在,您也会获得404。尝试增加Spring日志记录级别或附加远程调试器。我上周遇到了同样的问题,404起初误导了。

答案 2 :(得分:1)

就我而言,Maven-&gt; Update项目解决了这个问题!我知道它相对无关紧要,但有一天它可能会有人!

答案 3 :(得分:0)

您正在尝试使用多个视图解析器;但是你没有指定订单。我猜这就是为什么它给404.试试这个:

注意:具有最高顺序的ViewResolver是链中的最后一个解析器。

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <beans:property name="prefix" value="/WEB-INF/views/" />
  <beans:property name="suffix" value=".jsp" />
  <beans:property name="order" value = "0" />
</beans:bean>


 <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  <beans:property name="viewClass">
    <beans:value>org.springframework.web.servlet.view.tiles2.TilesView</beans:value>               
  </beans:property>
<beans:property name="order" value = "1" />
</beans:bean>