浏览器抓取网页(应用中的所有Servlet共享对象的资源路径分析)

优采云 发布时间: 2022-02-16 15:09

  浏览器抓取网页(应用中的所有Servlet共享对象的资源路径分析)

  设置响应内容

  PrintWriter pw= response.getWriter();

  通过 response.getWriter() 获取一个 PrintWriter 对象;

  可以使用 println()、append()、write()、format() 等方法设置返回给浏览器的 html 内容。

  设置响应格式

  response.setContentType("text/html");

  “text/html”是格式,对应request中的request.getHeader("accept")获取header信息。

  “text/html”存在,表示浏览器可以识别这种格式。如果换成其他格式,比如“text/lol”,浏览器无法识别,那么打开这个servlet会弹出下载对话框。

  此类手段常用于实现下载功能

  设置不使用缓存

  使用缓存可以加快页面加载速度,减轻服务器负担。但是你也可能会看到过时的信息,可以通过以下方式通知浏览器不要使用缓存

  response.setDateHeader("过期",0 );

  response.setHeader("缓存控制","无缓存");

  response.setHeader("pragma","no-cache");

  ServletContext 对象

  WEB容器启动时,会为每个Web应用创建一个对应的ServletContext,代表当前的Web应用。它由所有客户共享。

  Web 应用程序中的所有 servlet 共享同一个 ServletContext 对象

  ServletContext 中属性的生命周期从创建开始,到服务器关闭时结束

  ServletContext sc = this.getServletContext() 方法获取对其对象的引用

  添加属性:setAttribute(String name, Object obj);

  获取值:getAttribute(String name),该方法返回Object

  删除属性:removeAttribute(String name)

  读取文件全路径:getRealPath(String path) 其中path必须以/开头,代表当前web应用的根目录

  获取资源流,即获取资源作为输入流:getResourceAsStream(String path)

  返回表示资源的 URL 对象:getResource(String parh)

  获取指定目录下的所有资源路径:getResourcePaths(String path)

  例如获取/WEB-INF下所有资源的路径:

  代码:

  设置 set = context.getResourcePaths("/WEB-INF");

  System.out.println(set);

  结果:

  [/WEB-INF/lib/, /WEB-INF/classes/, /WEB-INF/b.txt, /WEB-INF/web.xml]

  如果资源不在web应用的根目录下,则无法通过ServletContext读取,必须使用类加载器读取

  例如src下的com.gavin包下,类加载器需要添加包的路径,如下:

  InputStream 流 = MyServlet.class.getClassLoader().getResourceAsStream("com/gavin/dbinfo.properties")

  获取初始化参数:

  我们可以使用一个或多个标签为servlet配置一些初始化参数,然后我们通过ServletConfig对象获取这些参数

  如果有如下MyServlet,其配置为:

  我的Servlet

  com.gavin.servlet.MyServlet

  编码

  UTF-8

  可以看到它配置了一个初始化参数:encoding=utf-8,那么我们需要在MyServlet的源码中获取这个参数是这样的:

  字符串编码 = this.getServletConfig().getInitParameter("encoding");

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线