因為學習的時候用的版本比較新,而網上的教程又全是老版本,所以出現了很多問題,總結以下,幫同樣初學的師傅們踩坑了。
廢話不多說:
1:
file->new->project新建一個普通java項目:
工程名可以隨意命名
2:
工程名上右鍵->add framework support:
在web application上打勾,點擊ok
3:
展開工程名->web->web-inf,在web-inf下新建兩個文件夾,分別是classes、lib:
4:
按下ctrl+alt+shift+s,調出project structure,
選到modules->paths,單選框選到use module xxxxx,將兩個路徑改為剛才創建的classes。
然后選到dependencies,點擊下面的+號,選擇jars or dirxxxxxxxx,選擇剛創建的lib目錄,讓選擇目錄用處的話,選擇jar direxxxxxxx,打上勾,點擊apply,ok
5:
將tomcat/lib目錄下的servlet-api.jar復制到我們創建的lib目錄里。
6:
點擊右上角小錘子旁邊的add configuration,點擊加號,選擇tomcat server->local。這里注意不要選成tomee的,兩者圖標一樣,但是不是一個東西。其他配置不變,點擊aplly上面的fix,application context可以隨意命名,建議一個/就可以。然后aplly,ok。
7:
改一改index.jsp中帶的title和end,運行一下,如果類似以下,那基本就ok了。
8:
在src里面新建一個java class,嘗試寫一個servlet:
這里也是與其他版本不同的地方,老版本都是import javax.servlet.xxxxx,這里是import jakarta.servlet.xxxxx,具體應該import的包,可以展開servlet-api.jar看到。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import jakarta.servlet.servletexception; import jakarta.servlet.annotation.webservlet; import jakarta.servlet.http.httpservlet; import jakarta.servlet.http.httpservletrequest; import jakarta.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; @webservlet (name = "login" ) public class login extends httpservlet { @override protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { response.setcontenttype( "text/html" ); printwriter out = response.getwriter(); out.println( "<!doctype html>" ); out.println( "<html>" ); out.println( " <head><title>login</title></head>" ); out.println( " <body>" ); out.print( " this is login page" ); out.print( this .getclass()); out.println( " </body>" ); out.println( "</html>" ); out.flush(); out.close(); } @override protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { response.setcontenttype( "text/html" ); printwriter out = response.getwriter(); out.println( "<!doctype html>" ); out.println( "<html>" ); out.println( " <head><title>login</title></head>" ); out.println( " <body>" ); out.print( " this is login page" ); out.print( this .getclass()); out.println( " </body>" ); out.println( "</html>" ); out.flush(); out.close(); } } |
然后修改web.xml文件,如下:
servlet
-name可以任意命名,只要上下兩個一致就可以,servlet-class應該與類名相同,url-pattern是與java class中的@webservlet(name=“xxxx”)的xxxx相同,這里的xxxx就是路徑。
此時編譯并運行,在地址欄輸入我們寫的url,就可以訪問到動態資源了:
到此這篇關于idea2021 tomcat10 servlet 較新版本踩坑問題的文章就介紹到這了,更多相關idea2021 tomcat servlet內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/qq_42851946/article/details/115712469