Servlet第一個(gè)項(xiàng)目的發(fā)布(入門)
創(chuàng)建發(fā)布web項(xiàng)目
具體步驟:
1.在開發(fā)工具中創(chuàng)建一個(gè)dynamic web project helloword
2.在webContent中創(chuàng)建index.html文件
3.發(fā)布web應(yīng)用到服務(wù)器,發(fā)布應(yīng)用有兩種方式:
方式1:手動(dòng)發(fā)布
(開發(fā)期間極少使用,項(xiàng)目向生產(chǎn)環(huán)境發(fā)布時(shí)使用)
將workspace中web項(xiàng)目下WebContent目錄中的文件復(fù)制到服務(wù)器webapps目錄下,并在此目錄 中創(chuàng)建新的helloword根目錄。
方式2:自動(dòng)發(fā)布
自動(dòng)將web應(yīng)用發(fā)布到web服務(wù)器下,需要在開發(fā)工具中集成tomcat進(jìn)來 ,他可以實(shí)現(xiàn)自動(dòng)發(fā)布,自動(dòng)更新到服務(wù)器
運(yùn)行helloword
打開瀏覽器訪問http:localhost:8080/ helloword/index.html
實(shí)例
在idea新建項(xiàng)目的WEB-INF目錄下
1.創(chuàng)建一個(gè)簡(jiǎn)單的登陸頁面login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="login"> 賬號(hào)<input type="text" name="account"> <br/> 密碼<input type="password" name="password"> <br/> <input type="submit" value="登錄"> </form> </body> </html>
2.編寫Servlet程序
package com.ff.firstWeb.servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /* servlet搭建 繼承HttpServlet 實(shí)現(xiàn) Servlet init service destroy 重寫父類方法 */ public class LoginServlet extends HttpServlet { /* 在客戶端第一次訪問LoginServlet時(shí)創(chuàng)建,服務(wù)器時(shí)創(chuàng)建 只被調(diào)用一次,只創(chuàng)建一個(gè)servlet對(duì)象是單實(shí)例的 */ public LoginServlet() { System.out.println("LoginServlet無參構(gòu)造方法"); } /* init(),初始化,在對(duì)象創(chuàng)建后,構(gòu)造方法執(zhí)行后,調(diào)用init方法,完成一些初始化操作 只執(zhí)行一次 如何沒有初始化操作,可以不用重寫init(),但是服務(wù)器仍然會(huì)調(diào)用init(),調(diào)用父類中 */ @Override public void init(ServletConfig config) throws ServletException { System.out.println("init"); System.out.println(config.getInitParameter("count")); } // 提供服務(wù)器,每次請(qǐng)求都會(huì)調(diào)用service @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("service"); } /* 在服務(wù)器關(guān)閉前,servlet銷毀之前調(diào)用, 只執(zhí)行一次 可以在此方法中完成一些最終操作:例如保存日志,數(shù)據(jù)備份 如何沒有最終操作,可以不用重寫destroy(),但是服務(wù)器仍然會(huì)調(diào)用destroy(),調(diào)用父類中的destory() */ @Override public void destroy() { System.out.println("destroy"); } }
修改web.xml中的配置
<?xml version="1.0" encoding="UTF-8"?> <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"> <!-- xml 可擴(kuò)展標(biāo)記語言,主要用于存儲(chǔ)數(shù)據(jù) web.xml 存儲(chǔ)web項(xiàng)目的配置信息,在服務(wù)器啟動(dòng)時(shí),由服務(wù)器讀取 --> <!--配置servlet--> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.ff.firstWeb.servlet.LoginServlet</servlet-class><!--反射機(jī)制可以根據(jù)類的地址動(dòng)態(tài)創(chuàng)建對(duì)象--> <!--配置初始化參數(shù)--> <init-param> <param-name>count</param-name> <param-value>10</param-value> </init-param> <load-on-startup>0</load-on-startup><!--值<0 第一次訪問時(shí)創(chuàng)建,>=0服務(wù)器啟動(dòng)時(shí)創(chuàng)--> </servlet> <!--給servlet配置一個(gè)訪問地址,映射地址--> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern><!--映射地址,以/開頭--> </servlet-mapping> <welcome-file-list> <welcome-file>demo.html</welcome-file> </welcome-file-list> </web-app>
運(yùn)行結(jié)果:
到此這篇關(guān)于Servlet第一個(gè)項(xiàng)目的發(fā)布(入門)的文章就介紹到這了,更多相關(guān)Servlet 項(xiàng)目發(fā)布內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- IntelliJ IDEA里找不到j(luò)avax.servlet的jar包的解決方法
- 解決java編譯錯(cuò)誤( 程序包javax.servlet不存在javax.servlet.*)
- java 出現(xiàn)問題javax.servlet.http.HttpServlet was not found解決方法
- 解決cannot be cast to javax.servlet.Filter 報(bào)錯(cuò)的問題
- 淺析javax.servlet.Servlet,ServletContext接口
- 帶你快速上手Servlet
- JavaWeb實(shí)戰(zhàn)之用Servlet+JDBC實(shí)現(xiàn)用戶登錄與注冊(cè)
- IDEA2021 tomcat10 servlet 較新版本踩坑問題
- JavaWeb中Servlet的深入講解
- Servlet實(shí)現(xiàn)文件的上傳與下載
- IDEA生成servlet程序的實(shí)現(xiàn)步驟
- 解決無法解析javax.servlet的方法
相關(guān)文章
MyEclipse設(shè)置Console輸出到文件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狹yEclipse設(shè)置Console輸出到文件的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07SpringBoot 在測(cè)試時(shí)如何指定包的掃描范圍
這篇文章主要介紹了SpringBoot 在測(cè)試時(shí)如何指定包的掃描范圍,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱)
這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08SpringBoot2零基礎(chǔ)到精通之JUnit 5與指標(biāo)監(jiān)控
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)JUnit 5與指標(biāo)監(jiān)控2022-03-03AsyncHttpClient的默認(rèn)配置源碼流程解讀
這篇文章主要為大家介紹了AsyncHttpClient的默認(rèn)配置源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置
本文主要介紹了springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09