使用IDEA创建一个Servlet应用程序
使用IDEA創(chuàng)建一個Servlet應(yīng)用程序
第一步:創(chuàng)建web應(yīng)用
選擇web application應(yīng)用,之后填寫項(xiàng)目名稱等。
第二步:項(xiàng)目配置
在WEB-INF目錄下創(chuàng)建兩個文件夾:classes和lib,其中classes是Servlet類和其他JAVA類必須存放的位置,類以下的目錄反映了類包的結(jié)構(gòu)。lib是Servlet應(yīng)用程序所需JAR文件要在這里部署。但是Servlet API的JAR文件不需要在這里部署,容器中已經(jīng)有了它的備份。
2.1 修改class文件的輸出目錄
選擇菜單File ---> Project Structure.. --->選擇modules ---->path選項(xiàng) 將class文件的輸出改為之前創(chuàng)建的classes目錄
2.2 修改jar文件的存儲
還是在modules菜單下,選擇Dependencies 選項(xiàng)卡 ---> 點(diǎn)擊右側(cè)的 “+”號,選擇“JARs or directories…”,選擇創(chuàng)建的lib目錄
目錄改為我們在WEB-INF下創(chuàng)建的lib目錄,選擇如下:
第三步:編寫Servlet程序
在src目錄下,創(chuàng)建一個servlet文件,其內(nèi)容如下:
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;@Overridepublic void init(ServletConfig servletConfig) throws ServletException {this.servletConfig = servletConfig;}@Overridepublic ServletConfig getServletConfig() {return servletConfig;}@Overridepublic void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {String servletName = servletConfig.getServletName();//網(wǎng)頁響應(yīng)類型,瀏覽器將其渲染為HTML格式response.setContentType("text/html");PrintWriter writer = response.getWriter();writer.println("<html><head></head>" + "<body> Hello from " + servletName + "</body></html>");}@Overridepublic String getServletInfo() {return "My Servlet";}@Overridepublic void destroy() {} }第四步:配置Tomcat
選擇Edit Configurations..
這里要注意JRE的路徑,不要選擇默認(rèn),要選擇安裝JRE的路徑,我在運(yùn)行的時候出現(xiàn)了1099端口被占用的情況,但是用netstat -ano|findstr 1099并沒有找到任務(wù)PID,百度后說是JRE的版本路徑要嚴(yán)格一致。
同時,Deployment標(biāo)簽下修改訪問的URL路徑。
參考:IDEA的Tomcat配置Web的項(xiàng)目創(chuàng)建以及Servlet簡單運(yùn)行
第五步:運(yùn)行程序
訪問localhost:8080/應(yīng)用名稱/servlet名
遇到的問題
啟動TomCat時,日志出現(xiàn)亂碼
百度了各種博客,修改了一大堆還是繼續(xù)亂碼,偶然間因?yàn)?099端口占用,去tomcat/bin目錄下啟動tomcat時,發(fā)現(xiàn)win10的命令行下也是亂碼情況,參考的博客,完美解決了問題:
解決最新版tomcat在window10下啟動可能出現(xiàn)啟動日志亂碼的情況
關(guān)于web.xml的錯誤
在第四步配置Tomcat后,我們訪問這個ServletTest的路徑變成了http://localhost:8080/my,這樣訪問的路徑是WEB-INF下的index.jsp文件,在web.xml中配置了servlet-mapping后,才能訪問對應(yīng)的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可以訪問對應(yīng)的servlet對象,調(diào)用service方法,瀏覽器應(yīng)該渲染出service方法中的HTML內(nèi)容。但是訪問時出現(xiàn)了錯誤 錯誤代碼500
中午睡了一覺起來,沒問題了。。。。。先記錄一下別的錯誤,如果下次再遇到,再記錄叭(」><)」
Servlet使用注解
使用注解WebServlet時,剛開始只是取代了web.xml中的和標(biāo)簽,運(yùn)行程序后404頁面,參考博客:Servlet使用注解配置URl提示404錯誤
在web.xml的標(biāo)簽中使用屬性metadate-complete="false"之后即可運(yùn)行成功。
<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 的頂層標(biāo)簽 有一個 metadata-complete 屬性,該屬性指定當(dāng)前的部署描述文件是否是完全的。如果設(shè)置為 true,則容器在部署時將只依賴部署描述文件,忽略所有的注解(同時也會跳過 web-fragment.xml 的掃描,亦即禁用可插性支持;如果不配置該屬性,或者將其設(shè)置為 false,則表示啟用注解支持(和可插性支持)。
至此,一個簡單:(的Servlet應(yīng)用終于調(diào)通遼。。。。
轉(zhuǎn)載于:https://www.cnblogs.com/zz-1226/p/11229616.html
總結(jié)
以上是生活随笔為你收集整理的使用IDEA创建一个Servlet应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习:卷积神经网络(convolut
- 下一篇: 6.0系统设备Xposed框架激活教程