一、什么是Servlet?
Servlet是javaEE规范之一。规范就是接口。JavaWeb三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个Java小程序,它可以接收客户端发送来的请求,并响应数据给客户端。
二、Servlet的生命周期
- 执行Servlet构造器方法(只在第一次创建Servlet程序会调用)
- 执行init初始化方法(只在第一次创建Servlet程序会调用)
- 执行service方法(每次访问都会调用)
- 执行destroy销毁方法(在web工程停止的时候调用)
三、实现Servlet程序(2种方法)
方法1:实现Servlet接口(不常用)
- 编写一个类去实现Servlet接口;在src目录下创建
- 实现service方法,处理请求,并响应数据;需要根据getMethod方法,来区分get,post请求。
- 在web.xml中去配置servlet程序的访问地址;
- <servlet>
- <servlet-name>:Servlet程序起的别名。一般为类名。
- <servlet-class>:Servlet程序的全类名。
- <servlet-mapping>
- <servlet-name>:Servlet程序起的别名。一般为类名。
- <url-pattern>:配置访问地址。
方法2:继承HttpServlet类(常用)
- 编写一个类去继承HttpServlet类;在src目录下创建。
- 根据业务需要重写doGet或doPost方法。
- 在web.xml中去配置servlet程序的访问地址。
四、ServletConfig类
- ServletConfig是Servlet程序的配置信息类。
- Servlet程序的配置信息,web.xml中<servlet>标签中的信息(属于每个Servlet,而不是整个web工程)。
- <servlet-name> Servlet程序的别名。
- <init-param> Servlet程序的初始化参数。
- Servlet程序 & ServletConfig对象的创建。
- Servlet程序和ServletConfig对象都是由Tomcat负责创建。
- Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创一个对应的ServletConfig对象。
- 一个Servlet程序对应一个ServletConfig对象
- 通过当前ServletConfig对象,不可以获取其他Servlet程序的配置信息。
注意:
- 通过getSevletConfig()获取ServletConfig对象
- 重写init方法,一定要调用父类GenericServlet的init方法
ServletConfig的作用:
- 获取Servlet程序的别名<servlet-name>的值 getServletname()
- 获取初始化参数<init-param> getInitParameter(name)
- 获取ServletConfig对象 servletConfig.getServletContext()
五、ServletContext类
一、什么是ServletContext?
- ServletContext是一个接口,它表示Servlet上下文对象
- 在web.xml中<context-param>中配置Servlet上下文信息,不单独属于某个<servlet>,在所有<servlet>外面
- 一个web工程,只有一个ServletContext对象实例
- ServletContext对象作用域是整个web工程
二、ServletContext生命周期
ServletContext对象在工程部署启动时创建,在工程停止时销毁。
三、ServletContext作用
- 获取web.xml中配置的上下文参数context-param getInitParameter(name)
- 获取当前的工程路径,格式:/工程路径 getContextPath()
- 获取工程部署后在服务器硬盘上的绝对路径 getRealPath("/")
- 像Map一样存取数据
- setAttribute("key","value")
- getAttribute("key")
六、HTTP协议
一、什么是HTTP协议
HTTP协议是指客户端与服务器之间通信时,发送的数据需要遵守的规则
二、Get请求&Post请求
常见的Get请求:
- form标签method=get
- a标签
- link标签引入css
- Script标签引入js文件
- img标签引入图片
- iframe引入html页面
- 在浏览器地址栏中输入地址后敲回车
常见的Post请求:
- form标签method=post
三、常用响应码
- 200:表示请求成功
- 302:表示请求重定向
- 404:数据不存在(请求地址错误)
- 500:服务器内部错误(代码错误,比如Servlet中分母为0)
七、HttpServletRequest类
作用:获取到所有的请求信息,Tomcat服务器会把请求过来的HTTP协议信息解析封装好到Request对象中。然后传递到service方法(doget和doPost)中给我们使用。
1、如何请求获取参数
req.getParameter(name);
2、POST请求的中文乱码解决
req.setCharacterEncoding("UTF-8")
3、请求转发
请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作
请求转发的特点:
- 浏览器地址栏不会改变
- 他们是一次请求
- 他们共享request域中的数据
- 可以转发到WEB-INF目录下
- 不可以访问工程以外的资源
req.getRequestDispather("待转发的Servlet路径").forward(req.resp);
4、web中/斜杠的不同意义
- 在web中/斜杠是一种绝对路径
- /斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
- /斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径
特殊情况:
response.sendRedict("/");把斜杠发送给浏览器解析,得到http://ip:port/
八、HTTPServletRespons类
1、HTTPServletRespons类的作用
表示所有响应的信息。用来设置返回给客户端的信息
2、如何往客户端回传数据
1、通过输出往客户端回传数据信息(2种流)
- 字节流:getOutputStream(); 常用于下载(传递二进制数据);
- 字符流:getWriter();常用于回传字符串(常用);
2、解决响应的中文乱码
resp.setContentType("text/html;charset=UTF-8");
- 同时设置服务器和客户端都使用utf-8字符集,还设置了响应头
- 一定要在获取流对象之前使用才有效。
3、请求重定向
resp.sendRedirect("http://localhost:8080");文章来源:https://www.toymoban.com/news/detail-649279.html
特点:文章来源地址https://www.toymoban.com/news/detail-649279.html
- 浏览器地址栏会改变
- 他们是两次请求
- 不共享request域中的数据
- 不能访问WEB_INF目录下
- 可以访问工程以外的资源,如www.baidu.com
到了这里,关于java # Servlet的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!