JavaWeb_2-servlet1
一、概念
二、创建
一个普通的java类继承HttpServlet
三、调用
不同请求可以访问一个资源(servlet-class),但一个请求不能指向多个资源
四、通过注解去进行配置(简化配置)
name省略时,value字段可以省略
五、tomcat如何管理servlet的生命周期
servlet的生命周期(由web容器进行管理)
出生:
实例化过程:默认是在第一次访问时创建servlet对象并进行初始化操作(初始化操作只执行一次,意味着servlet是一个单例模式),servlet是一个线程不安全的java类,不要在里面创建成员变量
销毁:
默认"-1",第一次访问时创建servlet
其他值在启动服务器时创建servlet,值越小初始化优先级越高
创建好对象后,当收到请求后,就可以调用里面的service,进行服务
六、根据请求的方式,进行请求的分发
6.1
通过手动在url地址输入,调用的doGet
6.2
超链接,调用的是doGet
6.3
可以使用doPost和doGet,表单提交默认doPost
6.4
js location.href=""
七、应用
7.1请求
HttpServletRequest request
乱码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3j5n4Qqr-1596639192474)(C:/Users/CEO/AppData/Roaming/Typora/typora-user-images/image-20200804170653872.png)]
7.2响应
HttpServletResponse response
页面
out.write();
页面的跳转
以图片的格式显示
下载的方式
JSON的方式
注意:
必须至少有一个路径要跟servlet的路径相对应,否则会疯狂报错
7.3 请求头
url:获取请求的地址
uri:项目路径以及请求的路径
物理路径,项目部署的真实路径
7.4 上传文件
注意前面要标注支持part功能
获取并保存上传的文件,文件名后缀要跟上传的文件一致
- 问题:如果上传后想要回显怎么办
避免图片覆盖,使用时间戳来命名
服务器不能使用磁盘绝对路径,要使用服务器根目录相对路径,因为图片已经加载到服务器了
多个文件上传,然后进行遍历
7.5 页面的跳转
7.5.1重定向(发送了两次请求)
请求一次Http地址后会直接关闭
7.5.2 请求转发(只发送了一次请求)
跳转到另一种隐私界面都放在WEB-INFO下
但页面跳转也访问不了,需要请求转发:
请求转发,url地址不会发生变化,可以获取WEB-INFO下的资源
重定向url地址会变化,不可以获取WEB-INFO下的资源
非WEB-INFO下两者都可以跳转到
请求转发后可以继续使用请求的request和response
-
从用户登录页面入手,如果一个用户登录成功后在另一个servlet中,以网页的形式显示用户名信息,不操作数据库
重定向接收不到数据,因为是相当于新开了一个页面
请求转发可以接受到数据,因为是同一个request和response
进行文件名的拼接
7.6 验证码
7.7 下载资源
告诉浏览器以下载的方式打开
练习:
重定向:向另一个servlet提交请求,看能不能接收到数据
请求转发:向另一个servlet提交请求,看能不能接收到数据
(路径/servlet名字)