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?汤姆猫?喵~
