首页 > 其他分享 >webservie 客户端读取服务器端日志例子(以网页展现)

webservie 客户端读取服务器端日志例子(以网页展现)

时间:2023-05-06 16:02:36浏览次数:34  
标签:webservie 服务器端 private String println import 客户端 response out




import java.io.BufferedInputStream;
下面是一个完整的 servlet,直接复制它既可以使用,只需要修改红色部分路径即可,

本例使用方法:在浏览器直接键入URL:即可展现日志,如下:http://localhost:8888/BPMDemo/BPMClientLogService?point=p1


代码: 

import java.io.BufferedReader; 

import java.io.File; 

import java.io.FileInputStream; 

import java.io.IOException; 

import java.io.InputStreamReader; 

import java.io.PrintWriter; 


import javax.servlet.ServletException; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 


public class BPMClientLogService extends HttpServlet { 


 /** 

 * 

 */ 

 private static final long serialVersionUID = 1L; 


 /** 

 * Constructor of the object. 

 */ 

 public BPMClientLogService() { 

 super(); 

 } 


 /** 

 * The doGet method of the servlet. <br> 

 * 

 * This method is called when a form has its tag value method equals to get. 

 * 

 * @param request the request send by the client to the server 

 * @param response the response send by the server to the client 

 * @throws ServletException if an error occurred 

 * @throws IOException if an error occurred 

 */ 

 public void doGet(HttpServletRequest request, HttpServletResponse response) 

 throws ServletException, IOException { 


 [color=red]String point = request.getParameter("point"); 

 String fileName = "\\bpm.log"; 

 String filePath = "C:\\BPM_Logs\\"+point+fileName;[/color] if(point.equals("")){ 

 errorHttpContent(response); 

 }else{ 

 showLogContent(response,filePath); 

 } 

 } 




 private void errorHttpContent(HttpServletResponse response) throws IOException{ 

 response.setContentType("text/html;charset=UTF-8"); 

 PrintWriter out = response.getWriter(); 

 out 

 .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); 

 out.println("<HTML>"); 

 out.println(" <HEAD><TITLE>BPMClientLogService</TITLE></HEAD>"); 

 out.println(" <BODY>"); 

 out.println(createTitle()); 

 out.println(createBar()); 

 out.println("Reason: did not find the relevant connection point!!!"); 

 out.println(" </BODY>"); 

 out.println("</HTML>"); 

 out.flush(); 

 out.close(); 

 } 





 private void showLogContent(HttpServletResponse response,String filePath) throws IOException{ 

 response.setContentType("text/html;charset=UTF-8"); 

 PrintWriter out = response.getWriter(); 

 out 

 .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); 

 out.println("<HTML>"); 

 out.println(" <HEAD><TITLE>BPMClientLogService</TITLE></HEAD>"); 

 out.println(" <BODY>"); 

 //---------------------------------------------------------------------------------- 


 out.println(createTitle()); 

 out.println(createBar()); 

 String httpContent = createHttpContent(filePath); 

 if(!httpContent.equals("")){ 

 out.println(createHttpContent(filePath)); 

 }else{ 

 out.println("Reason: did not find the relevant connection point!!!"); 

 } 



 //---------------------------------------------------------------------------------- 

 out.println(" </BODY>"); 

 out.println("</HTML>"); 

 out.flush(); 

 out.close(); 

 } 




 private String createHttpContent(String filePathAndName) { 

 String httpContent = ""; 

 InputStreamReader inr = null; 

 BufferedReader reader = null; 

 try { 

 File f = new File(filePathAndName); 

 if (f.isFile() && f.exists()) { 

 inr = new InputStreamReader(new FileInputStream(f), get_charset(f)); 

 reader = new BufferedReader(inr); 

 String line; 

 while ((line = reader.readLine()) != null) { 

 if (line.startsWith("20")) { 

 httpContent += createLine(); 

 httpContent += createLine(line); 

 } else { 

 httpContent += createLine(line); 

 } 

 } 

 } 

 } catch (Exception e) { 

 System.out.println("读取文件内容操作出错"); 

 e.printStackTrace(); 

 } finally { 

 close(reader, inr); 

 } 

 return httpContent; 

 } 




 private void close(BufferedReader reader, InputStreamReader inr) { 

 try { 

 if (reader != null) 

 reader.close(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 } 

 try { 

 if (inr != null) 

 inr.close(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 } 


 } 




 private String createLine(String content){ 

 System.out.println("<h4>"+content+"</h4>"); 

 return "<h4>"+content+"</h4>"; 

 } 




 private String createLine(){ 

 return "<br/><br/>"; 

 } 




 private String createBar(){ 

 return "<hr width='60%' size='10' align='center' color='#9900ff'/>"; 

 } 



 private String createTitle() { 

 return "<h2 style='color: #9900ff;font-weight: 400;' align='center'>BPMPlatform client-side logging service ! ! !</h2>"; 

 } 



 private String get_charset(File file) { 

 String charset = "GBK"; 

 byte[] first3Bytes = new byte[3]; 

 try { 

 boolean checked = false; 

 BufferedInputStream bis = new BufferedInputStream( 

 new FileInputStream(file)); 

 bis.mark(0); 

 int read = bis.read(first3Bytes, 0, 3); 

 if (read == -1) 

 return charset; 

 if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) { 

 charset = "UTF-16LE"; 

 checked = true; 

 } else if (first3Bytes[0] == (byte) 0xFE 

 && first3Bytes[1] == (byte) 0xFF) { 

 charset = "UTF-16BE"; 

 checked = true; 

 } else if (first3Bytes[0] == (byte) 0xEF 

 && first3Bytes[1] == (byte) 0xBB 

 && first3Bytes[2] == (byte) 0xBF) { 

 charset = "UTF-8"; 

 checked = true; 

 } 

 bis.reset(); 

 if (!checked) { 

 int len = 0; 

 int loc = 0; 


 while ((read = bis.read()) != -1) { 

 loc++; 

 if (read >= 0xF0) 

 break; 

 if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBK 

 break; 

 if (0xC0 <= read && read <= 0xDF) { 

 read = bis.read(); 

 if (0x80 <= read && read <= 0xBF)// 双字节 (0xC0 - 0xDF) 

 // (0x80 - 

 // 0xBF),也可能在GB编码内 

 continue; 

 else 

 break; 

 } else if (0xE0 <= read && read <= 0xEF) {// 也有可能出错,但是几率较小 

 read = bis.read(); 

 if (0x80 <= read && read <= 0xBF) { 

 read = bis.read(); 

 if (0x80 <= read && read <= 0xBF) { 

 charset = "UTF-8"; 

 break; 

 } else 

 break; 

 } else 

 break; 

 } 

 } 

 System.out.println(loc + " " + Integer.toHexString(read)); 

 } 


 bis.close(); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 } 


 return charset; 

 } 



 /** 

 * The doPost method of the servlet. <br> 

 * 

 * This method is called when a form has its tag value method equals to post. 

 * 

 * @param request the request send by the client to the server 

 * @param response the response send by the server to the client 

 * @throws ServletException if an error occurred 

 * @throws IOException if an error occurred 

 */ 

 public void doPost(HttpServletRequest request, HttpServletResponse response) 

 throws ServletException, IOException { 


 } 





}

标签:webservie,服务器端,private,String,println,import,客户端,response,out
From: https://blog.51cto.com/u_7450530/6250456

相关文章

  • Python asyncore socket客户端开发基本使用
    导读asyncore库是python的一个标准库,提供了以异步的方式写入套接字服务的客户端和服务器的基础结构,这篇文章主要介绍了Pythonasyncoresocket客户端开发基本使用,需要的朋友可以参考下介绍asyncore库是python的一个标准库,提供了以异步的方式写入套接字服务的客户端和服......
  • SSH客户端常用工具SecureCRT操作
    1.1SecureCRT工具介绍SecureCRT是一款支持SSH(SSH1和SSH2)协议的终端仿真软件,常被用来运行于Windows下远程登录UNIX或Linux服务器。SecureCRT软件功能强大,不仅仅支持SSH协议,同时还支持Telnet、RLogin、Serial和TAPI等协议,它有非常多的功能,这里就不一一介绍了,常用功能可见下文介绍......
  • yt-dlp 图形化客户端 Cube YouTube Downloader
    yt-dlp——Youtube视频命令行下载工具youtube-dl扩展版,添加了新的特性和补丁。https://bbs.zsxwz.com/thread-4855.htm虽然强大,命令行下载工具,可能很多小伙伴护台喜欢用,就可以使用图形化客户端CubeYouTubeDownloader。 1、下载CubeYouTubeDownloader并解压:https:/......
  • java 实现简单的http客户端
    1、废话不多说,代码如下packagecom.linhuaming.test;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.MalformedURLException;importjava.net.Socket;importjava.net.URL;/***http客户端测试*/publicclassHttpClientTest{pub......
  • PostgreSQL 12 文档: PostgreSQL 客户端工具
    PostgreSQL客户端应用这部份包含PostgreSQL客户端应用和工具的参考信息。不是所有这些命令都是通用工具,某些需要特殊权限。这些应用的共同特征是它们可以被运行在任何主机上,而不管数据库服务器在哪里。当在命令行上指定用户和数据库名时,它们的大小写会被保留—空格或特殊字......
  • 5分钟教你配置命令行界面的163邮箱客户端
    网易163免费邮箱相关服务器信息:mutt是命令行下的邮件客户端,它仅是管理邮件的组织编辑,邮件的发送和接收需要调用对应的程序。这里用的分别是getmail和msmtp.步骤如下=====1.安装mutt,getmail,msmtp======================$sudoyum-yinstallmuttgetmailmsmtp2.Bui......
  • SSH远程登陆Unbuntu(SSH服务器和客户端配置)
    SSH服务器配置参考:https://blog.csdn.net/weixin_43833430/article/details/127262464 《Ubuntu安装SSH服务》目的:在Unbuntu 中,安装openssh 服务器,开启服务器;安装防火墙,配置防火墙参数(可以通过SSH),然后开启防火墙。重要命令:1systemctlenablessh#开机启动2systemc......
  • Grids for mac(Instagram客户端工具)v8.5.5免注册版
    GridsforMac是一款允许您在桌面上访问Instagram的应用程序。使用网格,您可以像在手机上一样查看您的Instagram提要、故事和探索页面。您还可以发布照片和视频,对帖子点赞和评论,以及向其他用户发送直接消息。Grids具有简洁、直观的界面,易于使用。它还提供了多种自定义选项,包......
  • Python 基于win32com客户端实现Excel操作
    测试环境Python3.6.2代码实现非多线程场景下使用新建并保存EXCELimportwin32com.clientfromwin32apiimportRGBdefsave_something_to_excel(result_file_path):excel_app=win32com.client.Dispatch('Excel.Application')excel_app.Visible=False#设......
  • 07客户端登录
    07客户端登录在开始实现客户端登录前,我将之前的代码做了以下重构。IConfig重新命名为ServiceProxyConfigClientBase重命名为AbpServiceBase文件名改为api\AbpServiceBase.ts将ServiceProxyConfig独立到api\ServiceProxyConfig.ts文件中修改了使用nswag生成客户端的配......