基于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
- package com.itstack.servlet;
-
- import java.io.IOException;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
-
- import javax.faces.application.Application;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import com.itstack.netty.NettyServer;
- import com.itstack.service.Global;
-
- public class NettyServletHandler extends HttpServlet {
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- String type = request.getParameter("type");
-
- if(type.equals("open")){
-
- if(!Global.isActive){
- NettyServer server = new NettyServer();
- //线程池
- ExecutorService es = Executors.newCachedThreadPool();
- //启动线程池
- es.execute(server);
- Global.isActive = true;
-
- ServletContext application=this.getServletContext();
- application.setAttribute("isActive", Global.isActive);
-
- }
-
- }
-
- request.getRequestDispatcher("netty/service/nettyservice.jsp").forward(request, response);
-
- }
-
- }
nettyservice.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
- <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- </head>
-
- <body>
- <table border="1">
- <tr>
- <td>状态</td>
- <td>操作</td>
- </tr>
- <tr>
- <td>${ applicationScope.isActive?"open":"close" }</td>
- <td><a href="NettyServletHandler?type=open">开启</a></td>
- </tr>
- </table>
- </body>
- </html>
测试工程下载: