[英]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.