JavaWeb_2-servlet1

一、概念

二、创建

一个普通的java类继承HttpServlet

三、调用

JavaWeb_2-servlet1

JavaWeb_2-servlet1

不同请求可以访问一个资源(servlet-class),但一个请求不能指向多个资源

JavaWeb_2-servlet1

JavaWeb_2-servlet1

四、通过注解去进行配置(简化配置)

JavaWeb_2-servlet1

name省略时,value字段可以省略

五、tomcat如何管理servlet的生命周期

servlet的生命周期(由web容器进行管理)

出生:

实例化过程:默认是在第一次访问时创建servlet对象并进行初始化操作(初始化操作只执行一次,意味着servlet是一个单例模式),servlet是一个线程不安全的java类,不要在里面创建成员变量

销毁:

JavaWeb_2-servlet1

默认"-1",第一次访问时创建servlet

JavaWeb_2-servlet1

其他值在启动服务器时创建servlet,值越小初始化优先级越高

创建好对象后,当收到请求后,就可以调用里面的service,进行服务

六、根据请求的方式,进行请求的分发

JavaWeb_2-servlet1

6.1

通过手动在url地址输入,调用的doGet

6.2

超链接,调用的是doGet

6.3

可以使用doPost和doGet,表单提交默认doPost

6.4

js location.href=""

JavaWeb_2-servlet1

七、应用

JavaWeb_2-servlet1

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的路径相对应,否则会疯狂报错

JavaWeb_2-servlet1

7.3 请求头

url:获取请求的地址

uri:项目路径以及请求的路径

JavaWeb_2-servlet1

物理路径,项目部署的真实路径

JavaWeb_2-servlet1

JavaWeb_2-servlet1

7.4 上传文件

JavaWeb_2-servlet1

JavaWeb_2-servlet1

注意前面要标注支持part功能

JavaWeb_2-servlet1

获取并保存上传的文件,文件名后缀要跟上传的文件一致

JavaWeb_2-servlet1

  • 问题:如果上传后想要回显怎么办

JavaWeb_2-servlet1

避免图片覆盖,使用时间戳来命名

JavaWeb_2-servlet1

服务器不能使用磁盘绝对路径,要使用服务器根目录相对路径,因为图片已经加载到服务器了

JavaWeb_2-servlet1

多个文件上传,然后进行遍历

JavaWeb_2-servlet1

7.5 页面的跳转

7.5.1重定向(发送了两次请求)

请求一次Http地址后会直接关闭

JavaWeb_2-servlet1

7.5.2 请求转发(只发送了一次请求)

跳转到另一种隐私界面都放在WEB-INFO下

但页面跳转也访问不了,需要请求转发:

JavaWeb_2-servlet1

请求转发,url地址不会发生变化,可以获取WEB-INFO下的资源

重定向url地址会变化,不可以获取WEB-INFO下的资源

非WEB-INFO下两者都可以跳转到

JavaWeb_2-servlet1

请求转发后可以继续使用请求的request和response

  • 从用户登录页面入手,如果一个用户登录成功后在另一个servlet中,以网页的形式显示用户名信息,不操作数据库

    重定向接收不到数据,因为是相当于新开了一个页面

JavaWeb_2-servlet1

请求转发可以接受到数据,因为是同一个request和response

进行文件名的拼接

JavaWeb_2-servlet1

7.6 验证码

JavaWeb_2-servlet1

JavaWeb_2-servlet1

JavaWeb_2-servlet1

7.7 下载资源

JavaWeb_2-servlet1

告诉浏览器以下载的方式打开

JavaWeb_2-servlet1

练习:

重定向:向另一个servlet提交请求,看能不能接收到数据

请求转发:向另一个servlet提交请求,看能不能接收到数据

(路径/servlet名字)