2015-08-21 160 views
1

我看起来像一个菜鸟错误,但似乎我无法通过它。我正在学习JSP和Spring,并且在我的项目中遇到了404错误。 我正在使用一个tomcat 8.0本地服务器。我的目标是从“http://localhost:8080/TestSpring/vues/bonjour.jsp”去“http://localhost:8080/TestSpring/bonjour”有教程的帮助,但是这会导致一个404简单的JSP页面404错误

“调度员servlet.xml中”

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.0.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

<context:component-scan base-package="be.knoware" /> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/vues/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

<bean id="messageSource" 
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="classpath:messages" /> 
    <property name="defaultEncoding" value="ISO-8859-1" /> 
</bean> 

网络。 XML

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
    </context-param> 

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

    <!-- Declaration de la servlet de Spring et de son mapping --> 
    <servlet> 
     <servlet-name>servlet-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>servlet-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

bonjour.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false" 
    pageEncoding="ISO-8859-1"%> 
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <title><spring:message code="titre.bonjour"/> ${personne}</title> 
    </head> 
    <body> 
     <spring:message code="libelle.bonjour.lemonde" arguments="${personne}"/> 
    </body> 
</html> 

BonjourController.java

package controller; 

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

@Controller 
@RequestMapping("/bonjour") 

public class BonjourController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String afficherBonjour(final ModelMap pModel){ 
     pModel.addAttribute("personne","Jim"); 
     return "bonjour"; 
    } 
} 

如果它可能会帮助,该项目。

enter image description here

感谢提前:)

+0

是您的应用程序成功地部署在服务器? –

+0

@Subodh是的,我想是的(如果这是你的意思,部署[链接](http://imgur.com/AOrBi8l)),并有我的服务器启动时的控制台文本,我尝试连接到URL 。 [链接](http://pastebin.com/zvXLQfn7) – Erunayc

+0

在日志中会清楚地显示项目是否已部署 –

回答

1

你可以做一些措施,如果有一些部署问题或服务器问题

  • 清理并生成项目,并复制战争文件中您的服务器
  • 在更新war文件之前,您必须关闭tomcat或Server。
  • 启动服务器和打开URL和检查战争提取自动或不,如果是的话没有问题的服务器。
  • 检查URL和日志文件以获得更好的保证。 乐意帮助
+0

非常感谢你,我发现如何检查部署,它实际上已部署:) – Erunayc

1

以及我在评论中发现,他们如果您的应用程序正在正常与否部署,因为你的web.xml看起来不那么有效的点quessing。

i) 只有当您想要将全局应用程序上下文传递给所有servlet时才会使用此类配置,就像您要加载spring-context两次一样。 你可以找到在here

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
    </context-param> 

所以,如果你不想通过一个全球性的appContext,然后从你的web.xml文件中删除以下行的详细信息

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

II)

在servlet映射将URL格式从/更改为/ * 所以它会是这样的:

<servlet-mapping> 
     <servlet-name>servlet-dispatcher</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

iii) 在您的调度程序servlet中。XML添加软件包,其中控制器是 原因它不是由弹簧

<context:component-scan base-package="controller" /> 
1

被处理以基于XML的MultiActionController,必须配置该方法名称解析器(InternalPathMethodNameResolver,PropertiesMethodNameResolver或使用ParameterMethodNameResolver)来映射的URL到特定的方法名称。

首先,您可以尝试将Controller Controller添加到dispatcher-servlet.xml中;

<!-- Register the bean --> 
<bean class="yourPackage.controller.BonjourController " /> 

如果它不工作尝试ViewResolvers。

0

所以,最后这是我的一个误解。事实上,我在我的dispatcher-servlet.xml中使用了错误的base-package ......至少这篇文章教会了我在J2E中的一些良好习惯以及如何使用cfg tomcat!

无论如何,THX您的时间:)