application内置对象及文件操作

目录

application内置对象

简介

文件操作


application内置对象

简介

application保存的对象主要是保存servlet上下文,也就是说利用application所保存的属性保存在服务器之中,application内置对象对应的类型是:javax.sevlet.ServletContext。application中最重要的方法:

public String getRealPath(String path) ;

范例:使用getRealPath

<%@ page pageEncoding="UTF-8"%>
<%
    String path = application.getRealPath("/");
%>
<%= path %>

此时取得的就是“<Context path="/ren" docBase="d:\myweb"/>”,真实的项目目录;需要注意的是getRealPath()接收的路径可能不存在,就像字符串一样只是指明了操作的路径,但是并没有操作。

在真实的开发之中往往不使用application,而是使用this.getServletContext()的方法来代替application对象。

文件操作

既然已经取得了磁盘操作路径就可以进行IO流的操作了,以文件的读写操作为例,需要使用Scanner、PrintStream(PtintWriter);

范例:文件读写操作

input.jsp

<%@ page pageEncoding="UTF-8"%> 
<form action="input_do.jsp" method="POST">
    文件名称:<input type="text" name="filename" id="filename" value="ren.txt"> <br>
    文件内容:<textarea name="note" id="note" cols="30" rows="10"></textarea> <br>
    <input type="submit" value="创建文件">
</form>

input_do.jsp 写入文件

<%@ page pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<%
    String filename = request.getParameter("filename") ;
    String note = request.getParameter("note") ;
    String filePath = this.getServletContext().getRealPath("/myfile/txt/") + filename;
    File file = new File(filePath) ;
    if (!file.getParentFile().exists()){
        file.getParentFile().mkdirs();
    }
    PrintWriter pw = new PrintWriter(new FileOutputStream(file));
    pw.println(note);
    pw.close() ;
%>
<a href="read_file.jsp?filename=<%=filename%>">read_file</a>

read_file.jsp

<%@ page pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%
    String filename = request.getParameter("filename") ;
    String filePath = this.getServletContext().getRealPath("/myfile/txt/") + filename;
    Scanner scan = new Scanner(new File(filePath)) ;
    scan.useDelimiter("\n");
    while(scan.hasNext()){
        %>
        <%= scan.next()%><br>
        <%
    }
    scan.close() ;
%>

以上功能可以实现网站fang'wen计数器,网站计数器需要考虑刷新不会增加计数,解决使用session.isNew()方法,同步问题使用是sychronized。还需要考虑访问速度的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值