并没有调用SpringMVC控制器,但编译过程似乎很好



在使用Spring MVC框架时,我尝试创建一个小的Java web项目。为了构建我的项目,我使用蚂蚁。编译过程似乎可以工作,但不幸的是,我的控制器类(和方法)从未被调用过。

这是我的解决方案文件。

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>HelpMe</display-name>
  <servlet>
      <servlet-name>mvc</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
      <servlet-name>mvc</servlet-name>
      <url-pattern>/test/</url-pattern>
   </servlet-mapping>
</web-app>

mvc servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   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-3.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">
   <context:component-scan base-package="com.please.help.me" />
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>
</beans>

控制器类:

package com.please.help.me;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController {
    @RequestMapping("/page1")
    public String showWelcomePage1() {
        System.out.println("show page 1...");
        return "page1";
    }
    @RequestMapping("/page2")
    public String showWelcomePage2() {
        System.out.println("show page 2...");
        return "page2";
    }
}

ant构建文件:(build.xml)

<project name="HelpMeProject" default="compile" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
    <description>
  Build file for not working project
  </description>
    <!-- set global properties for this build -->
    <property name="src" location="src" />
    <property name="build" location="build" />
    <property name="lib" location="lib" />
    <property name="classes" location="${build}WEB-INFclasses" />
    <path id="project-classpath">
        <fileset dir="${build}WEB-INFlib" includes="*.jar" />
        <fileset dir="${src}" />
    </path>
    <target name="compile" description="compile the source" >
        <delete dir="${lib}" />
        <delete dir="${build}" />
        <mkdir dir="${lib}" />
        <!-- Do ivy retrieve -->
        <ivy:retrieve pattern="${lib}/[type]/[artifact]-[revision].[ext]" />
        <!-- Create the build directory structure used by compile -->
        <mkdir dir="${build}" />
        <mkdir dir="${build}WEB-INFlib" />
        <mkdir dir="${classes}" />
        <copy todir="${build}WEB-INFlib">
            <fileset dir="${lib}jar" />
            <fileset dir="${lib}bundle" />
        </copy>
        <copy todir="${build}">
            <fileset dir="web" />
        </copy>
        <!-- Compile the java code from ${src} into ${build} -->
        <javac srcdir="${src}" destdir="${classes}" classpathref="project-classpath" debug="true" />
    </target>
</project>

最后是我的tomcat部署描述符:(helpme.xml)

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="c:..myPath..HelpMebuild"  path="/helpme">
</Context>

运行编译ant脚本后,一切似乎都很好。Tomcat按照它应该做的那样启动,但我调用哪个URL并不重要——控制器不会被触碰。这就是我尝试的:

  • localhost:8080/
  • localhost:8080/test
  • localhost:8080/test/page1
  • localhost:8080/page1

我寻找相似的话题,但没有找到解决那个问题的办法。也许你可以帮我。非常感谢。

在您的情况下,如果您在控制器中有任何请求映射为/test/,则

localhost:8080/test/  

它会起作用的。

如果你想要/test/之后的任何url,需要像一样工作

localhost:8080/test/page1

您需要在web.xml中将其映射为:

/test/* 

正如我所评论的。

在url/test/*中,*表示/test/

之后的任何东西

更改

<url-pattern>/test/</url-pattern>

<url-pattern>/</url-pattern>

那么localhost:8080/page1至少应该可以正常工作

这是一个maven项目吗?如果是的话,你能给我们看pom.xml吗?

大多数人使用Requestmapping"/"启动他们的网络应用程序

如果你想快速开始SpringMVC编程,没有垃圾或设置,请使用STS(Spring-tools suite),尽管有人给了我一段时间,因为我喜欢这个工具,说它附带了一个预设置的tomcat,因此减少了体验,尽管这是真的,但最终你需要接近如何手动部署到tomcat。

相关内容

  • 没有找到相关文章

最新更新