当前位置: 首页 > news >正文

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目录中生产一个文件,并写上一些内容。真实应用说明:保存上传的文件内容。


相关文章:

  • 编译蘑菇街的teamtalk
  • HTML框架代码全集
  • 同一bundle id的应用,不同证书在设备上覆盖安装会失败
  • Xcode_6.4.dmg 官方下载地址
  • 从历史学习的 8 堂架构课
  • iOS错误报告中关于崩溃地址的分析
  • 原来Windows下面也有硬链接
  • 程序员将是人类最后一个被人工智能代替的工作
  • JNDI配置原理详解
  • 利用layer的FillRule属性生成一个空心的layer
  • 最近做的一个手机上的联网应用程序
  • Parse开源了自己的SDK
  • 微信和百度地图都不支持iOS6了
  • 恶搞的NVIDIA驱动
  • 由身份证号码取生日和性别
  • 【译】JS基础算法脚本:字符串结尾
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 4个实用的微服务测试策略
  • Android 架构优化~MVP 架构改造
  • Asm.js的简单介绍
  • es6
  • gops —— Go 程序诊断分析工具
  • gulp 教程
  • js数组之filter
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP那些事儿
  • Protobuf3语言指南
  • Puppeteer:浏览器控制器
  • Zepto.js源码学习之二
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 模型微调
  • 前端临床手札——文件上传
  • 数据结构java版之冒泡排序及优化
  • 我的业余项目总结
  • 我是如何设计 Upload 上传组件的
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #etcd#安装时出错
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #宝哥教你#查看jquery绑定的事件函数
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (26)4.7 字符函数和字符串函数
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (vue)页面文件上传获取:action地址
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (学习日记)2024.01.09