servlet大家都陌生了吧,今天带着大家回顾一下老古董
1.servlet
是一个类,是一个java文件
用来接收、处理、响应页面请求
一个类怎么样才能成为一个servlet
继承HttpServlet
使用servlet + jsp 这种方式,让业务代码和显示完全分离
jsp: 只做显示
servlet: 业务逻辑处理,接收请求,处理之后,响应页面给浏览器2.第一个servlet
需求: 定义一个servlet,当页面请求/hello的时候,自定义的servlet接收、处理这个请求,并响应"HelloWorld" 并浏览器
1)定义HelloServlet
2)编写
a) HelloServlet 继承HttpServlet
b) 重写父类的service方法,这个方法为入口方法
3)请求地址和servlet之间的映射配置
web.xml中
4)部署工程
5)启动tomcat
6)浏览器访问http://localhost:8080/teacher_servlet/hello3.访问执行流程
浏览器请求http://localhost:8080/teacher_servlet/hello
1)tomcat启动的时候,会加载webapps目录下所有的应用,加载应用的时候,会解析WEB-INF下的web.xml文件
2)浏览器访问http://localhost:8080/teacher_servlet/hello
3)tomcat接收到浏览器请求,先解析端口后面的应用名,确定请求的是哪一个应用
--确定请求应用为 teacher_servlet
4)tomcat截取请求地址 /hello
5)tomcat会到web.xml中寻找请求地址匹配的servlet-mapping标签
6)找到之后,会继续找servlet-name对应的servlet标签对象
--找不到,就会到webRoot下找具体的资源,再找不到,404
7)拿到servlet-class标签值,也就是指定的servelt类地址,然后创建这个类的实例
HttpServlet helloServlet = Class.forName(addr).newInstance();
8) tomcat会调用helloServlet.service(req,resp)方法
9)线程在运行的时候,因为实例是HelloServlet,所以线程会执行子类HelloServlet.service()方法
10) HelloServlet接收到了请求,处理,并通过response响应文本给浏览器4.servlet生命周期
生命周期
实例化, 初始化,服务阶段, 销毁
阶段 执行时间 执行次数
实例化 ---------------------第一次被访问的时候----------1
初始化----------------------第一次被访问的时候------------1
服务阶段--------------------每次被访问的时候---------------N次
销毁--------------------------服务器正常停止的时候------------1次
servlet是单例还是多例??
--单例类
单例类,需要小心全局变量!!!!!
5.servlet 与jsp
servlet中可以响应html
jsp中又可以写代码
jsp就是一个servlet
HttpJspBase继承HttpServlet
6.servlet正确使用
重写方法:最末端的do方法
public void service ---》对外的公共方法
protected void service -请求的分发,根据提交方式
do….-----》请求处理
请求方式get—》重写doGet方法
请求方式post-->重写doPost方法
如果请求方式既有get,也有post--->重写doGet,doPost
从今往后!jsp中不允许出现小脚本7. 项目重构
1)登录
a)编写LoginServlet
继承HttpSevlet
重写哪个方法?--》(取决于login.jsp中的提交方式)doPost方法
重定向,路径处理:需要带上appName
b)web.xml配置
c) main.jsp
d)修改login.jsp中的提交地址
2) 查询学生列表
main.jsp 添加"查询所有学生"按钮
需求:点击"添加所有学生"---》页面需要展现所有的学生数据
流程分析
今天练习:
登录,查询所有, 查详情
查详情
修改:
StuDetailServlet和StuEditBeforServlet 重复率比较高
stuDetail.jsp和stuEdit.jsp重复率也比较高
-- servlet合并
--jsp合并
提示: 使用来源标识作为参数
jsp中,使用c:if标签
表单action请求地址之后,不适合加参数
退出功能
8.log4j日志使用
1)导包
2)导配置文件
配置文件放在src根目录下,或者config资源目录的根目录
3)代码中使用log4j
异常也有四种级别
9.过滤器
目前工程中的权限:
jsp
servlet
jsp:
提取公共的jsp页面、
其他页面引用
servlet:
过滤器:
过滤器使用
1)自定义一个类 实现Filter接口, javax.servlet.Filter
2)实现接口中的方法
3)web.xml中配置过滤器
今天练习:
1.servlet继续
2.权限过滤器
3.免校验的判断,提取成私有方法
需求: String noAuth = ".js,.jpg,/login.jsp,.png"
硬编码:
配置文件:
不是只有.properties才是配置文件
txt也可以是配置文件,xls也可以是配置文件,xml也可以是配置文件
常用: .properties .xml
properties体现不出层级关系,简单的key,value
xml 体现层级,或者说对象的概念
过滤器配置参数:
取值,在代码中,从过滤器配置对象中取
配置全局参数
代码中取值
同理,servlet中也可以配置初始化参数,也可以通过上下文取全局参数
servlet默认是在第一次被访问的时候初始化,如果想要tomcat启动的时候初始化,使用标签
10.mvc模式
11.servlet文件上传
新需求: 每个学生信息中需要展示照片
1)添加图片上传
2)修改也有图片修改
3)列表页展示图片
4)详情页要展示
首先要知道,图片是怎么上传的?
代码:
1) jsp
2)servlet
导包
如果form表单中有多个input
代码中,需要分开处理(普通文本域和file控件需要分开处理)
文件如何与数据相关联?
1.数据库数据中,表数据中,有一个字段,肯定要可以和这个文件关联起来
字段1: 地址+文件名(重命名后)
字段2:原始文件名
如果上传的文件,文件名一致,那么会出现覆盖的情况
解决办法: 重命名
新需求: 每个学生信息中需要展示照片
1)添加图片上传
a)数据库表添加字段
实体类
jsp-servlet
jsp(添加file,修改method,enctype)
servlet
取参要改
上传文件
保留文件路径
2)修改也有图片修改
3)列表页展示图片
4)详情页要展示
ls 查看当前文件夹下有什么文件和文件夹
cd upload 进入upload目录
pwd 查看当前目录的路径
今天练习:
1)添加学生信息,添加图片上传
上传图片的访问
如果图片上传地址 uploadPath + 文件名
C:Tomcat601webappsupload1513819315113.jpg
数据库存储,文件名:1513819315113.jpg
页面需要的地址 tomcatPath + 文件名
/upload/1513819315113.jpg
如果图片上传地址:uploadPath + stuUploadPath + 文件名
C:Tomcat601webappsuploadstuImg1513819315113.jpg
数据库存储:stuUploadPath + 文件名
stuImg1513819315113.jpg
页面需要的地址 tomcatPath + stuUploadPath + 文件名
/upload /stuImg/1513819315113.jpg
在开发过程中,
文件上传目录和tomcat,不会在一起。是分开,独立的两个目录
怎么访问呢??
tomcat虚拟目录
比如
http://localhost:8080/resource/1513819315113.jpg
tomcat有个虚拟目录配置
/resource - D:upload
当访问/resource 那么tomcat会到D:upload目录下去找
配置:
在tomcat/conf/server.xml的host标签中配置Context标签
火星毕宿五16日上演双红星伴月来源央视新闻客户端天文科普专家介绍,9月16日晚,橘红色行星火星将靠近另一颗橘红色恒星毕宿五,与一轮亏凸月上演双红星伴月,届时只要天气晴好,我国各地感兴趣的公众凭借肉眼就能目睹到这
科技早报洋码头否认人去楼空谷歌广告业务被索赔250亿欧元洋码头回应拖欠商家货款9月13日晚间,针对近日媒体报道的拖欠货款办公场所关闭等消息,洋码头方面回应界面新闻称,行业确实受到疫情冲击和影响,公司当下采取员工全体居家办公模式降低成本,
行业龙头超威重磅发布超威黑金5。0,领先科技为品牌再注新势能在日前举行的2022年度新品发布会上,行业龙头超威连续发布了五大爆款产品,引发了业内外的广泛关注。其中,由掌握石墨烯电池核心科技的超威,研发的第五代黑金系列电池超威黑金5。0,格外
比亚迪又火了!便宜的新能源小轿车之一只要你不是藤原拓海,其实大部分的车辆动力也都足够你日常使用了。不知道你有没有了解过今天介绍的比亚迪e2。现在就让大家跟着小编一起来看看它都有哪些表现吧。首先从外观来看,比亚迪e2车
新树莓派操作系统更新带来一些不错的小改进树莓派操作系统更新,增加了对NetworkManager支持以及新的操作快捷方式。如果你是小型迷你计算机的狂热粉丝的话,你可能知道树莓派可以用作成熟的桌面计算机使用。此外,它也是支
书评现代人重视家庭教育,但古人比我们还用心有一个视频很火,说的是北大教授丁延庆吐槽辅导女儿学习的事情。丁教授和妻子都是北大毕业的高材生,但女儿的学习却让他们伤透脑筋。丁教授称,每天辅导孩子写作业,真是鸡飞狗跳,有时忍不住和
这件事,快递巨头们该重视起来了眼下,巨头们应急物流能力建设正当时。关于应急物流,快递小哥平日可能接触很少,觉得冷门或者离自己有些远。实则不然。应急物流在近两年被提及的频率很高,尤其今年,多地突发的疫情以及包括这
一路走好!8天6位名人接连去世,有人仅36岁,却因吃槟榔患癌去世9月过去才一半,就接连传出了6位名人去世的消息。他们中大多都是因病去世,有人因为吃太多槟榔患癌去世,有人在生命的最后时刻选择了安乐死。他们的离去,既让人感叹生命的无常,也让很多人都
I。2。4管教婴幼儿孩子采取夸奖式批评就对了中国传统教育观念里,要管教婴幼儿甚至少年或者青春期的孩子,都一味地强调批评教育甚至严厉鞭策惩罚,不打不成材,以为只有这样才能激励促进孩子成长。但现代心理学和教育学的研究都否定了这种
五岁时还不会说话的孩子后来怎么样了?如果有人问一个五岁时还不会说话的孩子后来怎么样了?也许人们说会成为哑巴,或者语言障碍而说话不清,或智力发育迟缓不够聪明。其实,他仍然和绝大多数普通的孩子一样,不是特别聪明,也不是很
科学跳绳,让孩子增高不止10厘米何为跳绳?跳绳运动,在中国已有数千年的历史,唐宋明清都有记载。唐朝称跳绳为透索宋称跳索明称白索清称绳飞,民国以后才称跳绳。现在国家出台了很多政策来提高小学生体质,最适合提高小学生体
郭晶晶同框张梓琳,穿风衣霸气不强势,矮一截但举手投足都是自信在面对不同的场合时,着装的要求大有不同,如果是在公开出镜的场合当中,那么得体性便是选择服装的首要考虑因素。在大的审美环境影响之下,公开出镜的造型当中,女性大多数会以裙子作为搭配,保
作文素材文案摘抄背景图1。懂越多就越像这世界的孤儿,走越远就越明白世界本是孤儿院。韩寒2。如果以后再也见不到你,那祝你早安,午安,晚安。楚门的世界3。如果想念你,他会找如果想要你,他会说如果在乎你,他会
在大地明师班研习的日子当现实与梦幻相互交织,记忆的火光在脑海中迸然呈现。当初我们懵懵懂懂地进入洛阳师范学院大地明师班时,我并不能理解大地明师这四个字的内涵。老师解释说大地明师指的是面朝大地的明日之师明亮
读懂了骆驼祥子,我们才能明白底层人应该怎样去生活?头条创作挑战赛初读骆驼祥子的人,谁不为祥子掬一把同情的泪再读第二遍,谁不替祥子抱怨命运的不公社会的罪恶人到中年,又读骆驼祥子,才发现祥子可怜可悲可叹更可恨才发现祥子离我们并不远,他
如果你被周围的人孤立了,不要急着合群,要做好以下3件事01hr哲学家狄德罗说过人不可孤立,孤立则危。一个人独来独往的时候,是最强大的,但是不可能一辈子都保持这样的状态。毕竟,人是群居动物,家人需要靠在一起取暖,朋友需要在一起谋利,同事
55岁到60岁这几年,缺乏这几样东西,那晚景就悲苦了人老了,都有这么一个心愿,晚年安好,得以善终。只不过,早年很容易,但晚年很难善始很容易,但善终很难晚年看起来很容易,等自己去经历了,才发现不是一般的难。如今的老人,一上了年纪,都过
一种类似咖啡的人生春日生活打卡季生活日记人生就像一杯无糖咖啡,苦中带苦,还带着淡淡的惆怅。但有时候生活就像没有咖啡的糖,甜,细腻,醉人,这两者在我看来都是不真实的,极端的。在我们看来,身体应该适应床
人到中年,学会沉默,过年时别发这几种朋友圈花看半开,酒喝微醉。最好的人生,就是小满,切忌圆满。作为中年人,辛辛苦苦一整年,或多或少有些成绩,也有一些难堪的经历。到了年底,发个朋友圈,晒一晒当下的自己,似乎早已成为了习惯。也
伤害一个人最深的方式,不是争吵,而是这两个字图源自网络侵权请联系删除一个人对另一个人产生的最大的伤害,从来不是身体上的,而是精神上的。因为身体上的伤害可以复原,但是精神上的伤害却是永远的,这是一种无形的致命的影响,只要一想到
一辈子不结婚,不生小孩,老了真的会很惨吗?大千世界,泱泱众生,有人选择适龄结婚生子,也有人会选择孤老终生。无所谓对错,只看自己如何选择,如何去活。以至于哪种活法才是对的,才更潇洒,我想没有人能够评判。唯有时间会审视一切,给
简单易做,既好吃又好看的小花卷花卷今天做的这款小花卷,做法简单,层次分明,蓬松暄软,既好看又好吃。食材用料面粉300g温水100g牛奶70g红枣8颗白糖5g酵母3g1准备好食材。2将牛奶白糖酵母放入容器中,然后