- 浏览: 374248 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 1557Java运行时数据区包含 ... -
中文乱码问题案例分析
2011-10-14 12:50 1848案例: 1、 环境介绍: 项目 ... -
button在Firefox下点击提交表单(form)的问题
2011-09-21 10:33 1145【关键词】Button Form FireFox ... -
EL表达式中empty的用法
2011-07-07 17:07 2442在做jsp系统的时候经常会使用el标签,而empty ... -
解决TOMCAT控制台输出 “Parameters: Invalid chunk ignored.”
2011-07-05 13:27 1198用过tomcat的都知道,request参数中如果有程 ... -
if 和 else if
2011-06-20 11:23 775最近做项目碰到服务器端验证用到了大量的if语句,首先不 ... -
java枚举类详解
2011-06-16 13:05 1470JDK1.6增添了一些新的特性,其中枚举就是其中比较重要 ... -
Java正则表达式的使用
2011-05-20 10:01 655import java.util.regex.Matcher; ... -
Cookie的MaxAge属性及其使用
2011-05-07 01:14 5819首先,看看API文档中对M ... -
根据不同情况提交表单
2011-05-05 10:29 1103在项目开发的过程中经常涉及到表单提交的问题,为了使得 ... -
Jsp传递中文参数详解
2011-05-01 17:39 921目前在jsp页面中传递中文参数,主要有两种方式: ... -
java.math.BigDecimal的用法
2011-04-18 15:34 1214Java中的简单浮点数类型float和double不能够进行 ... -
存储基础知识:数据一致性
2011-04-18 11:00 1591一、概述 数据一致性是指关联数据之间的逻辑关系是否正确和完整 ... -
java 检查 URL 合法性
2011-04-15 10:19 4793/** * URL检查& ... -
关于用SimpleDateFormat进行日期格式化的问题
2011-04-01 13:45 1021做了遮掩一个实验: public static vo ... -
深入Java对象的比较
2011-03-31 18:22 1384深入Java对象的比较 ... -
commons-fileupload上传组件学习记录
2011-03-30 11:18 2182最近在用commons-fileupload做文件 ... -
Web上传文件的原理及实现[转]
2011-03-30 02:48 1011现在有很多 Web程序都有上传功能,实现上传功能的组件 ... -
java保留两位小数
2011-03-29 18:23 1052java保留两位小数问题: 方式一: ... -
RequestDispatcher接口中的include()方法和forward()方法的区别
2011-03-24 23:12 1361请求转发中 RequestDispatcher 接口中的 ...
相关推荐
**模拟Tomcat工作原理** Tomcat是一款开源的Java Servlet容器,它是Apache软件基金会下的Jakarta项目的一部分,主要用于运行Java Web应用程序。在这个模拟过程中,我们将深入理解Tomcat如何处理HTTP请求,以及它在...
【TOMCAT工作原理详解】 ...通过模拟TOMCAT工作过程,可以更深入地理解这些概念,为实际开发打下坚实基础。在`mvcdemo`这样的实践中,你可以亲自体验和学习如何在TOMCAT上部署和运行一个简单的MVC应用。
首先,我们需要了解Tomcat的工作原理。Tomcat是基于Apache软件基金会的Jakarta项目,它接收HTTP请求,并将这些请求分发给Java应用程序,通常是Servlets。Servlets是Java编写的服务器端程序,可以处理动态内容。JSP则...
在IT行业中,构建一个模拟Tomcat或Servlet服务器是一项高级...通过以上知识点的学习和实践,你将能够构建一个基本的模拟Tomcat和Servlet服务器,这将帮助你深入理解Web服务器的工作原理,提升你的Java网络编程技能。
本篇文章将深入探讨如何用Java语言来模拟Tomcat的核心功能,以理解其工作原理。 首先,我们需要了解Java服务器的工作基础。在Java中,HTTP请求的处理是通过实现Servlet接口的类完成的。Servlet是Java中用于处理HTTP...
标题中的“j2se模拟tomcat”意味着我们将探讨如何使用Java标准版(J2SE)的编程技术来创建一个简单的Web服务器,模仿Tomcat的工作原理。Tomcat是一款流行的开源应用服务器,主要用于运行Java Servlet和JavaServer ...
本篇文章将深入解析“简单的tomcat实现1”,帮助读者理解Tomcat的核心概念、工作原理以及如何手写Tomcat的基本组件。 首先,我们要了解Tomcat的两大核心组成部分:连接器(Connector)和容器(Container)。连接器...
模拟Tomcat应用服务器的工作原理,有利于理解服务器的工作的模式。简单模拟,不考虑并发性等等因素。
关于标签中的“源码”和“工具”,这里可能是指在处理Tomcat进程时,有时需要查看Tomcat的源代码,了解其内部工作原理,或者使用一些辅助工具来帮助管理和监控Tomcat。例如,`jps`(Java Virtual Machine Process ...
【标题】"Tomcat源码分析" ...通过对Tomcat源码的分析,开发者可以更好地理解其工作原理,从而优化性能、解决运行问题,或者开发出符合特定需求的扩展功能。同时,这也是提升Java Web开发技能的重要途径。
在这个文件中,会定义工作线程(workers)和它们与Tomcat实例的关系,以便正确地分发请求。 **uriworkermap.properties**:这个文件定义了URI到worker的映射,决定了哪些URL请求会被发送到哪个Tomcat实例处理。 **...
通过深入研究Tomcat7.0的源码,我们可以更好地理解HTTP服务器、Servlet容器的工作原理,提升Web应用的开发和优化能力。本文将探讨如何将Tomcat7.0源码导入Eclipse,并进行本地运行,以实现高效的学习和调试。 首先...
如果你需要深入理解Tomcat连接器的工作原理,或者想要对其进行定制,你可以编译这个源代码。这通常涉及到下载源码,配置构建环境(如Apache Maven或Ant),然后执行构建命令来生成可部署的二进制文件。 了解Tomcat ...
Http请求模拟报文返回工具的核心原理是基于HTTP协议的工作机制,它可以创建并配置自定义的HTTP响应报文。当用户通过HTTP客户端(如浏览器或HTTP库)发起请求时,该工具会捕获这些请求,并按照预设的规则返回预先配置...
### Tomcat 远程命令攻击漏洞 CVE-2017-12615 的深入解析及...通过本实验的学习,我们不仅了解了CVE-2017-12615漏洞的基本原理,还掌握了如何模拟和防御这种类型的攻击。这对于提高个人和组织的安全意识具有重要意义。
Tomcat作为开源的Servlet容器,其源码提供了深入理解其工作原理的机会。主要组件包括Catalina(核心引擎)、 Coyote(处理HTTP协议)、Apr(与操作系统交互的本地库)等。源码分析可以帮助我们理解请求处理流程、...
GZIP压缩的工作原理是在客户端请求网页后,由服务器端将网页文件压缩后再发送给客户端,客户端接收到压缩后的文件后,由浏览器进行解压并显示页面内容。这种方式不仅可以减少传输的数据量,而且还能对动态生成的内容...