- 浏览: 368957 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
angryid:
dsafddsfssssssssddsdsasssssssss ...
freemarker学习笔记---assign标签 -
lylovejava0:
数据库里字段不能转换。。这样会慢死。。在说如果表里有分区等设置 ...
Oracle 时间段查询 -
greatjone:
必须得评论下,这篇博文相当实用,在csdn上找个东西老还要积分 ...
MyEclipse下安装jad插件 -
mytream:
...
模拟tomcat工作原理 -
liujianche11:
小心点 createdate<=to_date('20 ...
Oracle 时间段查询
httpserver原理:服务器端 打开一个socket,一直处在监听tomcat指定的 ip 的指定端口,一旦有访问的,就开启一个线程去处理,代码如下:
-------------------------------server:
package com.kaobian;
import java.io.IOException;
import
java.net.ServerSocket;
import java.net.Socket;
import
com.session.HttpSession;
public class HttpServer {
public static
void main(String[] args) {
try {
ServerSocket server =
new ServerSocket(8888);
while (true) {
Socket
socket = server.accept();
HttpSession session = new
HttpSession(socket);
new Thread(session).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
---------------------------------处理线程
package com.session;
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.Socket;
import
com.config.Config;
public class HttpSession implements Runnable {
private String path = Config.getConfig().getPath();
private Socket socket
;
public HttpSession(Socket socket){
super();
this.socket = socket;
}
public void run() {
try
{
BufferedReader br = new BufferedReader(new
InputStreamReader(this.socket.getInputStream()));
OutputStream
out = this.socket.getOutputStream();
String command =
null;
while((command = br.readLine()) != null){
System.out.println("浏览器的指令:"+command);
if(command.length() <3){
break;
}
String result = command.substring(0,3);
if(result.equalsIgnoreCase("GET")){
int begin =
command.indexOf("/")+1;
int end = command.lastIndexOf("
");
String fileName =
command.substring(begin,end);
doGet(fileName,out);
}
}
out.close();
br.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
private
void doGet(String fileName, OutputStream out) {
File file = new
File(path+fileName);
if(!file.isDirectory()){
if(!file.exists()){
file = new File(path +
Config.getConfig().getDefaultPage());
}
}else
{
file = new File(path +
Config.getConfig().getDefaultPage());
}
InputStream is =
null;
try {
is = new FileInputStream(file);
byte[] data =new byte[1024];
int len = 0;
while((len = is.read(data)) != -1){
out.write(data,0,len);
}
} catch
(FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}finally
{
if(is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
is =
null;
}
}
}
}
}
---------------------------读取配置文件
package com.config;
import java.io.File;
import
java.io.FileInputStream;
import java.io.IOException;
import
java.io.InputStream;
import java.util.Properties;
public class Config
{
private String path ;
private String
defaultPage;
private static Config config ;
public static
Config getConfig(){
if(config == null){
config = new
Config();
config.init();
}
return
config;
}
private void init(){
Properties
properties = new Properties();
try {
InputStream
reader = new FileInputStream(new File("config.properties"));
properties.load(reader);
this.path =
properties.getProperty("path");
this.defaultPage =
properties.getProperty("defaultIndex");
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private Config(){
}
public
String getPath() {
return path;
}
public void
setPath(String path) {
this.path = path;
}
public
String getDefaultPage() {
return defaultPage;
}
public
void setDefaultPage(String defaultPage) {
this.defaultPage =
defaultPage;
}
}
------------------配置文件要放到工程的根目录下,要不然自行修改属性文件的位置
path=c://
defaultIndex=div.html
发表评论
-
Java内存分析工具
2012-01-17 10:45 1482Java运行时数据区包含 ... -
中文乱码问题案例分析
2011-10-14 12:50 1749案例: 1、 环境介绍: 项目 ... -
button在Firefox下点击提交表单(form)的问题
2011-09-21 10:33 1120【关键词】Button Form FireFox ... -
EL表达式中empty的用法
2011-07-07 17:07 2415在做jsp系统的时候经常会使用el标签,而empty ... -
解决TOMCAT控制台输出 “Parameters: Invalid chunk ignored.”
2011-07-05 13:27 1173用过tomcat的都知道,request参数中如果有程 ... -
if 和 else if
2011-06-20 11:23 745最近做项目碰到服务器端验证用到了大量的if语句,首先不 ... -
java枚举类详解
2011-06-16 13:05 1423JDK1.6增添了一些新的特性,其中枚举就是其中比较重要 ... -
Java正则表达式的使用
2011-05-20 10:01 628import java.util.regex.Matcher; ... -
Cookie的MaxAge属性及其使用
2011-05-07 01:14 5746首先,看看API文档中对M ... -
根据不同情况提交表单
2011-05-05 10:29 1070在项目开发的过程中经常涉及到表单提交的问题,为了使得 ... -
Jsp传递中文参数详解
2011-05-01 17:39 896目前在jsp页面中传递中文参数,主要有两种方式: ... -
java.math.BigDecimal的用法
2011-04-18 15:34 1184Java中的简单浮点数类型float和double不能够进行 ... -
存储基础知识:数据一致性
2011-04-18 11:00 1544一、概述 数据一致性是指关联数据之间的逻辑关系是否正确和完整 ... -
java 检查 URL 合法性
2011-04-15 10:19 4753/** * URL检查& ... -
关于用SimpleDateFormat进行日期格式化的问题
2011-04-01 13:45 982做了遮掩一个实验: public static vo ... -
深入Java对象的比较
2011-03-31 18:22 1359深入Java对象的比较 ... -
commons-fileupload上传组件学习记录
2011-03-30 11:18 2145最近在用commons-fileupload做文件 ... -
Web上传文件的原理及实现[转]
2011-03-30 02:48 984现在有很多 Web程序都有上传功能,实现上传功能的组件 ... -
java保留两位小数
2011-03-29 18:23 1018java保留两位小数问题: 方式一: ... -
RequestDispatcher接口中的include()方法和forward()方法的区别
2011-03-24 23:12 1337请求转发中 RequestDispatcher 接口中的 ...
相关推荐
模拟了tomcat的工作原理,用到了多线程,http协议 等等
模拟TOMCAT的原理的全过程,新手理解TOCMAT以及SERVLET有很大的帮助
这个例子是用j2se的Socket和线程的技术来简单的模拟tomcat的执行过程,虽然没有tomact复杂但是原理都是一样的,理解了它再去理解tomcat的执行过程就会比较轻松了
模拟Tomcat应用服务器的工作原理,有利于理解服务器的工作的模式。简单模拟,不考虑并发性等等因素。
本资源是tomcat的源码(包含阅读的注释),和相关原理及生命周期的文档,启动流程等,以及模拟并发对tomcat不同的支持(bio、nio)的压测,还有相关tomcat的启动和部署脚本命令(模拟从svn下载)。
whatsmars-tomcat 模拟tomcat实现 whatsmars-dbrouter 分库分表实现 whatsmars-worker 多实例任务调度 whatsmars-dubbo Dubbo demo whatsmars-mq rocketmq,activemq rocketmq-console rocketmq管理后台 whatsmars-...
whatsmars-tomcat 模拟tomcat实现 whatsmars-dbrouter 分库分表实现 whatsmars-worker 多实例任务调度 whatsmars-dubbo Dubbo demo whatsmars-mq rocketmq,activemq rocketmq-console rocketmq管理后台 whatsmars-...
通过本内容的学习: 1,能够理解 XML 语言的概述 a, 说出 XML 语言的概念 b, 说出 XML 语言的作用 c, 说出 XML 语言的应用...6,能够运用 XML 语言来模拟 Tomcat 服务器 a, 运用 XML 语言写出配置文件文档 b, 运
包括jBPM4扩展研发先决条件、深入jPDL和jBPM Service API、升级jBPM3到jBPM4、流程虚拟机原理、jBPM4的设计思想、随需而配jBPM4、异步工作执行器、深入jBPM4电子邮件支持、系统日志、jBPM4与Spring框架集成、jBPM4与...
通过手写模拟SpringBoot源码了解其中的逻辑原理,自动配置,整合Tomcat,启动过程等。
本文首先介绍了传统连接、tomcat下连接池和hibernate下连接池的基本原理,然后在此基础上提出了一种改进的新型连接池方法,最后基于Java语言对四种连接方法进行了仿真模拟。通过实验测试及连接时间的对比分析,看到...
1.3) Nginx+Tomcat模拟动静分离效果 ????1.4) 集群环境动静分离效果模拟 2.nginx+python? ????2.1) wsgi、uwsgi协议 ????2.2) uwsgi为什么需要Nginx ????2.3) uwsgi配置场景 ( Django ) ????2.4)部署一个完整的...
ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试Apache的负载压力,也可以测试Nginx、Lighthttp、Tomcat、IIS等其它Web服务器的压力。 ...
我正在对Metaverse的工作原理进行有效的解释。 连接在。 有一个非常粗糙的消息传递示例,它是形式的。不久将有世界范围内的端点。 目前只有最低层,没有微服务或存储,只有路由。 有关演示,示例和说明,请参见 。 ...
百度地图开发java源码 UpdateDemo 应用内更新demo 对于Android app来说,应用内更新几乎成了一个标配...我们这里模拟一个新版apk相关信息的json文件内容。 {"data":{"content":"更新内容如下:\n 1.xxxxxx;\n 2.xxxxxx
10.5.1 Tomcat 224 10.5.2 JBoss 226 10.5.3 WebLogic 229 10.6 小结 233 第3篇 实战篇 第11章 实战入侵与防范 236 11.1 开源程序安全剖析 236 11.1.1 0day攻击 236 11.1.2 网站后台安全 238 11.1.3 MD5还安全吗 243...
它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。 ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多...
对学生知识的要求 对Windows、Linu*及SQL语句有一定的了解即可 学生的知识能力提高 本课程重点培训学生的Web渗透测试能力,通过20天的渗透测试培训,学生可具备以下能力 1)、了解Web服务器的工作过程及原理 ...
它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。 ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多...