如何使我的网址只有" localhost:8080 / *"?

时间:2015-07-08 21:02:20

标签: java spring maven spring-mvc

我刚开始给Spring MVC看一看,所以我真的不知道我在做什么。因此,我开始在youtube上关注一系列tutorials。我一步一步地跟着他们,只是因为我使用STS而不是og Eclipse,但我把项目设置得像tut所以我不明白为什么它会重要。

最后我们制作一个index.jsp页面,重新启动服务器,然后导航到localhost:8080/index.html,这就是我的问题"开始。我必须使用localhost:8080/test/index.html以避免404错误。

我认为答案有点显而易见,但我不清楚为什么我的不同之处,即使我遵循它,名字一边,确切地说。

如何将我的网址设为localhost:8080/*?我不想包含/test/

pom.xml的开头:

  <modelVersion>4.0.0</modelVersion>
  <groupId>my.name.spring.test</groupId>
  <artifactId>blog-aggregator</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

的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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>blog-aggregator</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>*.json</url-pattern>
        <url-pattern>*.xml</url-pattern>     
    </servlet-mapping>
</web-app>

IndexController.java:

@Controller
public class IndexController {

    @RequestMapping("/index")
    public String index() {
        return "/WEB-INF/jsp/index.jsp";
    }
}

调度-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"
    xmlns:context="http://www.springframework.org/schema/context"
    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-4.1.xsd">

    <context:component-scan base-package="wilk.robert.spring.test.controller" />
</beans>

我猜它与我的基础包有关,但这似乎限制了我的包装可以;这听起来不对(记得我一无所知!)。

如果有任何重要代码丢失,我会立即添加。

2 个答案:

答案 0 :(得分:1)

将您的战争重命名为ROOT.war然后再部署

  

如果webapp名为root.war,或者该目录名为root /,则Jetty会在/ context上部署它。

jetty link

将下一行添加到pom.xml以重命名war文件:

<build>
  <finalName>ROOT</finalName>
</build>

如果您使用的是jetty插件,请修改您的插件配置,如下面的代码:

 <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.22</version>
                <configuration>
                    <contextPath>/</contextPath>                     
                </configuration>
                ...
            </plugin>

答案 1 :(得分:1)

您需要将您的webapp设为ROOT应用。最简单的方法是将您的war文件命名为ROOT.war或将您的爆炸webapp目录命名并重命名为ROOT

${jetty.home}/webapps/ROOT