application对象
application对象是javax.servlet.ServletContext接口的实例化对象,从单词上翻译表示的是整个Servlet的上下文,ServletContext代表了整个容器的操作
| 方法 | 类型 | 描述 |
1 | String getRealPath(String path) | 普通 | 得到虚拟目录对应的绝对路径 |
2 | public Enumeration getAttributeNames() | 普通 | 得到所有属性的名称 |
3 | public String getContextPath() | 普通 | 取得当前的虚拟路径名称 |
获取虚拟目录对应的绝对路径
<%@ page language="java" contentType="text/html;charset=utf8" pageEncoding="utf8"%>
real path=<% application.getRealPath("/") %>
对于application对象而言,在WEB中也可以使用getServletContext()方法进行替代。
<%@ page language="java" contentType="text/html;charset=utf8" pageEncoding="utf8" %>
real path<%=this.getServletContext().getRealPath("/")%>
文件操作:输入表单
<!doctype html>
<html>
<head></head>
<body></body>
<form method="post" action="inputFile.jsp">
<input name="fileName" type="text"><br>
<input name="fileContent" type="text"><br>
<button type="submit">submit</button><br>
<button type="reset">reset</button>
</form>
</html>
文件操作:保存内容
<%@ page language="java" contentType="text/html; charset=utf8" pageEncoding="utf8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<% request.setCharacterEncoding("utf8");
String name=request.getParameter("fileName");
String fileContent=request.getParameter("fileContent");
String fileName=application.getRealPath("/")+"note"+File.separator+name;
File file=new File(fileName);
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
PrintWriter printWriter=new PrintWriter(new FileOutputStream(file));
printWriter.println(fileContent);
printWriter.close();
%>
<%
Scanner scanner=new Scanner(new FileInputStream(file));
scanner.useDelimiter("\n");
StringBuffer stringBuffer=new StringBuffer();
while(scanner.hasNext()){
stringBuffer.append(scanner.next()).append("<br>");
}
scanner.close();
out.print(stringBuffer.toString());
%>
网站计数器
要点:
- 网站的来访人数可能会有很多,有可能超过20位整数,所以必须使用大整数类 —— BigInteger完成;
- 用户每次在第一次访问的时候才需要进行计数的操作,在执行计算之前必须使用isNew()判断;
- 在进行更改、保存的时候需要进行同步操作
查看application范围里的属性
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@pageimport="java.util.*"%>
<% // 得到全部的属性名称
Enumeration enu = this.getServletContext().getAttributeNames() ;
while(enu.hasMoreElements()){ // 循环输出
String name = (String)enu.nextElement() ; // 得到属性名称
%>
<h4><%=name%> --> <%=this.getServletContext().getAttribute(name)%></h4>
<%
}
%>