六十七、application内置对象
javax.servlet.ServletContext接口对象实例
方法:publci String getRealPath(String path);取得虚拟映射对应的真实路径
-----jsp
<%@ page pageEncoding="UTF-8"%>
<%
String path=application.getRealPath("/");
%>
<h1><%=path%></h1>
在servlet.xml文件里配置的的虚拟目录:
<Context path="/mldn" docBase="e:\mldnweb"/>
path通过request.getContextPath()取得
docBase通过application.getRealPath()取得
如果是自动部署则取得的是TomcatHOME/webapps/项目路径
经常会用getServletContext()来代替application对象
<%@ page pageEncoding="UTF-8"%>
<%
String path=getServletContext().getRealPath("/");
%>
<h1><%=path%></h1>
或者
<%@ page pageEncoding="UTF-8"%>
<%
String path=this.getServletContext().getRealPath("/");
%>
<h1><%=path%></h1>
六十八、操作文件
取得虚拟目录映射对应的真实路径,最重要的作用在于它可以进行文件操作
Scanner PrintWriter(PrintStream)
----------input.jsp输出操作
<%@ page pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<form action="" method="post">
请输入内容:<textarea cols="30" rows="5" name="msg"></textarea>
<input type="submit" value="提交">
</form>
<%
request.setCharacterEncoding("UTF-8");
String msg=request.getParameter("msg");
if(msg!=null){
File file=new File(getServletContext().getRealPath("/msg-txt/msg.txt"));
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
PrintWriter pw=new PrintWriter(new FileOutputStream(file));
pw.println(msg);
pw.close();
%>
<%
}
%>
-----read.jsp读取
<%@ page pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%
request.setCharacterEncoding("UTF-8");
File file=new File(getServletContext().getRealPath("/msg-txt/msg.txt"));
Scanner sc=new Scanner(new FileInputStream(file));
sc.useDelimiter("/n");
while(sc.hasNext()){
%>
<%=sc.next()%><br>
<%
}
%>
这些操作取决于完整路径的取得