application jsp内置对象

本文介绍了Servlet中的application对象及其常见用途,包括获取项目的真实路径、文件操作及查看属性等。通过具体示例展示了如何利用这些功能。



application是javax.servlet.ServletContext接口的实例,实际上表示的是整个Servlet的上下文。

application对象的常用方法:


以上方法是application的特色方法,当然,除了以上的三个方法之外,对于属性的增加、取得和删除也有其应用的,setAttribute()、getAttribute()、removeAttribute()。

我们来一块学习表格中的三个方法。

取得绝对路径

取得一个项目的虚拟目录对应的绝对路径就要使用getRealPath()方法。一个例子看一下这个方法的使用和效果。


 
  1. application_01.jsp
  2. <%@pagelanguage="java"contentType="text/html"pageEncoding="utf-8"%>
  3. <html>
  4. <head>
  5. <title>web开发</title>
  6. </head>
  7. <body>
  8. <%
  9. Stringpath=application.getRealPath("/");
  10. %>
  11. <h3>真实路径:<%=path%></h3>
  12. </body>
  13. </html>

运行一下可以发现真实路径是我们的项目的路径。但是在这个地方需要注意的是,application的这个操作本身是ServletContext接口的实例,但是在jsp中,还有一个很常用的方法的功能可以完全取得这个方法。那就是getServletContext()方法。下面一个程序看一下这个方法的使用。


 
  1. <%@pagelanguage="java"contentType="text/html"pageEncoding="utf-8"%>
  2. <html>
  3. <head>
  4. <title>web开发</title>
  5. </head>
  6. <body>
  7. <%
  8. Stringpath=getServletContext().getRealPath("/");
  9. %>
  10. <h3>真实路径:<%=path%></h3>
  11. </body>
  12. </html>

运行一下可以发现,这个方法也能取得真实路径。实际上来说,在jsp中getServletContext()方法是比较常用的,各位都应该知道各个网站都有一个网站计数器吧,可以记录用户每次登陆的次数。那个功能的实现就依靠我们的getServletContext()方法。关于网站计数器的操作我们在近期内会讲到。

注意关于getServletContext()方法,看代码的时候,可能有点的同学会问了,在正常情况下所有的方法都应该会有一个对象调用,为什么在这个代码中没有对象呢?就是说在应该会有一个对象调用getServletContext()这个方法,但是看以上代码中并没有调用而直接写上了这个方法。实际上如果非要在这个地方加上一个对象的话,那这个对象就可以使用this,this表示的是当前容器。将上面的代码改成如下


 
  1. <%@pagelanguage="java"contentType="text/html"pageEncoding="utf-8"%>
  2. <html>
  3. <head>
  4. <title>web开发</title>
  5. </head>
  6. <body>
  7. <%
  8. Stringpath=this.getServletContext().getRealPath("/");
  9. %>
  10. <h3>真实路径:<%=path%></h3>
  11. </body>
  12. </html>

运行一下并没有变化。this是可以省略的。可以说this.getServletContext()方法是个重点应用。

那么取得绝对路径的用处的是什么呢?这个可有大用处了,能取得绝对路径就意味着在jsp中可以进行文件操作了。有的同学问我文件怎么操作,在这儿一块以一个实例来看一下文件的操作。

如果想进行文件的操作首先一定需要通过File类找到一个指定的路径,这个路径最好是绝对路径


 
  1. application_02.jsp
  2. <%@pagelanguage="java"contentType="text/html"pageEncoding="gbk"%>
  3. <html>
  4. <head>
  5. <title>web开发</title>
  6. </head>
  7. <body>
  8. <formaction="application_03.jsp">
  9. 输入文件名称:<inputtype="text"name="filename"><br>
  10. 输入文件内容:<textareaname="filecontent"cols="30"rows="3">
  11. </textarea><br>
  12. <inputtype="submit"values="保存">
  13. <inputtype="reset"values="重置">
  14. </form>
  15. </body>
  16. </html>

 
  1. application_03.jsp
  2. <%@pagelanguage="java"contentType="text/html"pageEncoding="gbk"%>
  3. <%@pageimport="java.io.*"%>
  4. <%@pageimport="java.util.*"%>
  5. <html>
  6. <head>
  7. <title>web开发</title>
  8. </head>
  9. <body>
  10. <%
  11. //request.setCharacterEncoding("gbk");
  12. Stringname=newString(request.getParameter("filename").getBytes("ISO-8859-1"));
  13. //Stringname=request.getParameter("filename");
  14. Stringcontent=newString(request.getParameter("filecontent").getBytes("ISO-8859-1"));
  15. //Stringcontent=request.getParameter("filecontent");
  16. System.out.println(name);
  17. //要想操作文件必须有绝对路径,那么这个时候getRealPath();
  18. StringfileName=this.getServletContext().getRealPath("/")+
  19. "note"+File.separator+name;//保存在note文件之中
  20. Filefile=newFile(fileName);//实例化File类对象
  21. if(!file.getParentFile().exists()){
  22. file.getParentFile().mkdir();//建立一个文件夹
  23. }
  24. PrintStreamps=null;
  25. ps=newPrintStream(newFileOutputStream(file));
  26. ps.println(content);
  27. ps.close();
  28. %>
  29. <%
  30. Scannerscan=newScanner(newFileInputStream(file));
  31. scan.useDelimiter("\n");
  32. StringBufferbuf=newStringBuffer();
  33. while(scan.hasNext()){
  34. buf.append(scan.next()).append("<br>");
  35. }
  36. scan.close();
  37. %>
  38. <%=buf%>
  39. </body>
  40. </html>

运行一下application_02.jsp,提交内容,看浏览器的效果,显示的是提交的内容,那么文件在哪儿呢?看一下tomcat底下的webappls文件夹,然后找到程序的项目打开,看到有个note的文件夹对吗,打开文件夹,里面就不用我说了,是提交的内容,记得用记事本打开。

注意: 注意在application_03.jsp中接收参数的乱码处理操作。 注意包类的导入,文件当然用到java.io.*.文件操作实际上是属性java SE的内容,不熟悉的同学可以再学一下关于文件Io的操作。

查看属性

在application中有一个方法可以取得全部的属性。


 
  1. application_04.jsp
  2. <%@pagelanguage="java"contentType="text/html"pageEncoding="utf-8"%>
  3. <%@pageimport="java.util.*"%>
  4. <html>
  5. <head>
  6. <title>web开发</title>
  7. </head>
  8. <body>
  9. <%
  10. Enumerationenu=this.getServletContext().getAttributeNames();//取得全部的属性
  11. while(enu.hasMoreElements()){
  12. Stringname=(String)enu.nextElement();
  13. %>
  14. <h4><%=name%>
  15. <%=this.getServletContext().getAttribute(name)%>
  16. </h4>
  17. <%
  18. }
  19. %>
  20. </body>
  21. </html>

看一下运行结果,取得的全部属性到底是个什么东西,如下就是取得的全部属性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值