基于Netty5.0中级案例一之Netty与Web

来源:互联网 发布:师洋淘宝店截图 编辑:程序博客网 时间:2024/05/17 06:04


基于Netty5.0中级案例一之Netty与Web

2015-1-1 付政委 Netty5.0 中级篇

前言介绍:

    本案例主要介绍如何在javaweb程序中加入Netty,通过web启动Netty来收发客户端连接的发来的数据。

    本案例不难只不过因为不在单独使用Netty所以划分到中级篇章中。

环境需求:

    1、jdk1.7

    2、MyEclipse8.5【jdk配置到1.7】

    3、tomcat1.7

    4、Netty5.0

    5、网络调试助手

代码部分:

    *测试代码部分很简单,就是启动一个servlet,当网页上提交过来请求后开启Netty服务端【控制启动不要多次启动】

      启动后就可以用网络调试助手测试了


NettyServletHandler.java


  1. package com.itstack.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6.  
  7. import javax.faces.application.Application;
  8. import javax.servlet.ServletContext;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13.  
  14. import com.itstack.netty.NettyServer;
  15. import com.itstack.service.Global;
  16.  
  17. public class NettyServletHandler extends HttpServlet {
  18.  
  19. public void doGet(HttpServletRequest request, HttpServletResponse response)
  20. throws ServletException, IOException {
  21. this.doPost(request, response);
  22. }
  23.  
  24. public void doPost(HttpServletRequest request, HttpServletResponse response)
  25. throws ServletException, IOException {
  26.  
  27. String type = request.getParameter("type");
  28. if(type.equals("open")){
  29. if(!Global.isActive){
  30. NettyServer server = new NettyServer();
  31. //线程池
  32. ExecutorService es = Executors.newCachedThreadPool();
  33. //启动线程池
  34. es.execute(server);
  35. Global.isActive = true;
  36. ServletContext application=this.getServletContext();
  37. application.setAttribute("isActive", Global.isActive);
  38. }
  39. }
  40. request.getRequestDispatcher("netty/service/nettyservice.jsp").forward(request, response);
  41. }
  42.  
  43. }




nettyservice.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  3. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
  4. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  5. <%
  6. String path = request.getContextPath();
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  8. %>
  9.  
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  11. <html>
  12. <head>
  13. <base href="<%=basePath%>">
  14. </head>
  15. <body>
  16. <table border="1">
  17. <tr>
  18. <td>状态</td>
  19. <td>操作</td>
  20. </tr>
  21. <tr>
  22. <td>${ applicationScope.isActive?"open":"close" }</td>
  23. <td><a href="NettyServletHandler?type=open">开启</a></td>
  24. </tr>
  25. </table>
  26. </body>
  27. </html>


测试工程下载:

NettyWeb_01.zip

0 0
原创粉丝点击