Izmēģiniet sekojošo:
importēt javax.servlet.*; importēt javax.servlet.http.*; importēt java.io.*; public class MessageServlet paplašina HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { // izvada HTML lapu res.setContentType("text/html"); // ielādējiet konfigurācijas parametru (tas ir jāiestata pašam) String root = getInitParameter("root"); // izdrukāt kādu html ServletOutputStream out = res.getOutputStream(); ārā. println(" "); out.println(" Dienas vēstījums "); out.println(" Šodienas ziņa: "); // izdrukājiet failu InputStream in = null; mēģiniet { in = new BufferedInputStream (new FileInputStream(root + "/message.txt") ); int ch; while ((ch = in.read()) != -1) { out.print((char)ch); } } beidzot { if (in != null) in.close(); // ļoti svarīgi } // pabeigt out.println(" "); } }
[Piezīme: tagad esmu veiksmīgi apkopojis un palaidis iepriekš minēto piemēru. Jūs prasījāt darba avotu, jūs to sapratāt :-)]
Iespējams, vēlēsities darīt vairāk, nekā tikai kopēt failu; paskaties iekšā java.io pakotne klasēm, kas palīdz apstrādāt failu, piemēram StreamTokenizer.
Pievērsiet uzmanību InitParameter izmantošanai, lai nodrošinātu failu sistēmas sakni. Tādā veidā jūsu servletu var izmantot citos serveros, neiekodējot faila ceļu.
Ņemiet vērā arī a beidzot bloķēt, lai aizvērtu failu. Tādā veidā, pat ja lasīšana rada izņēmumu, fails tiks aizvērts. Tas ir svarīgi serverī, jo failu deskriptori ir ierobežoti, un jūs nevēlaties nekādu noplūdi, jo serveris darbosies ļoti ilgu laiku (cerams!).
Ikreiz, kad piekļūstat vietējiem resursiem, jums ir jāņem vērā drošības caurumi. Piemēram, ja izveidojat faila nosaukumu, pamatojoties uz FORM parametru, jums tas ir jāapstiprina, lai pārliecinātos, ka, ja hakeris kā savu lietotājvārdu nosūta, piemēram, “/etc/passwd”, viņš faktiski nesaņems sistēmu. paroles fails.







