在Servlet2.4规范中,新增加了一个技术,就是可以监听客户端的请求。一旦能够在监听程序中获得客户端的请求,就可以对请求进行统一处理。比如做一个web管理程序,如果在本机访问,就可以不登录,如果是远程访问,那么就需要登录。这样我们就可以监听客户端的请求,从请求中获得客户端的地址,并通过这个地址做出对应的处理。
下面给出一个实例
package com.test.ch9;
import javax.servlet.*;
public class MyRequestListener implements ServletRequestListener,ServletRequestAttributeListener{
//ServletRequestListener
public void requestDestroyed(ServletRequestEvent sre)
{
logout("request destroyed");
}
public void requestInitialized(ServletRequestEvent sre){
logout("request init");
ServeltRequest sr=sre.getServeltRequest();
if(sr.getRemoteAddr().startsWith("127"))
sr.setAttribute("isLogin",new Boolean(true));
else sr.setAttribute("isLogin",new Boolean(false));
}//ServletRequestListener
//ServletRequestAttributeListener
public void attributeAdded(ServletRequestAttributeEvent event)
{
logout("attributeAdded('"+event.getName()+"','"+event.getValue()+"')");
}
public void attributeRemoved(ServletRequestAttributeEvent event){
logout("attributeRemoved('"+event.getName()+"','"+event.getValue()+"')");
}
public void attributeReplaced(ServeltRequestAttributeEvent event){
logout("attributeReplaced('"+event.getName()+"','"+event.getValue()+"')");
}//ServletRequestAttributeListener
private void logout(String msg){
java.io.PrintWriter out=null;
try{
out=new java.io.PrintWriter(new java.io.FileOutputStream("..//request.txt",true));
out.println(msg);
out.close();
}
catch(Exception e){
out.close();
}
}
}
在MyRequestListener中,实现了对客户端请求和请求中参数设置的监听。要实现着两个监听功能,需要实现ServletRequestListener和ServletRequestAttributeListener接口。我们看它的requestInitialized方法。在这个方法里,它获得客户端请求对象,然后通过这个请求对象获得访问客户端IP地址。如果这个地址以“127”开始,那么认为它是从本机访问的,就在请求中设置一个isLogin的属性,并且这个属性的值为Boolean(true)对象,如果不是从本机访问,那么必须把这个属性设置为Boolean(false)对象。
在浏览器中输入http://127.0.0.1:8080/ch9/login.jsp,将直接调用index.jsp页面。如果在另一台机器上访问这个页面,将出现登陆的界面。
分享到:
相关推荐
在IT领域,尤其是在Web开发和调试中,...总之,掌握网络请求监听技巧对于任何Web开发者来说都是必不可少的。无论你是初学者还是经验丰富的专业人士,都应该熟悉并熟练运用谷歌浏览器的开发者工具来提升你的工作效果。
这个函数会返回一个新的套接字用于和客户端通信,而原来的套接字继续监听新的连接请求。 4. **读取和解析HTTP请求**:在接受到连接后,服务器需要读取客户端发送的HTTP请求。可以使用`recv()`或`read()`函数读取...
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务的解决方法 Oracle 是一款功能强大且广泛应用的关系数据库管理系统,它提供了强大的数据存储和管理功能。但是,在使用 Oracle 时,用户经常会遇到各种错误...
首先建立服务器的socket来监听客户端的请求: tcpSerSock=socket(AF_INET,SOCK_STREAM) tcpSerSock.bind(ADDR) tcpSerSock.listen(5) 这样服务器的监听socket就建好了。 接下来的思路是,如果要监听多个客户端,则...
本主题聚焦于“Leaflet监听地图移动”,这是一项关键功能,允许开发者响应用户对地图的操作,例如拖动、缩放等,进而更新地图内容或触发特定事件。通过监听这些事件,我们可以实现动态数据加载、分块加载地图等高级...
Java Socket通信中最基本的服务端监听客户端请求,收发数据的Demo。
`RequestListener` 是一种机制,允许开发者监听应用内的网络请求,并在请求完成时及时更新UI。这个概念尤其对于实时性要求高的应用,如社交媒体、即时通讯或者在线购物应用,至关重要。 在iOS开发中,我们通常使用...
Oracle监听程序无法识别连接描述符中请求的服务解决方案 Oracle监听程序是 Oracle数据库管理系统中的一种重要组件,负责监听和处理来自客户端的连接请求。但是,在某些情况下,监听程序可能无法识别连接描述符中...
2. **搜索功能**:通过图标或快捷键`Ctrl+F`启用,支持对捕获的请求进行关键字搜索。 3. **抓取状态切换**:通过圆圈中心带红点的图标来控制抓取状态的显示与否。 4. **编辑修改功能**:允许用户直接在界面上编辑...
编写一个网络服务器的模拟程序: 从一个SOCKET监听网络请求,并进行处理. 网络用户可发来四类请求A/B/C/D/E. 每个类请求分别用一个函数处理. A请求的处理函数是睡眠1秒钟, B请求的处理函数是睡眠2秒钟, C请求的处理...
NSNetworkManager是一个iOS网络管理工具,它封装了网络请求的细节,简化了网络编程的工作,同时也提供了对网络状态的监控和文件操作的能力。 在iOS中,网络实时监听主要依赖于`Reachability`库,这个库可以检测网络...
描述中提到的“当有用户发送请求信息时,程序可以监听到,并能交互文本信息”,意味着这个程序不仅能够监听到网络请求,还能对这些请求进行处理,甚至可能实现与发送请求的用户进行交互。这通常需要程序具备解析网络...
配置好本机ip和监听端口号即可监听
ora-12514:TNS:监听程序当前无法识别连接描述符中请求的服务bug,解决文档.
3. **开始监听**:使用Listen方法设置最大连接队列长度,开始监听连接请求。 ```csharp serverSocket.Listen(10); // 10是连接队列的最大长度 ``` 4. **接受连接**:当有客户端请求连接时,调用Accept方法阻塞等待...
根据提供的文件信息,我们可以深入探讨Java中如何利用监听器机制来实现对客户端请求和服务端操作的监听功能。这里主要涉及到了Java Web应用中的监听器,尤其是`HttpSessionListener`和`HttpSessionAttributeListener...
服务器端应用程序是网络服务的核心部分,它负责监听客户端的连接请求并进行响应,为用户提供服务。在计算机网络中,服务器端程序扮演着重要的角色,它们是互联网服务的基石,能够处理来自全球各地的用户请求。本文将...
这些插件可以在后台监听和记录所有的网络请求,包括Ajax请求,以便开发者进行分析。 以"Network"面板为例,这是Chrome开发者工具的一个核心部分,它可以详细展示页面加载过程中的所有网络活动,包括Ajax请求。每条...
特别的,如果内网DNS直接将A记录指向了服务器,而服务器需要处理内网的HTTPS请求和外部DMZ区的HTTP请求,那么服务器就需要同时监听HTTP和HTTPS端口,以保证内外网访问的一致性。 配置示例中,我们可以看到在监听...