`
lu2002lulu
  • 浏览: 97348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Servlet中获取来源URL

阅读更多
在Servlet中获取来源URL,即发送当前请求的URL。比如从a.jsp进入Servlet,在Servlet中可以获得a.jsp的路径。以下是代码:

Java代码
public void doGet(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {  
    request.setCharacterEncoding("utf-8");  
    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>请求来源</TITLE></HEAD>");  
    out.println("  <BODY>");  
    String fromURL = request.getHeader("Referer");        
    out.print("来源于:"+fromURL);  
    StringBuffer requestURL = request.getRequestURL();  
    String queryString = request.getQueryString();  
    if(queryString != null){  
        requestURL .append("?").append(queryString);  
    }  
    out.print("<br />请求:"+requestURL.toString());  
    out.println("  </BODY>");  
    out.println("</HTML>");  
    out.flush();  
    out.close();  


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
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>请求来源</TITLE></HEAD>");
out.println("  <BODY>");
String fromURL = request.getHeader("Referer");     
out.print("来源于:"+fromURL);
StringBuffer requestURL = request.getRequestURL();
String queryString = request.getQueryString();
if(queryString != null){
requestURL .append("?").append(queryString);
}
out.print("<br />请求:"+requestURL.toString());
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} 从代码中可以看出获取来源URL,是通过获取HTTP头的方式得到的,代码中String fromURL = request.getHeader("Referer");  语句。而request.getRequestURL()是获取请求的URL,不包括参数。request.getQueryString()用于获取参数信息。

以下附录在编程常要获取的,包括获取一些常用的HTTP头:

Java代码
out.println("Protocol: " + request.getProtocol());    
out.println("Scheme: " + request.getScheme());    
out.println("Server Name: " + request.getServerName() );    
out.println("Server Port: " + request.getServerPort());    
out.println("Protocol: " + request.getProtocol());    
out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo());    
out.println("Remote Addr: " + request.getRemoteAddr());    
out.println("Remote Host: " + request.getRemoteHost());    
out.println("Character Encoding: " + request.getCharacterEncoding());    
out.println("Content Length: " + request.getContentLength());    
out.println("Content Type: "+ request.getContentType());    
out.println("Auth Type: " + request.getAuthType());    
out.println("HTTP Method: " + request.getMethod());    
out.println("Path Info: " + request.getPathInfo());    
out.println("Path Trans: " + request.getPathTranslated());    
out.println("Query String: " + request.getQueryString());    
out.println("Remote User: " + request.getRemoteUser());    
out.println("Session Id: " + request.getRequestedSessionId());    
out.println("Request URI: " + request.getRequestURI());    
out.println("Servlet Path: " + request.getServletPath());    
out.println("Accept: " + request.getHeader("Accept"));    
out.println("Host: " + request.getHeader("Host"));    
out.println("Referer : " + request.getHeader("Referer"));    
out.println("Accept-Language : " + request.getHeader("Accept-Language"));    
out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding"));    
out.println("User-Agent : " + request.getHeader("User-Agent"));    
out.println("Connection : " + request.getHeader("Connection"));    
out.println("Cookie : " + request.getHeader("Cookie"));    
out.println("Created : " + session.getCreationTime());    
out.println("LastAccessed : " + session.getLastAccessedTime());  

分享到:
评论

相关推荐

    Servlet中文API文档

    - **运行环境**:与Applets不同,Servlet并不运行在Web浏览器或GUI环境中,而是通过servlet引擎在Web服务器中执行。 - **通信方式**:客户端(如Web浏览器)通过HTTP协议向Web服务器发送请求,请求由Servlet引擎处理...

    servlet分发控制器

    Servlet分发控制器是一种在Web应用中用于管理请求和响应流程的核心组件,它的设计灵感来源于Struts 1框架中的控制器概念。在Java Web开发中,Servlet扮演着服务器端程序的角色,负责接收HTTP请求并生成响应。...

    jsp和servlet之中的session详细介绍

    `HttpSession`是Java Servlet API的一部分,提供了与session交互的方法,如创建、获取、设置和移除session属性,以及设置和获取session的过期时间。 六、HttpSession 常见问题 1. session 在何时被创建 通常,当...

    教会你怎样用好servlet

    此外,HttpServletRequest还提供了获取请求头信息的方法,如`getHeader()`,用于获取特定头部字段的值,例如`referer`(记录来源页面的URL)、`accept-language`(用户的语言偏好)和`User-Agent`(用户使用的浏览器...

    url大全

    在这个场景下,Servlet可能接收一个URL请求,然后从数据库或其他来源获取报警历史数据,并将其转换为Excel格式以便用户下载。 基于这些信息,我们可以讨论以下URL相关知识点: 1. **URL结构**:URL由协议(如http...

    flex与后台servlet建立连接

    Flex提供了`mx.rpc.http.HTTPService`组件,可以方便地从Servlet获取XML数据。你可以通过设置其`resultFormat`属性为`e4x`来处理XML结果,或者使用`mx.utils.XMLUtil`类进行XML操作。 5. **事件驱动编程**:Flex...

    java servlet获得客户端相关信息的简单代码

    本文将详细介绍如何通过Java Servlet获取客户端的IP地址和访问URL,并提供相应的简单代码示例。 首先,我们要理解Servlet接口中的`HttpServletRequest`对象。这个对象是Servlet容器(如Tomcat、Jetty)在请求到达...

    struts1之ActionServlet详解_动力节点Java学院整理

    在init方法中,ActionServlet会获取/WEB-INF/struts-config.xml文件中的配置信息,然后将其解析成ActionMapping对象,并将其存储在内存中。然后,ActionServlet会将用户请求传递给对应的Action对象,以完成用户请求...

    javaee5编程郭庆j2ee-4-第4章servlet.ppt

    4. 在web.xml文件中配置Servlet,指定URL映射和初始化参数。 5. 运行Web应用,通过浏览器访问Servlet。 4.7-4.11分别讲解了Servlet接收请求参数、存取属性对象、视图派发、获取初始化参数以及设置Servlet的加载顺序...

    jspServlet基础入门手册

    这通常发生在缓存中获取数据而非直接从服务器获取。 7. **204 No Content** - 服务器成功处理了请求,但是没有返回任何内容。这对于某些只需要确认操作已完成而无需返回数据的场景非常有用。 8. **205 Reset ...

    JSP中通过Servlet 将服务器硬盘图片并展示到浏览器

    在JSP中,我们可能会利用request对象来获取当前的上下文路径,并构建出完整的URL,包括请求的协议、服务器名、端口号和Servlet的映射路径。 通过上述步骤,我们就可以在JSP页面中通过Servlet动态地展示服务器硬盘上...

    servlet的程序编写的乱码处理

    当使用`sendRedirect()`进行重定向时,如果URL中包含中文字符,也会出现乱码问题。 解决方法是使用`URLEncoder.encode()`对中文进行编码处理。 ```java protected void doGet(HttpServletRequest request, ...

    Hessian实战应用之获取客户端请求URL和重新转发客户端请求

    在实战应用中,获取客户端请求的URL是一项常见的需求,这有助于我们理解请求来源,进行日志记录,或者根据不同的URL采取不同的处理策略。在Hessian服务端,我们可以利用Servlet API来获取这些信息。例如,`...

    JAVA项目实践,URL存在跨站漏洞,注入漏洞解决方案.docx

    1. **盗取Cookie**:通过XSS攻击,攻击者可以窃取用户的Cookie,进而获取用户的登录状态和其他敏感信息。 2. **利用Flash和Java**:通过植入恶意Flash或Java代码,攻击者可以获得更高权限。 3. **执行管理动作**:...

    破解图片防盗链servlet

    - **Token验证**:在图片URL中加入特定的标识符(如Token),并在服务器端进行验证。 - **HTTPS加密验证**:确保图片链接只能通过HTTPS访问,提高安全性。 - **自定义头部信息**:设置自定义的HTTP头部信息进行...

    getAttribute和getParameter区别

    - **示例**:如果一个链接为 `http://a.jsp?id=123`,那么可以通过 `request.getParameter("id")` 来获取URL中的参数值 "123"。 - **getAttribute**:此方法用于获取由服务器端设置的数据,这些数据可以被多个组件...

    httpservlet_request

    在Servlet中,可以通过检查HttpServletRequest的`getHeader("Referer")`方法来获取请求的来源。如果来源不是预期的站点,那么可以拒绝服务。 5. **标签中的"java servlet request"`:这部分主要指使用Java编程处理...

    获取上一页面的URL和本页的URL的方法

    在Web开发中,有时我们需要获取用户访问历史中的信息,例如上一页面的URL以及当前页面的URL。这在实现某些功能时非常有用,比如页面跟踪、数据统计、导航或者实现某些特定的交互逻辑。本节将详细介绍两种常用的方法...

    请求的几种情况.txt

    这种方式在安全性上存在隐患,因为所有参数都暴露在URL中,可能被浏览器历史记录或网络监听截获。 #### 请求头分析 每个GET请求都包含一系列的请求头信息,如`Accept`、`Accept-Language`、`User-Agent`等,这些...

Global site tag (gtag.js) - Google Analytics