10月9日培训日记

因为学员们反映昨天讲解的信息量太大,所以今天先简要复习了一下昨天所讲解的内容。
区分回调方法与工具方法
子类Servlet要初始化,不能直接跑到父类中去改init方法,而是只能覆盖父类的init方法。父类中的其他一些方法依赖于init(ServletConfig config)方法的行为,覆盖时必须记住使用super.init方法来调用父类init方法原来的行为,然后再增加自己的代码,否则,覆盖就会出现问题。GenericServlet设计人员想到了这点,希望子类覆盖init()方法,而不是覆盖init(ServletConfig config)方法。
init(ServletConfig config)方法调用init()方法的过程,实际上就是模板方法设计模式。
重载service方法的原理。

按常理:func1调用func2,如果func2做了两件事,那么,func1至少做几件事?至少应该做两件事。doHead调用了doGet,那为什么doHead只输出了doGet方法的部分内容呢,即只输出了头,而不输出体?这是怎么实现的呢?帮着大家分析了源码。

浏览器缓存内幕与getLastModified方法:浏览器显示的内容没有变化,能否能否说明浏览器没有发出请求呢?doGet方法中的打印语句没有输出到tomcat后台,能否说明浏览器没有发出请求呢?不能,是否调用doGet方法,由getLastModified方法的返回值来决定。

Web应用程序的初始化参数与Servlet的初始化参数的比较分析,根据王泽佑错误的提示,我想到了以后讲解ServletContext.getInitParameter时可以做一个有趣的实验,帮助回忆init方法的讲解:故意覆盖init(ServletConfig config),不调用super.init方法,在其中调用getServletContext().getInitParameter方法,报告NullPointerException,问问怎么回事呢?

如何在web应用程序中记录日志

application域属性的作用,示例代码如下:
ServletContext application = /*getServletConfig().*/getServletContext();
Connection cn = (Connection)application.getAttribute("conn");
if(cn == null)
{
 cn = createConnection();
 application.setAttribute("conn",cn);
}
PrepresStatement pstmt = cn.prepareStatement();

在Web应用程序中访问资源文件的几种方式。
问题:CLASSPATH指向了c:/盘,要读c:/a/b.txt,Class.getResourceAsStream("")中的字符串怎么写?"/a/b.txt"

作业1:写一个Servlet,通过参数指定一个目录名,就列该目录下面的内容,例如:
提示:
  http://localhost:8080/Myservlet?dir=c:/
  得到参数的代码:request.getParameter("dir");
由于参数中不能出现特殊字符,要进行url编码,该怎么办,请想个好办法?用form表单。
想到一个严重的问题:怎样让jsp和asp程序只能浏览某个限定的目录,而不能随意浏览计算机上的其他目录!已经安排学员们上各大网站去问,如果哪位路过的高人有此方面的经验,望不吝赐教!ps:我们的方老师正在研究通过java安全方面的知识来解决这个问题。

方老师已经搞定了jsp的问题,就是用安全方式启动tomcat即可。关于asp的问题,还希望有类似经验的朋友介绍一下.

作业2:通过Servlet程序在Web应用程序的WEB-INF目录中生产一个文件,并写上一些内容。真实应用说明:保存上传的文件内容。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值