當前位置:網站首頁>淺談Servlet,看完老板就給加薪了

淺談Servlet,看完老板就給加薪了

2021-08-20 06:30:44 程序猿小碼農

1.軟件結構發展史:

①單機時代——桌面應用

  • 桌面應用俗稱單機應用,軟件所有數據都保存在電腦本地硬盤中。

  • 優點:易於使用,結構簡單。

  • 缺點:數據難以共享、安全性差、更新不及時。

  • 如word、eclipse等

②聯機時代(Client-Server模式)

  • Client/Server結構(C/S結構)指客戶端和服務器結構。

  • 優點:數據方便共享,安全性高。

  • 缺點:必須安裝客戶端,昇級與維護困難。

  • 如QQ、微信、支付寶等。

③互聯網時代(Browser-Server模式)

  • Browser-Server(B/S)模式指瀏覽器和服務器架構模式。

  • 優點:開發簡單,無需安裝客戶端,數據易於共享。

  • 缺點:相較於C/S模式,執行速度與用戶體驗相對較弱。

  • 如百度、淘寶、各種網站等。

2.B/S模式執行流程:

通過瀏覽器把數據發送給服務器,服務器生成對應的Html代碼並返回給瀏覽器,瀏覽器對其解釋後顯示給用戶。

3.請求和響應:

  • 從瀏覽器發送給服務器的數據包稱為“請求(Request)”。

  • 從服務器返回給瀏覽器的結果稱為“響應(Response)”。

4.J2EE:

  • J2EE(Java 2 Platform Enterprise Edition)指 “Java 2 企業版”。

  • 開發BS(Web)應用程序就是J2EE最核心的功能。

  • J2EE由13個應用模塊組成。

?5.Apache Tomcat:

  • Tomcat是Apache軟件基金會旗下一款免費的開源的Web應用服務器程序。

6.J2EE與Tomcat的關系:

  • J2EE是一組技術規範和指南,具體實現由軟件廠商决定。

  • Tomcat是J2EE Web(Servlet和JSP 2個模塊)標准的實現者。

  • J2SE是J2EE運行的基石,允許Tomcat離不開J2SE(JRE和JDK)。

7.Servlet:

  • Servlet(Server Applet)是服務器小程序,只要用於生成動態Web內容。

  • Servlet是J2EE最重要的組成部分。

?二、Servlet:


例:第一個Servlet

FirstServlet.java:


package com.servlet;



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 FirstServlet extends HttpServlet {



	// 重寫父類的該方法(參數1:請求,參數2:響應)

	@Override

	protected void service(HttpServletRequest request, HttpServletResponse response)

			throws ServletException, IOException {

		// 接收請求發來的參數

		String name = request.getParameter("name");

		String html = "hi," + name + "!<hr></br>";

		System.out.println("返回給瀏覽器的響應數據是:" + html);

		PrintWriter out = response.getWriter();

		out.println(html); // 將html發送回瀏覽器

	}

}


     
  • 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.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.

web.xml:


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

	<display-name>FirstServlet</display-name>

	<!-- 聲明Servlet -->

	<servlet>

		<!-- servlet的別名 -->

		<servlet-name>first</servlet-name>  <!-- 自定義即可。設置原因:1.使用別名更簡潔。2.servl的完整路徑是敏感信息,不該輕易暴露。所有賦予別名,通過別名綁定URL -->

		<servlet-class>com.servlet.FirstServlet</servlet-class>

	</servlet>



	<!-- 將Servlet和URL綁定 ,注意name要相同 -->

	<servlet-mapping>

		<servlet-name>first</servlet-name>

		<url-pattern>/hi</url-pattern> <!-- 訪問時不是直接訪問servlet,而是通過設置的<url-pattern>的內容訪問 -->

	</servlet-mapping>

</web-app>


     
  • 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.

?圖解執行流程:

1.標准Java Web工程結構:

?

<table border=“1” cellpadding=“1” cellspacing=“1” style=“width:650px;”><caption>標准Java Web工程結構</caption><tbody><tr><td style=“background-color:#dddddd;”>組織結構</td><td style=“background-color:#dddddd;”>描述</td></tr><tr><td>tomcat安裝目錄/webapps/</td><td>Tomcat 應用根目錄,存放所有Web應用</td></tr><tr><td>/web應用目錄/</td><td>Java Web 應用目錄</td></tr><tr><td>/web應用目錄/index.html(或.jsp)</td><td>默認首頁</td></tr><tr><td>/WEB-INF</td><td>WEB應用的安全目錄,用於存放配置文件</td></tr><tr><td>/WEB-INF/web.xml</td><td>web.xml是"部署描述符文件",是該Web項目核心配置文件</td></tr><tr><td>/WEB-INF/classes</td><td>存放編譯後的class文件</td></tr><tr><td>/WEB-INF/lib</td><td>存放web應用依賴的jar文件</td></tr><tr><td>/META-INF/MANIFEST.MF</td><td>包含Web應用的版本信息</td></tr></tbody></table>

2.Servlet開發步驟:

①創建Servlet類,繼承HttpServlet類(Servlet與標准Java類的區別)。

②重寫service方法,編寫程序代碼。

③配置web.xml,綁定URL。

3.Servlet訪問方法:?

例:


package com.servlet;



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 SimpleServlet extends HttpServlet {

	@Override

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	PrintWriter out=response.getWriter();  //getWriter()是向瀏覽器輸出到數據流

	out.println("<a rel="nofollow" href='http://www.baidu.com'>baidu</a>");  //向瀏覽器輸出希望顯示的內容



	}

} 


     
  • 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.

?web.xml:


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

	<display-name>FirstServlet</display-name>

	<!-- 聲明Servlet -->

	<servlet>

		<!-- servlet的別名 -->

		<servlet-name>simple</servlet-name> 

		<servlet-class>com.servlet.SimpleServlet</servlet-class>

	</servlet>



	<servlet-mapping>

		<servlet-name>simple</servlet-name>

		<url-pattern>/simple</url-pattern> 

	</servlet-mapping>

</web-app>


     
  • 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.

4.請求參數:

  • 請求參數是指瀏覽器通過請求向Tomcat提交的數據。

  • 請求參數通常是用戶輸入的數據,使Servlet進行處理。

  • 格式:參數1=值a&參數2=值b&參數3=值c…

  • 請求參數通過URL向服務器發送。

錶單如和與servlet連接? 通過<form>標簽的action屬性。

5.Servlet接收請求參數:

  • 接收單個參數:request.getParameter()

  • 接收多個同名參數(如複選框):request.getParameterValues()

例:

Student.html:


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

	<h1>學員信息登記錶

	<form action="/FirstServlet/simple">  <!-- http://localhost:8080 是默認指向,不用寫 -->

		姓名:<input name="name"><br /> 電話:<input name="mobile"><br />

		性別: <select name="sex" style="width: 100px; padding: 5px;">

			<option value="male"></option>

			<option value="female"></option>

		</select><br /> 

		特長: 

		<input type="checkbox" name="spec" value="English" />英語 

		<input type="checkbox" name="spec" value="Program" />編程

		<input type="checkbox" name="spec" value="Speech" />演講 

		<input type="checkbox" name="spec" value="Swim" />遊泳<br /> 

		<input type="submit" value="提交"><br />

	</form>

</body>

</html>


     
  • 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.
  • 45.
  • 46.
  • 47.

package com.servlet;

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 SimpleServlet extends HttpServlet {

@Override

protected void service(HttpServletRequest request, HttpServletResponse response)

		throws ServletException, IOException {

	String name = request.getParameter("name");

	String mobile = request.getParameter("mobile");

	String sex = request.getParameter("sex");

	String[] spec = request.getParameterValues("spec");

	PrintWriter out = response.getWriter(); // getWriter()是向瀏覽器輸出到數據流

	out.println("name:" + name + "");

	out.println("moblie:" + mobile + "");

	out.println("sex:" + sex + "");

	for (String n : spec) {

		out.println("<h2>spec:" + n + "</h2>");

	}

}

}




![](https://img-blog.csdnimg.cn/20210725195925181.gif)



### 6.Get和Post方法:



①Get方法是將數據通過在URL附加數據顯性向服務器發送數據。



*   http://localhost:8080/FirstServlet/sample?name=Isebal

*   錶單默認采用get方法



②Post方法是將數據存放在 "請求體" 中隱性向服務器發送數據,並不在URL中體現,我們也看不見。



*   http://localhost:8080/FirstServlet/sample

*   請求體:name=Isebal

*   更安全。



③修改錶單提交方式:在<form>標簽中添加 method=""



![](https://s2.51cto.com/images/20210820/1629411629709568.jpg)



![](https://s2.51cto.com/images/20210820/1629411630326523.jpg)



?地址欄不顯示數據了。



 注意service()是請求處理的核心方法,無論是get或post都會被service()方法處理。



?④可通過getMethod()方法獲取當前的提交方法。




     
  • 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.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.

package com.servlet;

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 SimpleServlet extends HttpServlet {

@Override

protected void service(HttpServletRequest request, HttpServletResponse response)

		throws ServletException, IOException {

	String method=request.getMethod();

	PrintWriter out = response.getWriter(); // getWriter()是向瀏覽器輸出到數據流

	out.println("method:" + method + "");

}

}




![](https://s2.51cto.com/images/20210820/1629411630349177.jpg)



⑤Servlet針對Get和Post方法提供了對應的方法處理:doGet()和doPost()。



方法參數格式如下:




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class RequestMethodServlet extends HttpServlet {

@Override

// 處理get請求

protected void doGet(HttpServletRequest request, HttpServletResponse response)

		throws ServletException, IOException {

	String name = request.getParameter("name");

	response.getWriter().println("" + name + "");

}



@Override

// 處理post請求

protected void doPost(HttpServletRequest request, HttpServletResponse response)

		throws ServletException, IOException {

	String name = request.getParameter("name");

	response.getWriter().println("" + name + "");

}

}


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

	<display-name>FirstServlet</display-name>

	<!-- 聲明Servlet -->

        <servlet>

		<!-- servlet的別名 -->

		<servlet-name>request_method</servlet-name> 

		<servlet-class>com.servlet.RequestMethodServlet</servlet-class>

	</servlet>



	<servlet-mapping>

		<servlet-name>request_method</servlet-name>

		<url-pattern>/request_method</url-pattern> 

	</servlet-mapping>

</web-app>


     
  • 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.

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8”>

<title>Insert title here</title>

</head>

<body>

學員信息登記錶

<form action="/FirstServlet/request_method" method="get">  

	姓名:<input name="name"/><br /> 

	<input type="submit" value="提交"><br />

總結

對於面試還是要好好准備的,尤其是有些問題還是很容易挖坑的,例如你為什麼離開現在的公司(你當然不應該抱怨現在的公司有哪些不好的地方,更多的應該錶明自己想要尋找更好的發展機會,自己的一些現實因素,比如對於我而言是現在應聘的公司離自己的家更近,又或者是自己工作到達了迷茫期,想跳出迷茫期等等)

image

需要面試題以及項目大綱的朋友點贊+收藏後, 點擊這裏免費獲取!誠意滿滿!!

Java面試精選題、架構實戰文檔: 傳送門

整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編~

你的支持,我的動力;祝各比特前程似錦,offer不斷!

版權聲明
本文為[程序猿小碼農]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2021/08/20210820063043712o.html

隨機推薦