gpt4 book ai didi

netbeans - 请求的资源 () 在示例 spring mvc 应用程序中不可用

转载 作者:行者123 更新时间:2023-12-02 00:31:30 26 4
gpt4 key购买 nike

我是 Spring 的新蜜蜂。刚刚在 sprinv mvc 中启动我的示例应用程序。但是,我无法查看该页面,因为它显示“请求的资源 () 不可用”。无法弄清楚问题出在哪里。我正在粘贴下面的代码。

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
</web-app>

**

我的servlet.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean name="/index.html" class="mypackage.web.myController"/>

</beans>

**

我的 Controller .java

**

package mypackage.web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class myController implements Controller{
public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
String msg="Hello!!! I'm coming from Controller. You Catched me ";
ModelAndView mv = new ModelAndView("index");
mv.addObject("message",msg);
return mv;
}
}

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="i" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My First Application in Spring</title>
</head>

<body>
<p>Check Below</p>
<p>
<em>${message}</em>
</p>
</body>
</html>

最佳答案

它几乎配置正确,到目前为止做得很好 :-) 这里有几个小问题导致了您看到的问题。首先,bean 当前定义为小写 m。 :

<bean name="/index.html" class="mypackage.web.myController"/>

虽然这是允许的,但这不是常规的,因此如果不进行一些额外的配置,Spring 将无法找到正确的 bean。

此外,从问题中不清楚您使用的是哪个 URL,但它应该是某种形式的 http://localhost:8080/<project>/myIndex.html

公约有很好的总结here .

所以我们有 2 个选择……要么将类重命名为 MyController并另存为MyController.java或修改 ControllerClassNameHandlerMapping bean 像这样区分大小写:

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="caseSensitive" value="true" />
</bean>

此外,这不是问题的原因,但如果您使用 ControllerClassNameHandlerMapping 你可以省略 bean 名称,这样你就可以使用:

<bean class="mypackage.web.MyController"/>

我想最烦人的部分是 Web 应用程序部署没有错误。但是,如果您检查日志,就会发现一个明显的区别:

部署错误配置的 webapp:

04-Jul-2011 09:13:58 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5f0e7d: defining beans []; root of factory hierarchy
04-Jul-2011 09:13:58 org.springframework.web.servlet.FrameworkServlet initServletBean
INFO: FrameworkServlet 'my': initialization completed in 157 ms

部署正确配置的 webapp:

04-Jul-2011 09:15:33 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@de537: defining beans [org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping#0,viewResolver,mypackage.web.MyController#0]; root of factory hierarchy
04-Jul-2011 09:15:49 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/my*] onto handler 'mypackage.web.MyController#0'
04-Jul-2011 09:15:49 org.springframework.web.servlet.FrameworkServlet initServletBean
INFO: FrameworkServlet 'my': initialization completed in 296 ms

其次,一旦确定了映射,您可能会发现找不到 JSP。在我创建的示例中,我在 /WEB-INF/jsp 下添加了 View 所以我需要更新 my-servlet.xml 中的 prefix 属性至 <property name="prefix" value="/WEB-INF/jsp/"/> .但是,根据 View 的位置,您可能不需要这样做。

我个人发现 Spring 中基于注解的 MVC 方法更容易配置和遵循,因此我建议您阅读 REST in Spring 3: @MVC因为您可能会发现这更容易实现。

关于netbeans - 请求的资源 () 在示例 spring mvc 应用程序中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com