選擇web application應用,以後填寫項目名稱等。html
在WEB-INF目錄下建立兩個文件夾:classes和lib,其中classes是Servlet類和其餘JAVA類必須存放的位置,類如下的目錄反映了類包的結構。lib是Servlet應用程序所需JAR文件要在這裏部署。可是Servlet API的JAR文件不須要在這裏部署,容器中已經有了它的備份。java
選擇菜單File ---> Project Structure.. --->選擇modules ---->path選項 將class文件的輸出改成以前建立的classes目錄web
仍是在modules菜單下,選擇Dependencies 選項卡 ---> 點擊右側的 「+」號,選擇「JARs or directories…」,選擇建立的lib目錄瀏覽器
目錄改成咱們在WEB-INF下建立的lib目錄,選擇以下:tomcat
在src目錄下,建立一個servlet文件,其內容以下:app
package app01a; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; import java.io.PrintWriter; @WebServlet(name = "MyServlet",urlPatterns = {"/my"}) public class MyServlet implements Servlet{ private transient ServletConfig servletConfig; @Override public void init(ServletConfig servletConfig) throws ServletException { this.servletConfig = servletConfig; } @Override public ServletConfig getServletConfig() { return servletConfig; } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { String servletName = servletConfig.getServletName(); //網頁響應類型,瀏覽器將其渲染爲HTML格式 response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head></head>" + "<body> Hello from " + servletName + "</body></html>"); } @Override public String getServletInfo() { return "My Servlet"; } @Override public void destroy() { } }
選擇Edit Configurations..jsp
這裏要注意JRE的路徑,不要選擇默認,要選擇安裝JRE的路徑,我在運行的時候出現了1099端口被佔用的狀況,可是用netstat -ano|findstr 1099並無找到任務PID,百度後說是JRE的版本路徑要嚴格一致。ide
同時,Deployment標籤下修改訪問的URL路徑。this
參考:IDEA的Tomcat配置Web的項目建立以及Servlet簡單運行url
訪問localhost:8080/應用名稱/servlet名
百度了各類博客,修改了一大堆仍是繼續亂碼,偶然間由於1099端口占用,去tomcat/bin目錄下啓動tomcat時,發現win10的命令行下也是亂碼狀況,參考的博客,完美解決了問題:
解決最新版tomcat在window10下啓動可能出現啓動日誌亂碼的狀況
在第四步配置Tomcat後,咱們訪問這個ServletTest的路徑變成了http://localhost:8080/my,這樣訪問的路徑是WEB-INF下的index.jsp文件,在web.xml中配置了servlet-mapping後,才能訪問對應的servlet對象
<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>app01a.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping>
訪問http://localhost:8080/my/test能夠訪問對應的servlet對象,調用service方法,瀏覽器應該渲染出service方法中的HTML內容。可是訪問時出現了錯誤 錯誤代碼500
中午睡了一覺起來,沒問題了。。。。。先記錄一下別的錯誤,若是下次再遇到,再記錄叭(」><)」
使用註解WebServlet時,剛開始只是取代了web.xml中的
在web.xml的
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete ="true">
緣由:
Servlet 3.0 的部署描述文件 web.xml 的頂層標籤
有一個 metadata-complete 屬性,該屬性指定當前的部署描述文件是不是徹底的。若是設置爲 true,則容器在部署時將只依賴部署描述文件,忽略全部的註解(同時也會跳過 web-fragment.xml 的掃描,亦即禁用可插性支持;若是不配置該屬性,或者將其設置爲 false,則表示啓用註解支持(和可插性支持)。
至此,一個簡單:(的Servlet應用終於調通遼。。。。