Servlet
一、Servlet简介
1.Servlet就是sun公司开发动态web的一门技术
2.Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
①编写一个类,实现Servlet接口
②把开发好的java类部署到web服务器中
3.把实现了Servlet接口的Java程序叫做,Servlet
4.Servlet接口sun公司有两个默认的实现类:HttpServlet,GenericServlet
二、HelloServlet
1.构建一个普通maven项目,此项目作为父项目
2.把需要的依赖导入项目的pom.xml文件里,maven仓库地址:https://mvnrepository.com/
3.创建一个Servlet项目,此项目作为子项目
子项目创建完成后,父项目pom.xml下会多一个modules
子项目pom.xml会生成parent
父项目中的jar包,子项目可以直接使用
4.Maven环境优化
①修改web.xml为最新的
②将maven项目的结构搭建完整
5.编写一个Servler程序
①编写一个普通类
②实现Servlet接口,这里继承HttpServlet
6.编写servlet的映射
为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的servlet,还需要给他一个浏览器能够访问的路径;
7.配置tomcat,注意项目发布的路径
8.启动测试,成功打印
三、Servlet运行原理
Servlet是由web服务器调用,web服务器在收到浏览器请求之后,会:
四、关于mapping映射
1.一个Servlet可以指定一个映射路径
2.一个servlet可以指定多个映射路径
3.一个servlet可以指定通用映射路径,也可以通配符* 解决通用请求路径.
4.默认请求路径 /*
5.使用自定义路径 (*.XXX);注意在这里*.前面不能再加路径
6.还有就是有时会出现404资源访问不到的问题,这个页面也是可以使用servlet进行响应的,配置对应的映射即可.
7.优先级问题,指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;
五、ServletContext对象
1.web容器启动时,会为每个web程序创建一个对应的servletContext对象,代表当前的web应用;
2.ServletContext可共享数据,在其中一个servlet中设置保存的数据,在另一个servlet中可获取.
3.编写一个servlet类,在servletContext中存储数据;
4.编写另一个servlet获取上一个servlet中保存的数据;
5.web.xml配置servlet以及映射路径;
6.启动服务器,先访问获取servlet数据的那个路径;由于并没有数据,故返回的是null值;
7.再访问/hello;即保存了数据的servlet;
8.然后再访问获取servlet的路径;获取到数据了
六、ServletContext应用
1.可以在web.xml中设置参数键值对
2.在一个servlet类中获取ServletContext对象,通过对象获取web.xml中设置的指定参数值
3.在web.xml中配置ServletDemo03映射路径,启动服务器后,访问该路径,控制台输出指定参数值。
七、请求转发
1.一次请求:例如A向B取东西,但是东西在C那,然后B就去找C拿,B拿完后再给A。
①使用request请求对象的方法,getRequestDispatcher设置请求转发的路径;
②然后调用forward方法实现请求转发
2.两次请求,重定向:例如A向B取东西,但是B没有,B告诉你去找C那,然后A再去找C拿东西,整个过程有两次请求。
八、Properties读取资源文件
1.在Java和resources目录下各自新建properties文件
2.两个文件都被打包到了同一路径下:classes路径,我们称这个路径为classpath
获取properties文件代码练习
九、HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应一个HttpServletResponse;
①.如果要获取客户端请求过来的参数:找HttpServletRequest
②.如果要给客户端响应一些信息:找HttpServletResponse
1.关于响应的一些简单分类:
①负责向浏览器发送数据的方法
ServletOutputStream getOutputStream() throws IOException;
PrintWriter getWriter() throws IOException;
②负责向浏览器发送响应头的方法
③响应的状态码
2.下载文件步骤与思路
①要获取下载文件的路径
②下载的文件名是啥?
③设置想办法让浏览器能够支持下载我们需要的东西
④获取下载文件的输入流
⑤创建缓冲区
⑥获取OutputStream对象
⑦将FileOutputStream流写入到buffer缓冲区
⑧使用OutputStream将缓冲区中的数据输出到客户端