Испытание Spring 3 MVC, Получение ошибки страницы - PullRequest
2 голосов
/ 25 января 2010

Попытка настроить Spring 3 MVC, вот что я сделал до сих пор:

Я добавил все библиотеки Spring 3.0 в свой проект netbeans.

Мой web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <servlet>
        <servlet-name>WebApplication1</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>WebApplication1</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>    
</web-app>

Затем я создал WebAppliation1-servlet.xml, также в моей папке / web-inf:

<?xml version="1.0" encoding="UTF-8"?>
<!--
 - DispatcherServlet application context for PetClinic's web tier.
-->
<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" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:oxm="http://www.springframework.org/schema/oxm"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">

 <!--
  - The controllers are autodetected POJOs labeled with the @Controller annotation.
 -->
 <context:component-scan base-package="org.springframework.Hi"/>

 <!--
  - The form-based controllers within this application provide @RequestMapping
  - annotations at the type level for path mapping URLs and @RequestMapping
  - at the method level for request type mappings (e.g., GET and POST).
  - In contrast, ClinicController - which is not form-based - provides
  - @RequestMapping only at the method level for path mapping URLs.
  -
  - DefaultAnnotationHandlerMapping is driven by these annotations and is
  - enabled by default with Java 5+.
 -->



 <!--
  - This bean resolves specific types of exceptions to corresponding logical
  - view names for error views. The default behaviour of DispatcherServlet
  - is to propagate all exceptions to the servlet container: this will happen
  - here with all other types of exceptions.
 -->
 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  <property name="exceptionMappings">
   <props>
    <prop key="org.springframework.web.servlet.PageNotFound">pageNotFound</prop>
    <prop key="org.springframework.dao.DataAccessException">dataAccessFailure</prop>
    <prop key="org.springframework.transaction.TransactionException">dataAccessFailure</prop>
   </props>
  </property>
 </bean>


 <!--
  - The BeanNameViewResolver is used to pick up the visits view name (below).
  - It has the order property set to 2, which means that this will
  - be the first view resolver to be used after the delegating content
  - negotiating view resolver.
  -->
 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="1"/>
 <!--

  - This bean configures the 'prefix' and 'suffix' properties of
  - InternalResourceViewResolver, which resolves logical view names
  - returned by Controllers. For example, a logical view name of "vets"
  - will be mapped to "/WEB-INF/jsp/vets.jsp".
 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/"
   p:suffix=".jsp" p:order="2"/>



</beans>

Затем я создал простой файл welcome.jsp в папке /WEB-INF/jsp/welcome.jsp

Затем я создал пакет:

org.springframework.Hi

И я создал файл TestController.java:

упаковка org.springframework.Hi;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class TestController {


    @RequestMapping("/")
    public String welcomeHandler(){
        return "welcome";
    }

}

Я хотел, чтобы это работало без каких-либо расширений файлов, поэтому мне не нужно заканчивать свои URL-адреса xxx.htm и т. Д.

Поэтому, когда я запускаю проект netbeans, я получаю ошибку:

type Status report

message Servlet WebApplication1 is not available

description The requested resource (Servlet WebApplication1 is not

доступно) недоступно.

Что именно мне здесь не хватает?

Журналы Tomcat

Спасибо за отзыв

Мои логи tomcat показывают это:

SEVERE: Servlet /WebApplication1 threw load() exception
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        at org.springframework.web.servlet.DispatcherServlet.<clinit>(DispatcherServlet.java:207)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

Ответы [ 2 ]

4 голосов
/ 25 января 2010

Я предполагаю, что указанное вами сообщение об ошибке было сообщением об ошибке, которое браузер видит при попытке доступа к приложению. Это потому, что он не был развернут должным образом.

Вам нужно просмотреть журналы запуска веб-сервера, которые дадут вам гораздо больше информации о том, почему он не развернут.

edit: ОК, это очень помогает ... вам нужно добавить Apache Commons Logging в ваш путь к классам.

0 голосов
/ 05 октября 2010

Раньше я сталкивался с подобной проблемой ... за исключением того, что это происходило только при попытке запустить приложение Spring Web MVC через IDS STS (версия 2.3.2). Однако, если я упаковал как WAR и развернул его на работающем экземпляре tcServer или даже Tomcat, приложение работало просто отлично.

Я закончил тем, что добавил регистрацию общего доступа и некоторые другие JAR-файлы в конфигурацию запуска сервера в STS IDE в разделе «Записи пользователя» на вкладке «Classpath». Это решило мою проблему. Почему некоторые JAR-файлы не добавляются к зависимости модуля Java EE при работе в STS, я до сих пор не понимаю.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...