1

要求されたリソース () がブラウザに表示されず、何が間違っているのか理解できません。

これは私のapplicationContext-dispatcher.xmlです:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp"/>

</beans>

これは私のweb.xmlです:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext-main.xml
            /WEB-INF/applicationContext-hibernate.xml
            /WEB-INF/applicationContext-jms.xml
            /WEB-INF/applicationContext-i18n.xml
        </param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext-dispatcher.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>

</web-app>

これは、redirect.jsp です。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% response.sendRedirect("index.htm"); %>

また、index.jsp ページは WEB-INF/jsp の下にあります。

ブラウザーを開くと、Tomcat ant から生成された 404 エラー コードが表示され、リソースが利用できないというメッセージが表示されます。何が悪いのかわかりません。何か案は?

4

4 に答える 4

4

WEB-INFフォルダー内にあるリソースは、外部の世界 (この場合は JSP ファイル) からはアクセスできません。単純に URL にアクセスして JSP ファイルを表示することはできません。

たとえば、次の JSP があるとします。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

次に、次を使用してブラウザを単純にヒットすることはできません。

http://localhost:8080/project-name/WEb-INF/nameofpage.jsp

同じエラーがスローされます。ただし、WEB-INF フォルダー内のこれらのリソースにプログラムでアクセスできます。

次のコントローラーを作成します。

package your.apckage.name;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class SampleController {

    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public String sample() {
        return "index";
    }
}

spring -config ファイルに次の行を追加します。

<context:component-scan
    base-package="package name of the controller" />
于 2012-05-29T13:58:27.887 に答える
3

index.htm のコントローラー マッピングを定義しましたか? Spring はリクエストを index.jsp ビューに「自動的に」転送しません。index.htm URL を処理するコントローラーを定義する必要があります。

@Controller
public class IndexController {

    @RequestMapping("/index.htm")
    public String handleIndexGet() {
        return "index"; // forward to view index.jsp
    }

}
于 2012-05-29T14:08:47.080 に答える
1

そうじゃないかな

<% response.sendRedirect("index.jsp"); %>

また、リダイレクトを行っているindex.jspため、ブラウザからアクセスできるように WEB-INF の外部に存在する必要があります。

于 2012-05-29T13:41:50.420 に答える
0

一般に、URL マッピングに問題があると、要求されたリソースが見つからないというエラーが発生します。要求された URL がどの URL パターンとも一致しない場合、この例外がスローされます。

于 2012-05-29T13:40:21.640 に答える