- 浏览: 114610 次
- 性别:
- 来自: 成都
文章分类
最新评论
模拟tomcat服务器端代码示例:
客户端http请求模拟示例:
package cd.itcast.day5; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Date; public class HttpServerDemo { public static void main(String[] args) { (new HttpServer()).run(); } public static class HttpServer { public void run() { String filePath = "D:\\Java\\apache-tomcat-6.0.35\\webapps\\ROOT"; ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(8888); // 开启线程,接收客户端请求. while (true) { Socket socket = serverSocket.accept(); Thread thread = new Thread(new MyHttpServerThread(socket, filePath)); thread.start(); } } catch (IOException e2) { e2.printStackTrace(); } } } public static class MyHttpServerThread implements Runnable { String filePath = null; private Socket socket = null; private File file = null; public MyHttpServerThread(Socket socket, String filePath) { this.filePath = filePath; this.socket = socket; } @Override public void run() { // 读取客户端数据 BufferedReader request = null; // 处理客户端数据并返回. BufferedOutputStream response = null; try { // System.out.println(socket.getInetAddress().getHostAddress() // + " 连接到服务器."); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); request = new BufferedReader(new InputStreamReader(inputStream)); response = new BufferedOutputStream(outputStream); // 读取Http头信息行:GET /index.html HTTP/1.1 String httpHead = request.readLine(); if (httpHead != null) { String[] arr = httpHead.split(" "); if (arr.length == 3 && ("GET".equals(arr[0]) || "POST".equals(arr[0])) && "HTTP/1.1".equals(arr[2])) { // 获取要访问的文件. if ("/".equals(arr[2])) { file = new File(filePath, "/index.html"); } else { file = new File(filePath, arr[1]); } if (file.exists() && file.isFile()) { responseRequest(response); } else { System.out.println("请求的页面:" + arr[1] + " 不存在!"); } } else { System.out.println("客户端请求非法:" + arr[0]); } } else { System.out.println("未发现客户端请求或请求有误!"); } } catch (Exception e) { e.printStackTrace(); } finally { if (request != null) { try { request.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } private void responseRequest(BufferedOutputStream response) throws IOException, FileNotFoundException { // 返回给客户端服务器的Http头信息 response.write("HTTP/1.1 200 ok\r\n".getBytes()); response.write("Server: HttpTest Server/1.1\r\n".getBytes()); response.write("Content-Type: text/html\r\n".getBytes()); response.write(("Content-Length: 5866" + file.length() + "\r\n") .getBytes()); response.write(("Date: " + new Date() + "\r\n").getBytes()); // 与实体部分以空行隔开. response.write("\r\n".getBytes()); FileInputStream fis = new FileInputStream(file); byte[] buff = new byte[1024]; int len = 0; while ((len = fis.read(buff)) != -1) { response.write(buff, 0, len); response.flush(); } fis.close(); } } }
客户端http请求模拟示例:
package cd.itcast.day5; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class HttpClientDemo { public static void main(String[] args) { BufferedWriter out = null; BufferedReader in = null; try { Socket socket = new Socket("127.0.0.1", 8888); out = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); in = new BufferedReader(new InputStreamReader( socket.getInputStream())); //发送Http头信息到服务器.请求页面为httptest.html. out.write("GET /httptest.html HTTP/1.1\r\n"); out.write("Host: localhost\r\n"); out.newLine(); out.flush(); //获取服务器返回内容. String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
发表评论
-
java远程调试(转载)
2012-12-29 16:43 897新接手的项目采用的是Maven作为编译管理工具,项目内容则是按 ... -
将秒转换成日期格式的java方法:
2012-12-29 12:01 955package net.blogjava.frankieg ... -
java对世界各个时区(TimeZone)的通用转换处理方法(转载)
2012-12-25 15:24 983在进行国际性软件项目开发的过程中,有时候会碰到一些比较特殊的要 ... -
RandomAccessFile
2012-12-19 22:05 794RandomAccessFile RandomAccessF ... -
java-WEB中的过滤器Filter
2012-09-18 22:58 1470过滤器是一个程序,它先于与之相关的s ... -
java-例子:MVC模式,用jstl和el输出数据到jsp页面.
2012-09-09 23:57 1643例子:利用session完成购物车. domain: pac ... -
java中的el——表达式语言
2012-09-09 23:36 877EL 全名为 Expression Lang ... -
java-下载图片(正则表达式、HttpURLConnection、流、socket综合运用)
2012-08-26 22:22 1283package cn.itcast.httpserver; ... -
java-用HttpURLConnection发送Http请求.
2012-08-26 22:00 724注意:利用URL发送的请求,服务器只返回实体部分,不包括htt ... -
java-SAX解析XML示例
2012-08-25 19:13 816JAVA 解析 XML 通常有两种方式:DOM 和SAX ... -
java-增强for循环示例
2012-08-25 19:14 826package cd.itcast.day1; impo ... -
java-反射示例
2012-08-24 14:13 719package cd.itcast.day1; im ... -
java-可变参数示例
2012-08-24 14:07 541package cd.itcast.day1; pu ... -
java-枚举示例
2012-08-24 14:04 708package cd.itcast.day1; /* ... -
java-注解annotation
2012-08-24 13:54 728package cd.itcast.day2; impo ... -
Java-dom编程:操作xml
2012-08-24 13:47 746package cd.itcast.day3.xmldom; ...
相关推荐
简易模拟tomcat服务器项目源码java学习CS架构网络编程;简易模拟tomcat服务器项目源码java学习CS架构网络编程;简易模拟tomcat服务器项目源码java学习CS架构网络编程;简易模拟tomcat服务器项目源码java学习CS架构...
【模拟Tomcat服务器】 在IT行业中,Tomcat是一款广泛应用的开源Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)技术。通过模拟Tomcat服务器,我们可以更好地理解和学习这些技术,以及它们...
Java模拟Tomcat Web服务器源码解析 在Java世界中,Tomcat是一款广泛应用的开源Web服务器和Servlet容器。它遵循Java Servlet和JavaServer Pages(JSP)规范,为开发者提供了轻量级、高效的运行环境。本篇文章将深入...
4. 重启Tomcat:完成上述配置后,重启Tomcat服务器使更改生效。 5. 测试验证:通过编写测试用例,模拟用户在不同服务器之间切换,确保session数据在Redis中被正确存储和检索,同时确认之前报空指针的问题已被修复。...
标题 "jdbc-mysql-本地tomcat使用-app后台接口" 涉及到的是在本地开发环境中,使用Java JDBC(Java Database Connectivity)与MySQL数据库进行交互,并通过Tomcat服务器部署一个APP后台接口。这个过程通常包括以下几...
4. Tomcat:轻量级的Java Web服务器,运行Servlet和JSP应用。 5. Maven或Gradle:构建工具,管理项目依赖和构建过程。 五、开发流程 1. 需求分析:明确系统功能,制定需求规格书。 2. 设计阶段:绘制UML类图、用例...
接下来,我们转向Tomcat服务器。Tomcat作为Java应用服务器,它的限流通常通过修改`server.xml`中的`<Connector>`元素来实现。例如,我们可以设置`maxThreads`来限制处理线程的数量,从而限制并发连接数: ```xml ...
【标题】"CNVD-2020-10487-Tomcat-Ajp-lfi-master.zip"指的是一个与Tomcat服务器相关的安全漏洞利用工具包,主要针对的是CVE-2020-1938漏洞。这个压缩包可能包含了一些测试脚本或配置,用于演示或复现该漏洞的影响。...
Tomcat8是Apache Tomcat服务器的一个版本,它是一个开源的Java Servlet容器。为了使Tomcat能够与Memcached通信,我们需要添加相应的session管理库。压缩包中的“lib”文件夹很可能包含了实现这一功能的JAR文件,比如...
在IT行业中,构建一个模拟Tomcat或Servlet服务器是一项高级任务,它要求对网络编程、HTTP协议、Java Servlet规范以及服务器容器有深入理解。这个项目主要涉及以下知识点: 1. **Socket编程**:Socket是网络通信的...
该服务器是本人模拟Tomcat做的,同时实现了主流的两大框架:struts 和 hibernate的一些功能,做这个东西本是自娱自乐,所以有很多地方尚未完善,构造方法一大堆的参数也让人头疼。希望有兴趣的朋友可以提一些建议,...
2. **配置Nginx**: 修改Nginx的配置文件(如`nginx.conf`),定义一个反向代理服务器段,指定后端Tomcat服务器的IP和端口。例如: ``` upstream backend { server 192.168.1.101:8080; server 192.168.1.102:...
- **JVM (Java Virtual Machine)**: 在实际计算机上模拟计算机功能的虚拟机,负责执行字节码。 - **安装JDK**: - **bin文件安装**: `sh ./jdk-6u18-linux-x64-rpm.bin` 安装路径默认为 `/usr/java/jdk1.6.0_18`。 ...
Apache Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java EE的Web应用服务器规范,特别是Servlet和JSP。在这个特定的版本"apache-tomcat-8.0.46.zip"中,我们关注的是Linux平台上的Tomcat 8,这是一个包含...
java实现模拟tomcat服务器,利用socket接手请求,resquest和respose处理请求发送响应,编写了Servlet接口,用户需要在web.xml配置全类名和URL,编写servlet实现类就可以使用,客户端浏览器,使用java的Swing组件,...
开发者使用Java编写Servlet和JSP,然后将这些程序部署到Tomcat服务器上,Tomcat负责解析请求,执行Java代码,并将结果返回给客户端。 学习Java和Tomcat,你需要掌握以下关键知识点: 1. **Java基础**:理解类、...
在模拟Tomcat的过程中,了解并实现这些步骤可以帮助我们更好地理解Web服务器的工作流程,特别是Java的多线程模型在其中的应用。同时,标签"java tomcat"提示我们需要关注的是与Java和Tomcat相关的技术,例如Servlet...
在开发过程中,开发人员还会用到如Apache Tomcat或Jetty这样的Servlet容器,它们可以运行和管理Java Web应用程序。还有集成开发环境(IDE),如Eclipse、IntelliJ IDEA,它们提供了丰富的工具来简化开发流程。 测试...
启动Tomcat服务器时,通常会使用`startup.bat`脚本,这个脚本位于`bin`目录下。运行此脚本会启动Tomcat的服务,使得部署在其中的应用可以被访问。在配置好`deployerConfigContext.xml`并启动Tomcat后,你的本地环境...