servlet在使用前需要先注冊。書里看到過這句話,教程里也看到過,但是完全不知道怎么做又是什么意思。jsp既然也是servlet,寫jsp的時候就沒有注冊的事情,難道是jsp轉換成servlet時編譯器自動注冊了?
https://blog.csdn.net/baidu_37107022/article/details/72655107
看到這個博客里說的似乎不錯。但大致感覺就是注冊是在web.xml里面配置,但是大多數都是創建時自動注冊了,所以也就不用管了。
創建項目時這里選2.5,項目里就有web.xml文件,那new-servlet時,就自動在web.xml文件里注冊了。
如果這里選的是3.0或者以上,創建出來的項目不能自動注冊(因為項目里沒有web.xml文件。。。厲害了web項目怎么會沒有這個文件?難道需要手動創建?之前都沒有在意這個問題,也沒有遇到過)
按照教程里所說,這時候是可以通過注釋來注冊的額,但是我這里沒有web.xml,我怎么看注冊的情況呢?
博客里說有servlet類的代碼里有
@WebServlet(asyncSupported = true, urlPatterns = { “/Servlet002” })
只通過這一句就可以了嗎?web.xml里面沒有配置?
果然,2.5版本里,沒有這句注解代碼,但是web.xml里有配置:
<servlet>
<description></description>
<display-name>qw</display-name>
<servlet-name>qw</servlet-name>
<servlet-class>qw.qw</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>qw</servlet-name>
<url-pattern>/qw</url-pattern>
</servlet-mapping>
看來3.0版本是不需要web.xml里配置,只需要這句注解也能完成注冊。
ps:
3.0版本的注釋是通過勾選 Asynchronous Support,自動完成的。
但是有的eclipse版本是沒有這個選項的。
ps2:
https://jingyan.baidu.com/article/6c67b1d6bcc38e2787bb1e96.html
按照這個教程,3.0版本也可以自帶web.xml。但是通過勾選 Asynchronous Support完成注冊后,還是只有那句注釋,web.xml里沒有變化。
也就是說,2.5版本是通過web.xml里的配置完成servlet的注冊的,3.0版本是通過servlet代碼前的注釋完成注冊的。
ps3:
不對,注冊一定要在web.xml寫上相關配置才行,所以這個博客里3.0版本的注釋方法是錯的?
而且在myeclipse里,創建web項目時根本沒有 Dynamic web module version 的選擇。創建servlet時也沒有那個 Asynchronous Support選擇,也是自動就在web.xml里注冊了。
教程里說,這一步的信息,就已經是注冊了,eclipse里確實是沒有顯示這個信息。而且我的版本是myeclipse10.不知道其他版本是不是這樣。
所以,MyEclipse也可以通過直接新建servelt,完成自動的配置。Eclipse里不行。
不知道是不是eclipse里Dynamic web module version的3.0原因。
不過springboot里不需要配置都可以。