servlet學習和總結
2、新建一個SevletHelloWord 類,繼承 HttpServlet 程式碼:
package servletTest1; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SevletHelloWord extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub // super.doGet(req, resp); System.out.print("get"); doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub // super.doPost(req, resp); resp.setCharacterEncoding("gbk");//防止編碼亂碼 PrintWriter out=resp.getWriter();//PrintWriter文字輸出 out.println("<html>"); out.println("<head><title>helloword</title></head>"); out.println("Servlet hello word!"); out.println("</html>"); out.close();//關閉 } }
3、修改web.xml(在webconten目錄裡面),用Text 格式開啟,不要用預設的xml格式 新增servlet訪問的選項xml程式碼
4、啟動tomcat 的Servers伺服器,記得要新增該專案<servlet> <servlet-name>servletHelloWord</servlet-name> <servlet-class>servletTest1.SevletHelloWord</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletHelloWord</servlet-name> <url-pattern>/helloWorld</url-pattern> </servlet-mapping>
5、開啟成功後,在瀏覽器輸入:http://localhost:8080/servletTest1/helloWorld,出現列印 說明成功了
說明:servlet啟動順序,輸入網址:http://localhost:8080/servletTest1/helloWorld,如圖
二、servlet的生命週期 簡單四步:servlet類載入-》例項化-》服務-》銷燬 下面只簡單說明,
public class LifeServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("service");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("service");
}
@Override
public void destroy() {
System.out.println("servlet銷燬");
}
@Override
public void init() throws ServletException {
System.out.println("servlet初始化");
}
}
執行後輸出:
其中初始化只會出現第一次, destroy方法在容器移除servlet 時執行,同樣只執行一次。這個方法會在所有的執行緒的service()方法執行完成或者超時後執行,呼叫這個方法後,容器不會再呼叫這個servlet的方法,也就是說容器不再把請求傳送給這個servlet。這個方法給servlet釋放佔用的資源的機會,通常用來執行一些清理任務。
三、客戶端跳轉跟伺服器端跳轉
1、在Servlet中獲取session,application 2、客戶端跳轉 :ersponse.sendRedirect("目標地址"); 3、伺服器跳轉:RequestDispatcher rd=request.getRequestDispatcher("目標地址"); 詳細方法,新建一個target.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>目標地址</h1>
request值:<%=request.getAttribute("requestKey") %><br/>
session值:<%=session.getAttribute("sessionKey") %><br/>
application值:<%=application.getAttribute("applicationKey") %><br/>
</body>
</html>
客戶端跳轉程式碼:
public class RedirectServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("requestKey", "request值");
HttpSession session=request.getSession(); // 獲取session
session.setAttribute("sessionKey", "session值");
ServletContext application=this.getServletContext(); // 獲取application
application.setAttribute("applicationKey", "application值");
response.sendRedirect("target.jsp"); // 客戶端跳轉/重定向
}
輸出:
服務端跳轉程式碼:
public class ForwardServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("requestKey", "request值");
HttpSession session=request.getSession(); // 獲取session
session.setAttribute("sessionKey", "session值");
ServletContext application=this.getServletContext(); // 獲取application
application.setAttribute("applicationKey", "application值");
RequestDispatcher rd=request.getRequestDispatcher("target.jsp");
rd.forward(request, response); // 伺服器調轉/轉發
}
}
輸出:區別:服務端就跳轉 能把request、session、application的值都傳過來, 但是客戶端不能把erquest的值傳過來,一般用服務端跳轉較多 主要參考java1234的servlet教程
相關推薦
servlet學習和總結
Servlet(Server Applet),全稱Java Servlet,未有中文譯文。是用Java編寫的伺服器端程式。其主要功能在於互動式地瀏覽和修改資料,生成動態Web內容。狹義的Servlet是指Java語言實現的一個介面,廣義的Servlet是指任何實現了這個S
vim 的各種用法,很實用哦,都是本人是在工作中學習和總結的
運維 列表 vim編輯 一個 .com 設置 windows ati 有意義 (一)初級個性化配置你的vim 1、vim是什麽? vim是Vi IMproved,是編輯器Vi的一個加強版,一個極其強大並符合IT工程師(程序員、運維)習慣的編輯器。如果你是一名職業的SE,那麽
jdk1.8學習、jdk1.9學習、jdk10.0學習和總結
font .... date des 什麽 普通 例子 span 由於 由於中文參考資料很少,參考鏈接: https://www.oschina.net/translate/109-new-features-in-jdk-10 http://chuansong.me/n
Java執行緒學習和總結(執行緒的概念)
執行緒的概念: 多執行緒允許在程式中併發執行多個指令流,每個指令流都稱為一個執行緒,彼此間互相獨立。它和程序一樣擁有獨立的執行控制,由作業系統負責排程,區別在於執行緒沒有獨立的儲存空間,而是和所屬程序中的其它執行緒共享一個儲存空間,這使得執行緒間的通訊遠較程序簡單。 具體到java記憶體模型,
Hbase基礎語法學習和總結
2018-06-12更新:HBase抽數過程中\t對資料插入Hive的影響。Ctrl + backspace 是刪除,單出的Backspace是無效的;Hbase中都是字串,沒有其他型別;List:列出所有表格;Scan tablename:瀏覽表,Hbase預設是儲存三個版
關於彈性盒模型學習和總結
面試被問到這個問題,覺得這個看過沒問題,結果還是 紙上得來終覺淺 看一遍理解肯定沒有試一試透徹,於是決定記錄一下====================================================================首先是定義彈性盒模型#wra
Servlet學習心得總結
1)概念:Java Servlet 是執行在 Web 伺服器或應用伺服器上的程式,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 伺服器上的資料庫或應用程式之間的中間層 2) Servlet 遵循的過程: Servlet 通過呼叫 init (
學習KNN算法體會和總結
整數 推斷 代碼 span k-d樹 基本 方式 必須 發現 k-d樹(k-dimensional樹的簡稱),是一種切割k維數據空間的數據結構。主要應用於多維空間重要數據的搜索(如:範圍搜索和近期鄰搜索)。 索引結構中相似性查詢有兩種主要的方
Servlet學習總結
方法 ip 地址 初始 獲取 htm get 客戶端 init 管理 1.什麽是servlet Servlet 是用來處理客戶端請求並產生動態網頁內容的 Java 類。Servlet 主要是用來處理或者是存儲 HTML 表單提交的數據,產生動態內容,在無狀態的 HTTP
JSP和Servlet學習筆記1 - 訪問配置
技術分享 exception print pack ping 分享 tdi 1.0 nds 1. 訪問WebContent目錄下的JSP文件 在WebContent中新建一個 test.jsp 文件 <%@ page language="java" co
Shell和Python學習教程總結
shell fff 人生巔峰 地址 mark 總結 技術分享 python 因此 博友們好,由於運維相關技術不斷發展,個人能力也不斷提高,日常積累的經驗不能及時更新到以往的博文中。因此,為了更好的幫助大家學習運維技術,特地針對Shell和Python腳本語言總結了文檔,此文
servlet學習(四)請求轉發和重定向
一、請求轉發和重定向兩者之間的區別 請求轉發:一次請求,位址列資訊不變。 重定向:兩次請求,位址列資訊會發生改變。 使用時機: 1.如果表單中有資料,而資料又比較重要,不能重複提交,建議使用重定向。 2.如果servlet接受後
Spark學習(柒)- Spark SQL擴充套件和總結
文章目錄 Spark SQL使用場景 Spark SQL載入資料 1) RDD DataFrame/Dataset 2) Local Cloud(HDFS/S3) DataFrame與SQL的對比
JavaWeb學習總結(二)——Tomcat伺服器學習和使用(一)
JavaWeb學習總結系列: 一、Tomcat伺服器埠的配置 Tomcat的所有配置都放在conf資料夾之中,裡面的server.xml檔案是配置的核心檔案。 如果想修改Tomcat伺服器的啟動埠,則可以在server.xml配置檔案中的Connector節
Servlet學習總結(10)監聽器
監聽器概念 Servlet監聽器是Servlet規範中定義的一種特殊類,用於監聽ServletContext、HttpSession和ServletRequest等域物件的建立與銷燬事件,以及監聽這些域物件中屬性發生修改的事件。 監聽物件: Servle
Linux bash總結(一) 基礎部分(適合初學者學習和非初學者參考)
歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能
Java Web 學習與總結(二)Servlet核心介面+Servlet3.0配置
Servlet3.0版本對Servlet配置進行了重大變革,Servlet類不需要再麻煩的去編輯web.xml檔案了,只需要在類上面進行註釋就可以了,獲得了 Java 社群的一片讚譽之聲,以下是新增的註解支援。 @WebServlet @WebServlet 用於將一個類宣告為 Servlet,該註解
幾周以來在學習和生活中的總結
今天是2018-11-24星期六,學校上課時間第12周 總結一下過去兩週在學習中的不足和收穫以及在生活中遇到的困惑 學習上 最近幾周在學習上收穫不太多,隨著這兩週課程科目和每門課程的作業不斷增加,分配在小組學習的時間相對較少,分配時間不均衡。 但是在過去幾周時間內為了
關於演算法學習的總結和感悟
時隔一年重讀《演算法導論》,去年讀到了二叉查詢樹就擱淺了,今年從頭撿起,希望能走的 更遠一些。算上大學時的資料結構與演算法課,今年可以算是第三波學習攻勢了。隨著學習的深入, 對演算法的學習漸漸有了些自己的看法和感悟。 一.為什麼學習演算法? 記得初學演算法時不明白為什
Linux rpm 命令引數使用詳解及強制安裝和忽略依賴 與 學習rpmbuild總結
轉載連結:http://blog.sina.com.cn/s/blog_5d867af101019b7i.htmlRPMRPM是RedHat Package Manager(RedHat軟體包管理工具)類似Windows裡面的“新增/刪除程式”rpm 執行安裝包二進位制包(B