浏览器抓取网页(应用中的所有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");