『壹』 我SpringMVC為什麼不能訪問Controller
不能訪問jsp是你沒在default中配置。其它方法思路1 寫filter 提前對jsp後綴過濾轉發2 改寫DispatcherServlet的doDispatch方法(迫不得已) 你看看Spring的DispatcherServlet的源碼就會明白。doDispatch首先會調用getHandler找相應的controller, 如果找不到會拋異常, 一般jsp的文件也不會在controller中映射的, 是肯定找不到的。如果不改寫的話第一關都過不了。
『貳』 C# mvc項目開發碰到問題,訪問方法訪問不到
一:查看一下BaseController有沒有繼承Controller。
二:看一下你的路由配置(很有可能是這個造成的)
三:還有可能是你項目沒有生成一下:生成項目試試
『叄』 springmvc工程啟動成功 什麼也訪問不了
在某些情況下,有可能你會有這種需求:在Spring/SpringMVC項目中,當Spring/SpringMVC啟動完成後,你需要執行一個方法來完成某些事件(比如創建網站地圖,比如從訂閱Redis伺服器等),這個時候,可以使用Tomcat/Servlet容器提供的事件回調機制來完成,但是這樣有個問題是:無法使用Spring提供的Annotation,解決方法是:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.storezhang.web;
import com.storezhang.util.TimeUtils;
import com.storezhang.video.util.SiteMapUtils;
import java.util.Timer;
import java.util.TimerTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Service;
/**
* 啟動監聽器
*
* @author Storezhang
*/
@Service
public class StartupListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private SiteMapUtils sites;
@Override
public void onApplicationEvent(ContextRefreshedEvent evt) {
if (evt.getApplicationContext().getParent() == null) {
createSitemap();
}
}
private void createSitemap() {
Timer timer = new Timer("createSitemap", true);
timer.schele(new TimerTask() {
@Override
public void run() {
System.out.println("--->Create sitemap...");
sites.createSiteMap();
System.out.println("--->Success create sitemap...");
}
}, 1 * TimeUtils.MIN);
}
}
後續研究:
applicationontext和使用MVC之後的webApplicationontext會兩次調用上面的方法,如何區分這個兩種容器呢?
但是這個時候,會存在一個問題,在web 項目中(spring mvc),系統會存在兩個容器,一個是root application context ,另一個就是我們自己的 projectName-servlet context(作為root application context的子容器)。
這種情況下,就會造成onApplicationEvent方法被執行兩次。為了避免上面提到的問題,我們可以只在root application context初始化完成後調用邏輯代碼,其他的容器的初始化完成,則不做任何處理,修改後代碼
如下:
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if(event.getApplicationContext().getParent() == null){//root application context 沒有parent,他就是老大.
//需要執行的邏輯代碼,當spring容器初始化完成後就會執行該方法。
}
}
『肆』 在 asp.net mvc 中本地運行程序正常,放到伺服器上面之後,只能顯示首頁,其他任何頁面都不能訪問。
以下是本人個人意見,只供參考:
一,如果你的首頁是靜態的,而其他頁面是動態的,可能是ASP.NET的版本問題,在iis中右鍵單擊,選擇屬性>>ASP.NET>>ASP.NET版本,選擇一個高的版本。
二,如果首頁也是動態頁面,那就可以斷定是其他頁面的程序出錯了,可以看看其他頁面的錯誤提示,或是在vs中調試。
三,還有一種可能是你的程序在操作資料庫時出錯,比如說你的首頁沒有操作資料庫的代碼,而其他頁面都有,這個時候其他頁面也是顯示不出來的。
.建議你把問題說的詳細點,其他頁面無法訪問是怎樣提示的?
『伍』 spring mvc 經過controller跳轉後的頁面無法訪問靜態資源
因為我們配置攔截路徑的時候一般都是/,就是攔截所有資源,springMVC為了解決這個問題,在配置文件里可以使用resource標簽,在裡面配置靜態資源。具體使用可以查看文檔
『陸』 MVC WebApi在調試開發下訪問正常,部署到伺服器訪問不到介面
1、伺服器是否正常啟動(查看日誌)
2、伺服器的IP+PORT是否可以訪問,查看埠是否被佔用
3、若服務正常啟動,埠也可以訪問,查看你的訪問路徑是否正確(部署後的上下文webcontent是否與調試中一致)
4、訪問不到有很多原因,要看你面對的具體問題去排查,比如報錯信息之類~