1、下載Tomcat
Tomcat官網下載:http://tomcat.apache.org/
要確保Tomcat與JDK版本對應,此文中採用的是Tomcatv8.0和JDK1.7
查看各版本對應:http://tomcat.apache.org/whichversion.html
2、建web項目
打開eclipse
File -> New -> Dynamic Web Project
-> 輸入Project name: MyServlet -> New Runtime… -> Apache Tomcat v8.0
-> Next->Browse -> 選擇Tomcat v8.0安裝目錄 -> 確定 -> Finish
-> Next -> Next -> Generate web.xml…前打鉤 -> Finish
3、建Servlet.java
src下新建package: servletTest
servletTest下新建: ServletServer.java
項目文件如下:
4.ServletServer.java
- package servletTest;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.net.URLDecoder;
-
- public class ServletServer extends HttpServlet {
-
- private static final long serialVersionUID = -8007568372864896315L;
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- request.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=utf-8");
- PrintWriter out = response.getWriter();
-
- BufferedReader bufferReader = request.getReader();
- StringBuffer buffer = new StringBuffer();
- String line = "";
- while ((line = bufferReader.readLine()) != null) {
- buffer.append(line);
- }
- String postData = buffer.toString();
- postData = URLDecoder.decode(postData, "utf-8");
- String[] params = postData.split("&");
-
- String id = null;
- String name = null;
-
- for (int index = 0; index < params.length; index = index + 1) {
- if (params[index].startsWith("id=")) {
- id = params[index].substring(params[index].indexOf("id=") + "id=".length());
- }
- if (params[index].startsWith("name=")) {
- name = params[index].substring(params[index].indexOf("name=") + "name=".length());
- }
- }
-
- if (!((null == id || id.isEmpty()) && (null == name || name.isEmpty()))) {
- String ret = "id爲" + id + ";name爲" + name;
- out.print(ret);
- out.flush();
- out.close();
- } else {
- out.print("無數據");
- out.flush();
- out.close();
- }
- }
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doPost(request, response);
- }
-
- }
|
5、web.xml配置
6、運行SercletServer.java
Eclipse會自動彈出一個瀏覽器,效果如圖:
7、HttpRequest
從網上隨便找一個HttpRequest來測試一下
- package httpTest;
-
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.io.UnsupportedEncodingException;
- import java.net.URL;
- import java.net.URLConnection;
- import java.net.URLEncoder;
-
- public class HttpRequest {
-
- public static void main(String[] args) throws UnsupportedEncodingException {
- String data="id=521&name=宋";
- data=URLEncoder.encode(data, "utf-8");
- String sr = HttpRequest.sendPost("http://localhost:8080/MyServlet/", data);
- System.out.println(sr);
- }
-
- /**
- * 向指定 URL 發送POST方法的請求
- *
- * @param url
- * 發送請求的 URL
- * @param param
- * 請求參數,請求參數應該是name1=value1&name2=value2 的形式。
- * @return 所代表遠程資源的響應結果
- */
- public static String sendPost(String url, String param) {
- PrintWriter out = null;
- BufferedReader in = null;
- String result = "";
- try {
- URL realUrl = new URL(url);
- // 打開和URL之間的連接
- URLConnection conn = realUrl.openConnection();
- // 設置通用的請求屬性
- conn.setRequestProperty("accept", "*/*");
- conn.setRequestProperty("connection", "Keep-Alive");
- conn.setRequestProperty("user-agent",
- "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT5.1;SV1)");
- // 發送POST請求必須設置如下兩行
- conn.setDoOutput(true);
- conn.setDoInput(true);
- // 獲取URLConnection對象對應的輸出流
- out = new PrintWriter(conn.getOutputStream());
- // 發送請求參數
- out.print(param);
- // flush輸出流的緩衝
- out.flush();
- // 定義BufferedReader輸入流來讀取URL的響應
- in = new BufferedReader(
- new InputStreamReader(conn.getInputStream()));
- String line;
- while ((line = in.readLine()) != null) {
- result += line;
- }
- } catch (Exception e) {
- System.out.println("發送 POST 請求出現異常!"+e);
- e.printStackTrace();
- }
- //使用finally塊來關閉輸出流、輸入流
- finally{
- try{
- if(out!=null){
- out.close();
- }
- if(in!=null){
- in.close();
- }
- }
- catch(IOException ex){
- ex.printStackTrace();
- }
- }
- return result;
- }
-
- }
|
8、http測試結果
9、war包
右鍵項目 -> Export -> WAR file
把導出的war包放在Tomcat安裝目錄下的webapps文件夾下
進入Tomcat安裝目錄下的bin文件夾,雙擊startup.bat運行
運行剛纔的HttpRequest.java,可以得到相同的結果
10、Tomcat?湯姆貓?喵~