Servlet基础
1.Servlet
Servlet是一个Java程序,是在服务器上运行以处理客户端请求并做出响应的程序
*Servlet运行与服务端
*只要可以处理客户端请求,就可以称之为Servlet
2.Servlet结构
01.导入所需的包
02.处理请求的方法
03.将数据发送给客户端
Servlet是一个Java程序,是在服务器上运行以处理客户端请求并做出响应的程序
*Servlet运行与服务端
*只要可以处理客户端请求,就可以称之为Servlet
2.Servlet结构
01.导入所需的包
02.处理请求的方法
03.将数据发送给客户端
Servlet的体系结构
1.Servlet体系结构
01.接口
Servlet
用于接收用户请求,对用户请求进行处理。(定义了处理和接收用户请求的方法)
ServletConfig
用于配置Servlet配置,定义了对Servlet类的方法
02.抽象类
GenericServlet
实现了以上的两个接口的一部分方法
HttpServlet
继承自GenericServlet,实现了部分的方法
2.Servlet接口
01.Servlet概述
定义了所有Servlet需要实现的方法
02..Servlet接口的常用方法
02-1.public void init(ServletConfig config)
由Servlet容器调用,用于完成Servlet对象在处理客户请求前的初始化工作
02-2.public void service(ServletRequest req, ServletResponse res)
由Servlet容器调用,用来处理客户端的请求
02-3.public void destroy()
由Servlet容器调用,释放Servlet对象所使用的资源
02-4.public ServletConfig getServletConfig()
返回ServletConfig对象,该对象包含此Servlet的初始化和启动参数。返回的Servlet对象是传递init()方法的对象
02-5.public String getServletInfo()
返回有关的Servlet的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(比如HTML、XML)
3.ServletConfig接口
01.ServletConfig概述
在Servlet初始化过程中获取配置信息
一个Servlet只有一个ServletConfig对象
02.ServletConfig常用方法
02-1.public String getInitParameter(String name)
获取web.xml中设置的以name命名的初始化参数值
02-2.public ServletContext getServletContext()
返回Servlet的上下文对象
4.GenericServlet抽象类
01.GenericServlet概述
提供了Servlet与ServletConfig接口的默认实现方法
02.GenericServlet的常用方法
02-1.public void init(ServletConfig config)
调用Servlet接口中的init()方法。此方法还有一无参的重载方法,其功能与方法相同
02-2.public String getInitParameter(String name)
返回名称为name的初始化参数值
02-3.public ServletContext getServletContext()
返回ServletContext对象的引用
5.HttpServlet抽象类
01.HttpServlet概述
继承于GenericServlet
处理HTTP协议的请求和响应
02.HttpServlet的常用方法
02-1.public void service(ServletRequest req,ServletResponse res)
调用GenericServlet类中service()方法的实现
02-2.public void doXXX(HttpServletRequest req,HttpServletResponse res)
根据请求方式的不同,分别调用相应的处理方法,例如doGet()、doPost()等
6.ServletRequest接口
01.ServletRequest概述
获取客户端的请求数据
02.ServletRequest的常用方法
02-1.public Object getAttribute(String name)
获取名称为name的属性值
02-2.public void setAttribute(String name,Object object)
在请求中保存名称为name的属性
02-3.public void removeAttribute(String name)
清除请求中名字为name的属性
7.HttpServletRequest接口
01.HttpServletRequest概述
除了继承ServletRequest接口中的方法,还增加了一些用于读取请求信息的方法
02.HttpServletRequest常用方法
02-1.public String getContextPath()
返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分(上下文路径:要访问的URL路径)
02-2.public Cookie[] getCookies()
返回客户端在此次请求中发送的所有cookie对象
02-3.public HTTPSession getSession()
返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session
02-4.public String getMethod()
返回此次请求所使用的HTTP方法的名字,如GET、POST
8.ServletResponse接口
01.ServletResponse概述
向客户端发送响应数据
02.ServletResponse接口常用方法
02-1.public PrintWriter getWriter()
返回PrintWrite对象,用于向客户端发送文本
02-2.public String getCharacterEncoding()
返回在响应中发送的正文所使用的字符编码
02-3.public void setCharacterEncoding()
设置发送到客户端的响应的字符编码
02-4.public void setContentType(String type)
设置发送到客户端的响应的内容类型,此时响应的状态属于向未提交
9.HttpServletResponse接口
01.HttpServletResponse概述
除了继承ServletResponse接口中的方法,还增加了新的方法
02.HttpServletResponse的常用方法
02-1.public void addCookie(Cookie cookie)
增加一个cookie到响应中,这个方法可多次调用,设置多个cookie
02-2.public void addHeader(String name,String value)
将一个名称为name,值为value的响应报头添加到响应中
02-3.public void sendRedirect(String location)
发送一个临时的重定向响应到客户端,以便客户端访问新的URL
02-4.public void encodeURL(String url)
使用session ID对用于重定向的URL进行编码
10.接口和实现类的关系
01.请求
HttpServletRequest ----> ServletRequest(接口)
02.响应
HttpServletResponse ----> ServletResponse(接口)
01.接口
Servlet
用于接收用户请求,对用户请求进行处理。(定义了处理和接收用户请求的方法)
ServletConfig
用于配置Servlet配置,定义了对Servlet类的方法
02.抽象类
GenericServlet
实现了以上的两个接口的一部分方法
HttpServlet
继承自GenericServlet,实现了部分的方法
2.Servlet接口
01.Servlet概述
定义了所有Servlet需要实现的方法
02..Servlet接口的常用方法
02-1.public void init(ServletConfig config)
由Servlet容器调用,用于完成Servlet对象在处理客户请求前的初始化工作
02-2.public void service(ServletRequest req, ServletResponse res)
由Servlet容器调用,用来处理客户端的请求
02-3.public void destroy()
由Servlet容器调用,释放Servlet对象所使用的资源
02-4.public ServletConfig getServletConfig()
返回ServletConfig对象,该对象包含此Servlet的初始化和启动参数。返回的Servlet对象是传递init()方法的对象
02-5.public String getServletInfo()
返回有关的Servlet的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(比如HTML、XML)
3.ServletConfig接口
01.ServletConfig概述
在Servlet初始化过程中获取配置信息
一个Servlet只有一个ServletConfig对象
02.ServletConfig常用方法
02-1.public String getInitParameter(String name)
获取web.xml中设置的以name命名的初始化参数值
02-2.public ServletContext getServletContext()
返回Servlet的上下文对象
4.GenericServlet抽象类
01.GenericServlet概述
提供了Servlet与ServletConfig接口的默认实现方法
02.GenericServlet的常用方法
02-1.public void init(ServletConfig config)
调用Servlet接口中的init()方法。此方法还有一无参的重载方法,其功能与方法相同
02-2.public String getInitParameter(String name)
返回名称为name的初始化参数值
02-3.public ServletContext getServletContext()
返回ServletContext对象的引用
5.HttpServlet抽象类
01.HttpServlet概述
继承于GenericServlet
处理HTTP协议的请求和响应
02.HttpServlet的常用方法
02-1.public void service(ServletRequest req,ServletResponse res)
调用GenericServlet类中service()方法的实现
02-2.public void doXXX(HttpServletRequest req,HttpServletResponse res)
根据请求方式的不同,分别调用相应的处理方法,例如doGet()、doPost()等
6.ServletRequest接口
01.ServletRequest概述
获取客户端的请求数据
02.ServletRequest的常用方法
02-1.public Object getAttribute(String name)
获取名称为name的属性值
02-2.public void setAttribute(String name,Object object)
在请求中保存名称为name的属性
02-3.public void removeAttribute(String name)
清除请求中名字为name的属性
7.HttpServletRequest接口
01.HttpServletRequest概述
除了继承ServletRequest接口中的方法,还增加了一些用于读取请求信息的方法
02.HttpServletRequest常用方法
02-1.public String getContextPath()
返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分(上下文路径:要访问的URL路径)
02-2.public Cookie[] getCookies()
返回客户端在此次请求中发送的所有cookie对象
02-3.public HTTPSession getSession()
返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session
02-4.public String getMethod()
返回此次请求所使用的HTTP方法的名字,如GET、POST
8.ServletResponse接口
01.ServletResponse概述
向客户端发送响应数据
02.ServletResponse接口常用方法
02-1.public PrintWriter getWriter()
返回PrintWrite对象,用于向客户端发送文本
02-2.public String getCharacterEncoding()
返回在响应中发送的正文所使用的字符编码
02-3.public void setCharacterEncoding()
设置发送到客户端的响应的字符编码
02-4.public void setContentType(String type)
设置发送到客户端的响应的内容类型,此时响应的状态属于向未提交
9.HttpServletResponse接口
01.HttpServletResponse概述
除了继承ServletResponse接口中的方法,还增加了新的方法
02.HttpServletResponse的常用方法
02-1.public void addCookie(Cookie cookie)
增加一个cookie到响应中,这个方法可多次调用,设置多个cookie
02-2.public void addHeader(String name,String value)
将一个名称为name,值为value的响应报头添加到响应中
02-3.public void sendRedirect(String location)
发送一个临时的重定向响应到客户端,以便客户端访问新的URL
02-4.public void encodeURL(String url)
使用session ID对用于重定向的URL进行编码
10.接口和实现类的关系
01.请求
HttpServletRequest ----> ServletRequest(接口)
02.响应
HttpServletResponse ----> ServletResponse(接口)
Servlet应用
1.Servlet的应用步骤
01.创建Servlet
继承HttpServlet
实现doPost()或doGet()方法
02.部署Servlet
编辑Servlet到/WEB-INF/classes目录
编辑部署描述文件web.xml
<servlet>
<servlet-mapping>
<url-pattern>
03.启动Tomcat,访问Servlet
2.继承HttpServlet的类重写继承类的方法
01.找到Source --> Override/Implement Methods... --> 选择相应的方法 --> 类重写或者是实现继承或实现类中额度方法
3.三种URL(url-pattern)的配置方式
01.绝对匹配(精确匹配)
访问名
使用必须精确的定位才能访问
02.通配符配置方式1
访问名/*
使用精确匹配还是在后面加东西都可以访问到
03.通配符配置方式2
*.do
访问的文件名只要有响应的后缀名就可以访问
4.Servlet的创建流程
编写 --> 配置 --> 部署 --> 访问
编写阶端
类要实现HttpServlet并且要实现抽象类中的doGet和doPost方法
配置阶段
在web.xml文件中编写
<servlet>
<servlet-name>test</servlet-name><!-- 随便起一个名称 -->
<servlet-class>Test01.Test</servlet-class><!-- 需要访问的.java文件路径(包名.类名) -->
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name><!-- 必须跟servlet中servlet-name中保持一致 -->
<url-pattern>/test</url-pattern><!-- 在客户端访问的路径 -->
</servlet-mapping>
部署阶段
访问阶段
可以使用三种方式:精确匹配、通配符
01.创建Servlet
继承HttpServlet
实现doPost()或doGet()方法
02.部署Servlet
编辑Servlet到/WEB-INF/classes目录
编辑部署描述文件web.xml
<servlet>
<servlet-mapping>
<url-pattern>
03.启动Tomcat,访问Servlet
2.继承HttpServlet的类重写继承类的方法
01.找到Source --> Override/Implement Methods... --> 选择相应的方法 --> 类重写或者是实现继承或实现类中额度方法
3.三种URL(url-pattern)的配置方式
01.绝对匹配(精确匹配)
访问名
使用必须精确的定位才能访问
02.通配符配置方式1
访问名/*
使用精确匹配还是在后面加东西都可以访问到
03.通配符配置方式2
*.do
访问的文件名只要有响应的后缀名就可以访问
4.Servlet的创建流程
编写 --> 配置 --> 部署 --> 访问
编写阶端
类要实现HttpServlet并且要实现抽象类中的doGet和doPost方法
配置阶段
在web.xml文件中编写
<servlet>
<servlet-name>test</servlet-name><!-- 随便起一个名称 -->
<servlet-class>Test01.Test</servlet-class><!-- 需要访问的.java文件路径(包名.类名) -->
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name><!-- 必须跟servlet中servlet-name中保持一致 -->
<url-pattern>/test</url-pattern><!-- 在客户端访问的路径 -->
</servlet-mapping>
部署阶段
访问阶段
可以使用三种方式:精确匹配、通配符
Servlet生命周期
1.Servlet的生命周期
01.HTTP请求
02.解析请求
03.创建Servlet实例
04.调用init()方法
05.调用service()方法
06.输出响应信息
07.响应
08.调用destroy()方法
2.生命周期的各个阶段
01.实例化
Servlet容器创建Servlet的实例(一次项目的运行Servlet只会被创建一次)
02.初始化
该容器调用init()方法(Servlet被创建时实例化一次)
03.请求处理
如果请求Servlet,则容器调用service()方法(客户端每次发起请求是执行一次)
04.服务终止
销毁实现之前调用destroy()方法(在项目终止时执行destroy()方法)
01.HTTP请求
02.解析请求
03.创建Servlet实例
04.调用init()方法
05.调用service()方法
06.输出响应信息
07.响应
08.调用destroy()方法
2.生命周期的各个阶段
01.实例化
Servlet容器创建Servlet的实例(一次项目的运行Servlet只会被创建一次)
02.初始化
该容器调用init()方法(Servlet被创建时实例化一次)
03.请求处理
如果请求Servlet,则容器调用service()方法(客户端每次发起请求是执行一次)
04.服务终止
销毁实现之前调用destroy()方法(在项目终止时执行destroy()方法)
使用Servlet实现控制器
1.控制器的原理
01.浏览器发送请求
02.Web服务器(Servlet)
来充当一个控制器,来决定要调用那个业务逻辑并且决定把数据放到那个页面上进行展示。
03.实例化(JavaBeans)
通过Servlet的请求发送相应的响应
04.数据库
通过JavaBeans的请求发送相应的响应
05.JSP
Servlet响应的jsp,负责响应给客户端(浏览器)
06.浏览器
接收JSP,展示数据
2.小结
01.控制器的主要功能是接受请求,实例化JavaBean对象,来调用JavaBean对象对业务进行处理
02.JSP页面的主要功能是显示数据
03.request.getContextPath()可以获取项目的跟路径
01.浏览器发送请求
02.Web服务器(Servlet)
来充当一个控制器,来决定要调用那个业务逻辑并且决定把数据放到那个页面上进行展示。
03.实例化(JavaBeans)
通过Servlet的请求发送相应的响应
04.数据库
通过JavaBeans的请求发送相应的响应
05.JSP
Servlet响应的jsp,负责响应给客户端(浏览器)
06.浏览器
接收JSP,展示数据
2.小结
01.控制器的主要功能是接受请求,实例化JavaBean对象,来调用JavaBean对象对业务进行处理
02.JSP页面的主要功能是显示数据
03.request.getContextPath()可以获取项目的跟路径
使用Servlet配置参数
1.获取Servlet初始化参数
语法
<init-param>
<param-name>参数名称</param-name>
<param-value>参数值</param-value>
</init-param>
*在web.xml文件的servlet中编写
2.获取Servlet初始化参数(方法)
String getInitParameter(参数名称);
根据参数名称返回参数值
3.ServletContext接口
01.ServletContext概述
获取Servlet上下文
02.ServletContext常用方法
02-1.public String getInitParameter(String name)
获取名称为name的系统范围内的初始化参数值,系统范围内的初始化参数可以在部署描述符中使用<context-param>元素定义
02-2.public void setAttribute(String name, Object object)
设置名称为name的属性
02-3.public Object getAttribute(String name)
获取名称为name的属性
02-4.public String getRealPath(String path)
返回参数所代表目录的真是路径
02-5.public void log(String message)
记录一般日志信息
4.配置全局参数
01.语法
<context-param>
<param-name></param-name> //初始化参数的姓名
<param-value></param-value> //初始化参数的值
</context-param>
02.获取全局参数
this.getServletContext().getInitParameter("con");
// 获取全局对象 // 根据参数名称进行读取
*返回值为String类型
语法
<init-param>
<param-name>参数名称</param-name>
<param-value>参数值</param-value>
</init-param>
*在web.xml文件的servlet中编写
2.获取Servlet初始化参数(方法)
String getInitParameter(参数名称);
根据参数名称返回参数值
3.ServletContext接口
01.ServletContext概述
获取Servlet上下文
02.ServletContext常用方法
02-1.public String getInitParameter(String name)
获取名称为name的系统范围内的初始化参数值,系统范围内的初始化参数可以在部署描述符中使用<context-param>元素定义
02-2.public void setAttribute(String name, Object object)
设置名称为name的属性
02-3.public Object getAttribute(String name)
获取名称为name的属性
02-4.public String getRealPath(String path)
返回参数所代表目录的真是路径
02-5.public void log(String message)
记录一般日志信息
4.配置全局参数
01.语法
<context-param>
<param-name></param-name> //初始化参数的姓名
<param-value></param-value> //初始化参数的值
</context-param>
02.获取全局参数
this.getServletContext().getInitParameter("con");
// 获取全局对象 // 根据参数名称进行读取
*返回值为String类型