1. Servlet 技术
- 什么是Servlet
- Servlet是JavaEE 规范。 规范就是接口
- servlet是Java Web 三大组件之一。三大组件分别是Servlet程序,Filter过滤器,Listener监听器。
- servlet 是 运行在服务器上的Java小程序, 它可以接受客户端发送过来的请求,并响应数据给客户端。
2. ServletContext类
- ServletCotext是一个接口,它表示Servlet上下文对象
- 一个web工程,只有一个ServletContext对象实例
- WEB容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext,它代表当前Web应用。并且它被所有客户端共享。
- 由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。公共聊天室就会用到它。
- 当web应用关闭、Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁
- ServletContext对象可以通过ServletConfig.getServletContext()方法获得对ServletContext对象的引用,也可以通过this.getServletContext()方法获得其对象的引用。
- ServletContext对象是一个域对象(可以像Map一样存取数据的对象)
3. 请求的HTTP协议格式
- 客户端给服务器发送的数据叫请求
- 服务器给客户端回传数据叫响应
- 哪些是get请求,哪些是post请求:
- GET请求有哪些:
- form标签 method=“get”
- a 标签
- link标签引入css
- script标签引入图片
- iframe引入html页面
- 在浏览器地址栏中输入地址后敲回车
- POST:
- form标签 method=“post”
- GET请求有哪些:
4. HttpServletRequest类:
-
HttpServletRequest类有什么作用:每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议进行解析好封装到Request对象当中,我们可以通过HttpServletRequest对象,获取到所有请求的信息。
-
HttpServletRequest类获取请求参数值:
前端html页面:
servlet文件:
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String[] hobby = request.getParameterValues("hobby"); System.out.println("用户名:" + username); System.out.println("密码:" + password); System.out.println("兴趣爱好:" + Arrays.asList(hobby)); }
output:
用户名:abcd 密码:123 兴趣爱好:[C++, Java, JS]
- 如果前端页面的数据是个数组或集合,应该用request.getParameterValues来接收
5. RequestDispatcher请求转发的特点:
- 浏览器地址栏没有变化
- 他们是一次请求
- 他们共享Request域中的数据
- 可以转发到Web-INF目录下
6. HttpServletResponse类:
- HttpServletResponse类的作用:HttpServletResponse类和HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用。HttpSevletRequest表示请求过来的信息,HtttpServletReponse表示所有响应的信息。
- 两个输出流说明:
- 字节流:getOutputStream(); //常用于下载(传递二进制数据)
- 字符流:getWritter(); //常用于回传字符串
- 使用字节流,就不能再使用字符流,反之亦然,否则就会报错。
- 给客户端回传字符串数据:response.getWriter().write(内容);