HTTP状态404 - / FitnessTracker / delete / 1

时间:2017-01-01 16:16:09

标签: spring spring-mvc http-status-code-404

我正在开发 Spring MVC + Hibernate + JSP 示例。在这个例子中,我开发了下面的屏幕和删除按钮,我想删除填充的记录。

enter image description here

当我点击删除链接时,它会显示HTTP状态404 - / FitnessTracker / delete / 1。我真的不明白这里有什么问题。

MinutesController.java

@Controller
public class MinutesController {

    @Autowired
    private ExerciseService exerciseService;

    @RequestMapping(value = "/addMinutes",  method = RequestMethod.GET)
    public String getMinutes(@ModelAttribute ("exercise") Exercise exercise, ModelMap model) {
        List<Exercise> exercises = exerciseService.findAll();
        model.addAttribute("exercises", exercises);

        return "addMinutes";
    }

    @RequestMapping(value = "/addMinutes",  method = RequestMethod.POST)
    public String addMinutes(@Valid @ModelAttribute ("exercise") Exercise exercise, BindingResult result, ModelMap model ) {

        // check if there are any errors
        if(result.hasErrors()) {
            return "addMinutes";
        }

        // save the new Exercise
        exerciseService.save(exercise);

        // return all saved exercises
        List<Exercise> exercises = exerciseService.findAll();
        model.addAttribute("exercises", exercises);

        return "addMinutes";
    }

    @RequestMapping(value = "/activities", method = RequestMethod.GET)
    public @ResponseBody List<Activity> findAllActivities() {
        return exerciseService.findAllActivities();
    }

    @RequestMapping(value = "/delete/{exerciseId}",method = RequestMethod.GET)
    public String deleteActivity(@PathVariable("exerciseId") Long exerciseId) {

        exerciseService.deleteExercise(exerciseId);

        return "redirect:/activities";
    }
}

addMinutes.jsp

        <form:form commandName="exercise">
            <form:errors path="*" cssClass="errorblock" element="div" />

                <h4>View All Exercises</h4>
                <table align="left" border="1" cellpadding="10">
                    <tr>
                        <th><b>Minutes</b></th>
                        <th><b>Activity</b></th>
                        <th><b>Delete</b></th>
                    </tr>
                    <c:forEach var="exercise" items="${exercises}">
                        <tr>
                            <td>${exercise.minutes}</td>
                            <td>${exercise.activity}</td>
                            <td><a href="<c:url value='/delete/${exercise.exerciseId}' />" >Delete</a></td>
                        </tr>
                    </c:forEach>
                </table>

        </form:form>

enter image description here

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <servlet>
        <servlet-name>fitTrackerServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/servlet-config.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>fitTrackerServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>fitTrackerServlet</servlet-name>
        <url-pattern>/pdfs/**</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>fitTrackerServlet</servlet-name>
        <url-pattern>/images/**</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>fitTrackerServlet</servlet-name>
        <url-pattern>*.json</url-pattern>
    </servlet-mapping>

    <display-name>Archetype Created Web Application</display-name>
</web-app>

servlet的config.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        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/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <import resource="classpath:spring/database.xml"/>
    <mvc:annotation-driven/>
    <context:annotation-config />

    <context:component-scan base-package="com.pluralsight"/>

    <!-- For Static Resources -->   
    <mvc:resources location="assets" mapping="/assets/**"/>
    <mvc:resources location="pdfs" mapping="/pdfs/**"/>


    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1" />
        <property name="contentNegotiationManager">
            <bean class="org.springframework.web.accept.ContentNegotiationManager">
                <constructor-arg>
                    <bean class="org.springframework.web.accept.PathExtensionContentNegotiationStrategy">
                        <constructor-arg>
                            <map>
                                <entry key="json" value="application/json" />
                                <entry key="xml" value="application/xml" />
                            </map>
                        </constructor-arg>
                    </bean>
                </constructor-arg>
            </bean>
        </property>

        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <constructor-arg>
                        <bean class="org.springframework.oxm.xstream.XStreamMarshaller">
                            <property name="autodetectAnnotations" value="true" />
                        </bean>
                    </constructor-arg>
                </bean>
            </list>
        </property>
    </bean>

    <mvc:interceptors>
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="language"/>
    </mvc:interceptors>

    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" p:defaultLocale="en"/>

    <bean id="messageSource" 
          class="org.springframework.context.support.ResourceBundleMessageSource" 
          p:basename="messages"></bean>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
          p:prefix="/WEB-INF/jsp/" 
          p:suffix=".jsp" p:order="2"/>

     <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"/>
</beans>

0 个答案:

没有答案