簡體   English   中英

Tomcat使用Spring給出404錯誤?

[英]Tomcat giving 404 error with Spring?

我一直在通過此網站構建Spring webapp。 當我運行教程代碼時,該應用程序可以完美運行。 但是,當我運行代碼的適應版本時,出現以下錯誤:

在此處輸入圖片說明

我不知道為什么會這樣。 我已經有效地復制並粘貼了整個代碼庫,只是將數據更改為Campaign而不是Strategy。

這是我的配置類:

package com.bridge.campaignspring.config;

import java.util.Properties;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@ComponentScan("com.bridge.campaignspring")
@PropertySource("classpath:database.properties")
public class DatabaseConfig {

    private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
    private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
    private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
    private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";

    private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
    private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
    private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";

    @Resource
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
        dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
        dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
        dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
        return dataSource;
    }

    private Properties hibProperties() {
        Properties properties = new Properties();
        properties.put(PROPERTY_NAME_HIBERNATE_DIALECT, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
        properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
        return properties;
    }

    @Bean
    public HibernateTransactionManager transactionManager() {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource());
        sessionFactoryBean.setPackagesToScan(env.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
        sessionFactoryBean.setHibernateProperties(hibProperties());
        return sessionFactoryBean;
    }
}

我無法訪問已創建的任何已創建的.jsp。 我只看到404錯誤。 如果需要更多代碼來解決此問題,請詢問; 我可以張貼任何必要的信息。

編輯:這是我的CampaignController類:

package com.bridge.campaignspring.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.bridge.campaignspring.model.Campaign;
import com.bridge.campaignspring.service.CampaignService;

@Controller
@RequestMapping(value="/campaign")
public class CampaignController {

    @Autowired
    private CampaignService campaignService;

    @RequestMapping(value="/add", method=RequestMethod.GET)
    public ModelAndView addCampaignPage() {
        ModelAndView modelAndView = new ModelAndView("campaign-add");
        modelAndView.addObject("campaign", new Campaign());
        return modelAndView;
    }

    @RequestMapping(value="/add", method=RequestMethod.POST)
    public ModelAndView addingCampaign(@ModelAttribute Campaign campaign) {
        ModelAndView modelAndView = new ModelAndView("home");
        campaignService.addCampaign(campaign);
        String message = "Campaign was added sucessfully";
        modelAndView.addObject("message", message);
        return modelAndView;
    }

    @RequestMapping(value="/list")
    public ModelAndView listOfCampaigns() {
        ModelAndView modelAndView = new ModelAndView("campaign-list");
        List<Campaign> campaigns = campaignService.getCampaigns();
        modelAndView.addObject("campaigns", campaigns);
        return modelAndView;
    }

    @RequestMapping(value="/edit/{id}", method=RequestMethod.GET)
    public ModelAndView editCampaignPage(@PathVariable Integer id) {
        ModelAndView modelAndView = new ModelAndView("campaign-edit");
        Campaign campaign = campaignService.getCampaign(id);
        modelAndView.addObject("campaign", campaign);
        return modelAndView;
    }

    @RequestMapping(value="/edit/{id}", method=RequestMethod.POST)
    public ModelAndView editingCampaign(@ModelAttribute Campaign campaign, @PathVariable Integer id) {
        ModelAndView modelAndView = new ModelAndView("home");
        campaignService.updateCampaign(campaign);
        String message = "Campaign edited successfully";
        modelAndView.addObject("message", message);
        return modelAndView;
    }

    @RequestMapping(value="/delete/{id}", method=RequestMethod.GET)
    public ModelAndView deleteCampaign(@PathVariable Integer id) {
        ModelAndView modelAndView = new ModelAndView("home");
        campaignService.deleteCampaign(id);
        String message = "Campaign deleted successfully";
        modelAndView.addObject("message", message);
        return modelAndView;        
    }
}

您的網址應包含/campaign/add ,...

URL由@RequestMapping的注釋屬性定義

@Controller
@RequestMapping(value="/campaign")
public class CampaignController {

    @Autowired
    private CampaignService campaignService;

    @RequestMapping(value="/add", method=RequestMethod.GET)
    public ModelAndView addCampaignPage() {

不能完全確定發生了什么,但這可能是我的Tomcat配置中發生的事情。 我刪除了服務器,然后重新添加了它,然后它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM