2012-08-03 43 views
1

我想知道是否有辦法啓用或禁用web.xml以外的servlet(或至少映射servlet)。我有多種服務器使用相同的web.xml(我無法改變這種情況),所以這就是爲什麼另一種啓用/禁用servlet的方式會很有用。以web.xml以外的方式啓用/禁用servlet

感謝, 張志賢

+0

你正在使用哪個應用服務器? – MaVRoSCy 2012-08-03 08:10:16

+0

我正在使用Tomcat 7 – Sandman 2012-08-03 08:11:47

回答

1

你可以使用@WebServlet註釋使用Servlet 3.0開始,不知道這是否會爲您的要求工作,請評論,如果這不是你想要

@WebServlet("/hello") 
public class HelloServlet extends HttpServlet { 
// code code code 
} 
+0

看起來很酷,很遺憾,使用Servlet 3.0還沒有選擇... – Sandman 2012-08-03 07:57:55

0
方式

據我所知,不存在程序化禁用其他部署描述符以外的其他servlet的情況。

,我會處理這一問題的方式如下:

-I將if語句中,我想控制訪問諸如我的每一個servlet的服務()方法添加:

if(MyCustomSecurity.isServletAccessible(request)){ 
    //here is your code that you have right now 
}else{ 
    //redirect request to an error page maybe 
} 

- 創建這種方法isServletAccessible()在MyCustomSecurity類將返回一個布爾值在天氣允許用戶acceess servlet或不

0

如果您使用的是Tomcat 7.x版/ Servlet的3.0,你可以通過編程添加一個servlet過濾器r動態啓用/禁用對某些servlet的訪問,而不觸及web.xml文件或應用程序代碼。

0

我只是創建一個Web過濾器,讀取某種配置,並傳遞或重定向特定的,配置的路徑。

另一種選擇是阻止安全層上的路徑,例如Spring Security(實際上它使用了上面描述的東西)。

0

什麼有關創建過濾(實現javax.servlet.Filter類),然後在xmlproperties文件,甚至在database,您可以添加的servlet用戶可以訪問或無法訪問的名字。

相關問題