Spring MVC,tomcat url 404错误

时间:2015-03-04 21:16:57

标签: java spring-mvc tomcat

我遇到spring-mvc / tomcat的问题,更具体地说是Url 当我尝试执行时:http://localhost:8080/HelloWeb/index.html

  

警告:在DispatcherServlet中找不到带有URI [/HelloWeb/index.html]的HTTP请求的映射,其名称为' HelloWeb'

的HelloWeb-servlet.xml中:

<context:component-scan base-package="pl.solsoft.web"/>

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/pages"/>
        </bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value=""/>
    <property name="suffix" value=".ftl"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

StudentController:

@Controller
public class StudentController{
private static List<User> userList=new ArrayList<User>();
static {
    userList.add(new User("Bill", "Gates"));
    userList.add(new User("Kasia", "K"));
}
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index (@ModelAttribute("model") ModelMap model){
    model.addAttribute("userList", userList);
    return "index";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute("user") User user){
    if (null != user && null != user.getName()
            && null != user.getLastName() && !user.getName().isEmpty()
            && !user.getLastName().isEmpty()) {
        synchronized (userList) {
            userList.add(user);
        }
    }
    return "redirect:index.html";
}
}

的web.xml:

<display-name>HW</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>HelloWeb</servlet-name>
    <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>HelloWeb</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

感谢U提供的所有提示

4 个答案:

答案 0 :(得分:0)

如果您将.html添加到RequestMappings,例如,该怎么办? @RequestMapping(值=&#34; /index.html")

答案 1 :(得分:0)

在您的web.xml中,您已映射DispatcherServlet以处理与* .html匹配的请求。但是你的StudentController没有被映射来处理这样的请求。

修改@RequestMapping中的值以包含.html扩展名。

@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public String index (@ModelAttribute("model") ModelMap model){
   ......
   return "index";
}

@RequestMapping(value = "/add.html", method = RequestMethod.POST)
public String add(@ModelAttribute("user") User user){
   .....
   return "redirect:index.html";
}

现在尝试访问http://localhost:8080/HelloWeb/index.html

来访问您的网页

-----------编辑-----------------------------

验证Controller是否已被Spring初始化。为此,创建一个无参数构造函数并尝试将某些内容打印到控制台。

@Controller
public class StudentController{

       public StudentController(){
              System.out.println("Hey, I'm in StudentController");
       }

}

答案 2 :(得分:0)

我没看到<mvc:annotation-driven/> 在您的servlet配置中。你可以添加和检查。谢谢。

答案 3 :(得分:0)

如果您尝试将HTML文件部署为简单的静态文件,则应将其配置为此类。将此添加到您的调度程序servlet,确保您声明了正确的名称空间:

<mvc:resources mapping="*.html" location="/" />

您不需要控制器方法来提供此文件。如果您想在后端使用其他逻辑,则可以请求/index执行其操作,然后重定向到您的文件,或者只需将index.html转换为.jsp文件。现在,您的控制器很可能正在尝试查找名为index.html的JSP视图,该视图不存在。