ServletContext实现查看Web资源列表

package com.lovo.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Iterator;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * 
 * @author  Brittany ln
 *
 */

======================Servlet代码================================
public class ContextServlet extends HttpServlet{


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/plain;charset=utf-8");
PrintWriter pw = resp.getWriter();
ServletContext sc = getServletContext();
sc.setAttribute("pwd", "12345");
pw.println("当前Servlet API版本:"+sc.getMajorVersion());
pw.println("获得名称:"+sc.getInitParameter("username"));
pw.println("获得密码:"+sc.getAttribute("pwd"));
pw.println("获得项目的真实物理路径:"+sc.getRealPath("/JustPlain"));

pw.println("==========================================================");

String resource = req.getParameter("resource");//获取源
if(resource!=null && resource.equals("")){ //判断是否为空
InputStream is = sc.getResourceAsStream(resource);//返回资源对象的输入流
if(is!=null){
resp.setContentType("text/plain;charset=utf-8");//设置编码类型
StringWriter sw = new StringWriter(); //获得字符输入流
for(int c=is.read();c!=-1;c=is.read()){ //读取资源
sw.write(c); //循环写入
}
pw.print(sw.toString()); //打印资源
}
}else{ //如果有资源
resp.setContentType("text/html"); //设置编码类型,书写html,使用下拉列表显示
pw.println("<html>");
pw.println("<head>");
pw.println("<title>Source-Code Servlet</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<form>");
pw.println("Choose a resource to see the source. <br/>");
pw.println("<select name=\"resource\">");
listFiles(sc,pw,"/"); //调用listFiles方法
pw.println("</select><br/>");
pw.println("<input toe=\"submit\" ");
pw.println("value=\"Show Source\">");
pw.println("</body>");
pw.println("</html>");
}

}

public void listFiles(ServletContext sc,PrintWriter out,String base){
Set set = sc.getResourcePaths(base); //返回指定路径下所有的web资源列表,路径必须从web应用程序下的根“/”开始
Iterator i = set.iterator(); //获得迭代器
while(i.hasNext()){ 
String s = (String) i.next(); //循环获得web资源列表
if(s.endsWith("/")){ //如果文件下还有子目录 则再循环获得
listFiles(sc, out, s);
}else{ //如果没有子目录  则将得到的所有web资源列表写进下拉列表
out.print("<option value=\""+s);
out.println("\">"+s+"</option>");
}
}
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}

}


======================部署XML文件================================

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  <servlet-name>conf</servlet-name>
  <servlet-class>com.lovo.servlet.ConfigServlet</servlet-class>
  <init-param>
  <param-name>username</param-name>
  <param-value>xiaoming</param-value>
  </init-param>


  </servlet>
  
  <servlet-mapping>
  <servlet-name>conf</servlet-name>
  <url-pattern>/conf</url-pattern>
  </servlet-mapping>
  
  <servlet>
  <servlet-name>cont</servlet-name>
  <servlet-class>com.lovo.servlet.ContextServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>cont</servlet-name>
  <url-pattern>/cont</url-pattern>
  </servlet-mapping>
 
   <context-param>
  <param-name>username</param-name>
  <param-value>xiaoming24dsse</param-value>
  </context-param>
  
</web-app>


======================界面显示================================










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值