java nio http服务器(3)简单的Servlet容器
2014-07-14 18:51
405 查看
Servlet容器中放着我们所有要访问的Servlet,根据我们具体的请求来访问不同的Servlet。下面是一个简单的Servlet容器的实现。request和response的封装以及连接器的实现代码这里就不再重复写了,请看上一篇博客。
最后启动服务,浏览器,输入:http://localhost:8084/hello/MySevlet?aa=1&bb=3回车后浏览器显示 hello world..
后台输出
param aa = 1
param bb = 3
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; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected 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
相关文章推荐
- 基于Java web服务器简单实现一个Servlet容器
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- java例程练习(容器类简单练习)
- JAVA实现简单的HTTP服务器
- 利用JAVA的动态属性之反射原理实现一个简单AOP容器 - AOP的实现原理分析
- 最简单的Http服务器之java版
- jsp+servlet+javabean完成的简单员工信息管理
- Java实例开发05-02 简单的HTTP服务器端
- Java WEB之Servlet学习之路(一)一个最简单的Servlet应用
- 用Java编写你自己的简单HTTP服务器
- Java中用Servlet容器实现程序监听
- [How Tomcat Works]第2章 一个简单的Servlet容器
- 一个简单的http服务器(Java)
- Java 使用 Spring 容器管理 Servlet
- java 一个简单的servlet实例
- 史上最简单的MultiHashMap的实现(使用JAVA已有的容器框架)
- Java简单容器(集合)分类
- 用Java编写你自己的简单HTTP服务器
- Java WEB之Servlet学习之路(一)一个最简单的Servlet应用
- [收藏] Java中用Servlet容器实现程序监听