在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());
分享到:
相关推荐
- **运行环境**:与Applets不同,Servlet并不运行在Web浏览器或GUI环境中,而是通过servlet引擎在Web服务器中执行。 - **通信方式**:客户端(如Web浏览器)通过HTTP协议向Web服务器发送请求,请求由Servlet引擎处理...
Servlet分发控制器是一种在Web应用中用于管理请求和响应流程的核心组件,它的设计灵感来源于Struts 1框架中的控制器概念。在Java Web开发中,Servlet扮演着服务器端程序的角色,负责接收HTTP请求并生成响应。...
`HttpSession`是Java Servlet API的一部分,提供了与session交互的方法,如创建、获取、设置和移除session属性,以及设置和获取session的过期时间。 六、HttpSession 常见问题 1. session 在何时被创建 通常,当...
此外,HttpServletRequest还提供了获取请求头信息的方法,如`getHeader()`,用于获取特定头部字段的值,例如`referer`(记录来源页面的URL)、`accept-language`(用户的语言偏好)和`User-Agent`(用户使用的浏览器...
在这个场景下,Servlet可能接收一个URL请求,然后从数据库或其他来源获取报警历史数据,并将其转换为Excel格式以便用户下载。 基于这些信息,我们可以讨论以下URL相关知识点: 1. **URL结构**:URL由协议(如http...
Flex提供了`mx.rpc.http.HTTPService`组件,可以方便地从Servlet获取XML数据。你可以通过设置其`resultFormat`属性为`e4x`来处理XML结果,或者使用`mx.utils.XMLUtil`类进行XML操作。 5. **事件驱动编程**:Flex...
本文将详细介绍如何通过Java Servlet获取客户端的IP地址和访问URL,并提供相应的简单代码示例。 首先,我们要理解Servlet接口中的`HttpServletRequest`对象。这个对象是Servlet容器(如Tomcat、Jetty)在请求到达...
在init方法中,ActionServlet会获取/WEB-INF/struts-config.xml文件中的配置信息,然后将其解析成ActionMapping对象,并将其存储在内存中。然后,ActionServlet会将用户请求传递给对应的Action对象,以完成用户请求...
4. 在web.xml文件中配置Servlet,指定URL映射和初始化参数。 5. 运行Web应用,通过浏览器访问Servlet。 4.7-4.11分别讲解了Servlet接收请求参数、存取属性对象、视图派发、获取初始化参数以及设置Servlet的加载顺序...
这通常发生在缓存中获取数据而非直接从服务器获取。 7. **204 No Content** - 服务器成功处理了请求,但是没有返回任何内容。这对于某些只需要确认操作已完成而无需返回数据的场景非常有用。 8. **205 Reset ...
在JSP中,我们可能会利用request对象来获取当前的上下文路径,并构建出完整的URL,包括请求的协议、服务器名、端口号和Servlet的映射路径。 通过上述步骤,我们就可以在JSP页面中通过Servlet动态地展示服务器硬盘上...
当使用`sendRedirect()`进行重定向时,如果URL中包含中文字符,也会出现乱码问题。 解决方法是使用`URLEncoder.encode()`对中文进行编码处理。 ```java protected void doGet(HttpServletRequest request, ...
在实战应用中,获取客户端请求的URL是一项常见的需求,这有助于我们理解请求来源,进行日志记录,或者根据不同的URL采取不同的处理策略。在Hessian服务端,我们可以利用Servlet API来获取这些信息。例如,`...
1. **盗取Cookie**:通过XSS攻击,攻击者可以窃取用户的Cookie,进而获取用户的登录状态和其他敏感信息。 2. **利用Flash和Java**:通过植入恶意Flash或Java代码,攻击者可以获得更高权限。 3. **执行管理动作**:...
- **Token验证**:在图片URL中加入特定的标识符(如Token),并在服务器端进行验证。 - **HTTPS加密验证**:确保图片链接只能通过HTTPS访问,提高安全性。 - **自定义头部信息**:设置自定义的HTTP头部信息进行...
- **示例**:如果一个链接为 `http://a.jsp?id=123`,那么可以通过 `request.getParameter("id")` 来获取URL中的参数值 "123"。 - **getAttribute**:此方法用于获取由服务器端设置的数据,这些数据可以被多个组件...
在Servlet中,可以通过检查HttpServletRequest的`getHeader("Referer")`方法来获取请求的来源。如果来源不是预期的站点,那么可以拒绝服务。 5. **标签中的"java servlet request"`:这部分主要指使用Java编程处理...
在Web开发中,有时我们需要获取用户访问历史中的信息,例如上一页面的URL以及当前页面的URL。这在实现某些功能时非常有用,比如页面跟踪、数据统计、导航或者实现某些特定的交互逻辑。本节将详细介绍两种常用的方法...
这种方式在安全性上存在隐患,因为所有参数都暴露在URL中,可能被浏览器历史记录或网络监听截获。 #### 请求头分析 每个GET请求都包含一系列的请求头信息,如`Accept`、`Accept-Language`、`User-Agent`等,这些...