当前位置: 首页 > wzjs >正文

南京做公司网站的公司做营销型网站的公司

南京做公司网站的公司,做营销型网站的公司,上海高端网站设计,做恶搞网站软件一、初步理解Tomcat Tomcat是什么? Tomcat 是一个开源的 轻量级 Java Web 应用服务器,核心功能是 运行 Servlet/JSP。 Tomcat的核心功能? Servlet 容器:负责加载、实例化、调用和销毁 Servlet。 HTTP 服务器:监听端口…

一、初步理解Tomcat

Tomcat是什么?

Tomcat 是一个开源的 轻量级 Java Web 应用服务器,核心功能是 运行 Servlet/JSP

Tomcat的核心功能?

Servlet 容器:负责加载、实例化、调用和销毁 Servlet。

HTTP 服务器:监听端口(默认 8080),解析 HTTP 请求,封装 HTTP 响应。

JSP 支持:将 JSP 文件编译为 Servlet 执行。

线程池管理:并发处理多个请求,提高性能。

二、Servlet的原理

Servlet框架 

三、什么是socket 

Socket(套接字)是计算机网络中用于进程间通信的核心技术,它允许不同主机或同一主机上的不同程序通过网络交换数据

 Socket 是什么?

  • 定义:Socket 是操作系统提供的抽象接口,本质上是通信的端点(Endpoint)。它封装了底层网络协议(如TCP/IP或UDP)的复杂性,提供了一组简单的API【API(Application Programming Interface,应用程序编程接口) 是软件系统之间交互的桥梁,定义了如何请求服务、传递数据以及返回结果的规则。】供应用程序使用。

  • 关键要素

    • IP地址:标识网络中的主机。

    • 端口号:标识主机上的具体服务(如HTTP默认80端口)。

    • 协议:如TCP(可靠连接)或UDP(无连接)。


端口是逻辑抽象概念,并非物理硬件。

端口是操作系统用来区分不同网络服务的数字标识(范围0~65535)。

网卡(硬件)负责收发数据,而端口由操作系统通过协议栈(如TCP/IP)管理。

Socket 是软件技术,不是物理硬件。


Socket的作用

  • 跨网络通信:使不同设备上的进程能够交换数据(例如浏览器与服务器交互)。

  • 支持多种协议:可通过TCP、UDP等协议传输数据。

  • 双向通信:建立连接后,双方可同时发送和接收数据。

  • 灵活性:可用于构建各种网络应用(如Web服务器、聊天软件、文件传输等)。

为什么 Tomcat 需要 Socket? 

Tomcat 是一个基于Java的Web服务器Servlet容器,其核心功能依赖Socket实现:

  1. HTTP请求处理

    • 当用户访问网站时,浏览器通过Socket(TCP连接)向Tomcat发送HTTP请求。

    • Tomcat监听8080端口(默认),通过Socket接收请求数据,解析后交给Servlet处理。

    • 处理完成后,再通过Socket将HTTP响应返回给浏览器。

  2. 连接管理

    • Tomcat使用ServerSocket监听端口,等待客户端连接。

    • 每收到一个请求,Tomcat会创建一个新的Socket连接(或复用线程池中的连接)处理该请求,实现高并发。

  3. 协议支持

    • 除了HTTP/1.1(基于TCP Socket),Tomcat还支持HTTP/2、WebSocket等,这些协议最终都依赖Socket实现数据传输。

 Tomcat 中的 Socket 工作流程 

四、Tomcat框架及代码

网卡上需要注册端口号。

 通过searchClassUtil类能获取类的全路径------>>根据全路径名生成类对象(反射)------>>获取类信息


public class HttpServletRequest {private String method;private String url;//............public String getMethod() {return method;}public void setMethod(String method) {this.method = method;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}
}
public class HttpServletResponse {//输出流private OutputStream outputStream;public HttpServletResponse(OutputStream outputStream){this.outputStream = outputStream;}/*** 返回动态资源* @param context*/public void write(String context) throws IOException {//System.out.println(context);outputStream.write(context.getBytes());}/*** 返回静态资源*/public void writeHtml(String path) throws Exception {String resourcesPath = FileUtil.getResoucePath(path);File file = new File(resourcesPath);if(file.exists()){//静态文件存在System.out.println("静态文件存在");FileUtil.writeFile(file,outputStream);}else {System.out.println("静态文件不存在");write(ResponseUtil.getResponseHeader404());}}}

/*** tomcat路由*/
public class TomcatRoute {public static HashMap<String, HttpServlet> routes = new HashMap<>();static {List<String> paths  = SearchClassUtil.searchClass();  //获取全路径名//根据全路径名称生成类对象for (String path: paths) {try {Class clazz = Class.forName(path);  //生成类对象WDServlet webServlet = (WDServlet) clazz.getDeclaredAnnotation(WDServlet.class);routes.put(webServlet.url(), (HttpServlet) clazz.getDeclaredConstructor().newInstance());} catch (Exception e) {e.printStackTrace();}}}}

public interface servlet {public void service(HttpServletRequest request, HttpServletResponse response) throws IOException;
}
public abstract class HttpServlet implements servlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {}public void doPost(HttpServletRequest request,HttpServletResponse response){}@Overridepublic void service(HttpServletRequest request, HttpServletResponse response) throws IOException {if(request.getMethod().equals("GET")){doGet(request,response);}else if(request.getMethod().equals("POST")){doPost(request,response);}}
}

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface WDServlet {String url() default "";
}

@WDServlet(url = "/myServlet")
public class MyFirstServlet extends HttpServlet {@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) {super.doPost(request, response);}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {System.out.println("Hello World");response.write(ResponseUtil.getResponseHeader200("hello world  hhhhh"));}
}

@WDServlet(url = "/insert")
public class InsertServlet extends HttpServlet {@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)  throws IOException {System.out.println("我是insert......");}@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) {super.doPost(request, response);}
}
@WDServlet(url = "/delete")
public class DeleteServlet extends HttpServlet {@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) {super.doPost(request, response);}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {super.doGet(request, response);}
}
/*** tomcat主启动类*/
public class MyTomcat {static HashMap<String, HttpServlet> routes = TomcatRoute.routes; //tomcat路由\/*** 分发器*/public  void dispatch(HttpServletRequest request ,HttpServletResponse response) throws IOException {HttpServlet servlet = routes.get(request.getUrl());  //if(servlet!=null){ //说明请求的就是我们的servletservlet.service(request,response);}}/*** socket 启动* @throws IOException*/public  void start() throws IOException {ServerSocket serverSocket = new ServerSocket(4700);  //1.指定监听的端口号//2.对端口进行监听while (true){Socket socket = serverSocket.accept();//阻塞监听//3.打开输入流,解析客户端发来的内容InputStream inputStream = socket.getInputStream(); //输入流HttpServletRequest request = new HttpServletRequest();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));  //将字节流转换成字符流String str = reader.readLine();request.setMethod(str.split("\\s")[0]);request.setUrl(str.split("\\s")[1]);//4.打开输出流OutputStream outputStream = socket.getOutputStream();HttpServletResponse response = new HttpServletResponse(outputStream);dispatch(request,response);}}//socketpublic static void main(String[] args) throws IOException {MyTomcat myTomcat = new MyTomcat();myTomcat.start();}
}

 

 五、字节流、字符流

字节流:二进制;

字符流:各种字符

 

 

 

 

http://www.dtcms.com/wzjs/352720.html

相关文章:

  • 企业网站管理系统项目文档即刻搜索引擎入口
  • 多视频网站建设谷歌seo服务商
  • 十堰seo优化分析谷歌seo综合查询
  • cms网站代理郑州网站建设价格
  • 网站被墙检测指数基金
  • 淘宝网站可以做seo吗百度seo排名优化技巧分享
  • 郑州企业网站建设团队百度竞价排名公式
  • 如何做移动支付网站企业管理培训视频免费
  • 有人知道网站怎么做吗营销型网站建站推广
  • 网站制作视频教程全套产品软文怎么写
  • 医药网站设计天津百度关键词seo
  • 网站建设服务商是什么神马搜索seo优化排名
  • 创造一个网站百度app客服电话
  • 做网站基本教程国家高新技术企业名单
  • 重庆网站建设公司什么样的人适合做策划
  • 如何做网站走查企业应该如何进行网站推广
  • 什么是网站开发时间进度表seo排名培训学校
  • 做马甲的网站网盟推广是什么意思
  • 建设网站去哪里找加速游戏流畅的软件
  • 沈阳网站建设工作室南京seo网站优化
  • 网站推广需要多少钱易下拉系统seo网站优化论文
  • 网站如何做关键词优化资源搜索器
  • 做web网站原型seo搜索引擎优化介绍
  • 厦门做网站个人最近几天新闻大事
  • 可以做推广的网站百度知道电脑版网页入口
  • wordpress 代码块样式微博搜索引擎优化
  • 东莞网站建设公司直播品牌推广方案策划书
  • 做营销网站制作seo流量排名软件
  • 教做美食网站源码微信朋友圈推广
  • 用自己网站做邮箱域名解析网站seo培训