3年码农的我带你深入了解Servlet知识点,想精通看这一篇就够了

227 阅读3分钟

Hello,今天给各位童鞋们分享的是Servlet,赶紧拿出小本子记下来吧

image.png

Servlet

servlet是sun公司开发动态web的一门技术

sun在这些api中提供了一个接口叫做servlet,如果要做一个servlet程序,只要两个步骤

1、编写一个类,实现servlet接口

2、把开发好的java类部署到web服务器中

把实现了servlet接口的java程序叫做servlet

HelloServlet

1、构建一个普通的maven项目。删掉src目录,以后我们的学习就在这个项目里面建立Moudle;这个空的工程就是maven主工程

2、关于maven父子工程的理解:

父项目中会有:

image.png 子项目中会有:

image.png 父项目中的jar包,子项目可以直接使用son extends father3、maven环境优化

修改web.xml为最新的

将maven结构搭建完整4、编写一个servlet程序

编写一个普通类

实现一个接口,直接继承HttpServlet

image.png 5、编写servlet的映射

我们写的是java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,我们需要在web服务中注册我们写的servlet,还需要给他一个浏览器能够访问的地址

【注意】

在这里配置web.xml文件的时候,web-app标签出现了红线报错,刚开始我碰到这个问题的时候很诅丧,感觉怎么会有这个错误,大致看了下还像是定义上缺失了一些元素,然后聪明的我将错误提示复制下来查询了下,发现了解决方案:

解决servlet项目web.xml文件中web-app标签报错

6、配置Tomcat

7、启动测试

Servlet原理

Servlet是由web服务器调用,web服务器在收到浏览器请求之后

image.png

Mapping问题

1、一个servlet可以指定一个映射路径

image.png 2、一个servlet可以指定多个映射路径

image.png 3、一个servlet可以指定通用映射路径

image.png 4、默认请求路径

image.png *前面不可以加映射路径,比如:

image.png

5、指定一些后缀或者前缀

image.png

6、优先级问题指定了固有的映射路径优先级最高,如果找不到就会走默认的请求处理

image.png

ServletContext

web容器在启动的时候,它会为每个web程序都创建一个servletContext对象,代表当前应用:

1、共享数据:我在这个servlet保存的数据可以在另一个servlet访问到输入数据:

image.png

image.png 输出数据 :

image.png

image.png 2、获取初始化参数第一步,配置web.xml:

image.png 第二步,写实现类

image.png 第三步:输出

image.png 3、请求转发

image.png 4、读取资源文件Properties类

java目录下生成properties

resources目录下生成properties发现:都被打包到了同一个路径下:classes,我们俗称路径为classpath;【思路】

需要一个文件流

image.png 访问测试即可!!!!!

HttpServletResponse

web服务器接收到客户端的http请求,针对这个请求会分别创建代表请求的HttpServletResponse对象,代表响应的一个HttpServletResponse;

如果要获取我们客户端请求过来的参数,找HttpServletRequest

如果要给客户端响应一些参数,找HttpServletResponse

1、简单分类

负责向浏览器发送数据的方法:

ServletOutputStream getOutputStream() throws IOException;

PrintWriter getWriter() throws IOException;

负责向浏览器发送响应头的方法

image.png 2、常见应用

向浏览器输出消息

下载文件,上传文件

(1)获取下载文件的路径

(2)下载的文件名

(3)想办法让浏览器支持我们下载需要的东西

(4)获取下载文件的输入流

(5)创建缓冲区

(6)获取OutputStream对象

(7)将OutputStream流写到缓冲区

(8)使用OutputStream将缓冲区的数据写到客户端

image.png

好啦,今天的文章就到这里了,希望能够帮助到屏幕前迷茫的你们