java nio http服务器(3)简单的Servlet容器
来源:互联网 发布:淘宝客户资料购买平台 编辑:程序博客网 时间:2024/05/22 11:30
Servlet容器中放着我们所有要访问的Servlet,根据我们具体的请求来访问不同的Servlet。下面是一个简单的Servlet容器的实现。request和response的封装以及连接器的实现代码这里就不再重复写了,请看上一篇博客。
servlet
package com.hcserver.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet extends HttpServlet{private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String aa = req.getParameter("aa");String bb = req.getParameter("bb");System.out.println("param aa = "+aa);System.out.println("param bb = "+bb);resp.getWriter().print("hello world...");}}
servlet容器
package com.hcserver.container;import java.io.File;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServlet;public class Container {public final static String WEB_ROOT = Container.class.getResource("/webapps").getPath();private Map<String,Map<String,HttpServlet>> projectMap = new HashMap<>();private static Container container = new Container();private Container(){}public static Container getInstance(){return container;}public void init(){try{//模拟解析web.xml,利用反射得到servlet实例Map<String,HttpServlet> map = new HashMap<>();Class<?> servletClass = Class.forName("com.hcserver.servlet.MyServlet");HttpServlet newInstance = (HttpServlet)servletClass.getConstructor(new Class[]{}).newInstance(new Object[]{});map.put("myServlet", newInstance);projectMap.put("hello",map);}catch(Exception e){}}public Map<String,HttpServlet> getProject(String projectName){return projectMap.get(projectName);}public static void main(String[] args) {container.init();}}
处理器修改
package com.hcserver.process;import java.util.Map;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.hcserver.container.Container;public class Process {public void service(HttpServletRequest request,HttpServletResponse response){String project = request.getContextPath();String servletPath = request.getServletPath();//得到容器类Container container = Container.getInstance();Map<String, HttpServlet> servletMap = container.getProject(project);HttpServlet servlet = servletMap.get(servletPath);try {//返回页面servlet.service(request, response);} catch (Exception e) {e.printStackTrace();} }}
最后启动服务,浏览器,输入:http://localhost:8084/hello/MySevlet?aa=1&bb=3回车后浏览器显示 hello world..
后台输出
param aa = 1
param bb = 3
0 0
- java nio http服务器(3)简单的Servlet容器
- NIO 简单http 服务器
- 一个基于java NIO的Http服务器
- java nio http服务器(4)小结
- java 简单的文件上传下载服务器模型(NIO 版本)
- WEB容器,HTTP服务器,Servlet之间的关系
- java nio http服务器(1)读取http请求
- tomcat——简单的Web服务器和Servlet容器
- 简单的http服务器java
- 将http服务器升级为servlet容器
- Java Servlet学习笔记(五)Servlet服务器Http响应
- 采用Java nio 实现的一个简单的服务器
- 一个简单的servlet容器
- 各种容器与服务器的区别与联系:Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器
- 容器与服务器的区别与联系:Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器
- tomcat之jsp/servlet容器与tomcat与专业的http服务器的区别
- 简单HTTP服务器的Java实现
- JAVA 实现 简单的 HTTP服务器
- Android环境搭建
- json
- wax lua 脚本升级练习(1)
- [leetcode] Distinct Subsequences
- erlang 小程序:整数序列,搜索和为正的最长子序列
- java nio http服务器(3)简单的Servlet容器
- 【转】jQuery选择器中含有空格的注意事项
- tomcate 发布 webservice
- ITA 15 DP 图
- android taskAffinity属性
- Dex文件头及解析机制分析
- STP、RSP、MSTP的区别
- yarn内存配置指南
- The Swift Programming Language5