Servlet宝典

一,servlet概述
就是一个java类,是javweb的规范之一,也是三大组件之一(serlvet,listener,filter)
作用:负责接收用户的请求以及做出响应。(之前是由doXxx.jsp)

快速入门:

实现servlet接口 不常用

继承HttpServlet抽象类 doGet doPost

完成servlet文件的编写后必须要实现配置

2种方式

注解 @webServlet("/路径")

web.xml中进行配置

<servlet>    
    <servlet-name>xxx</servlet-name>    
    <servlet-class>com.zking.AServlet</servlet-class></servlet>
<servlet-mapping>    
    <servlet-name>xxx</servlet-name>   
    <url-pattern>/xxx.do</url-pattern>
</servlet-mapping
JSP中的内置对象对应Servlet中的什么对象

JSP                    Servlet
request            serivce(request,response)   doPost(request,response)
 
session               request.getSession    HttpSession
applicaiton         this.getServletContext();   ServletContext
out                    response.getWriter()      PrintWriter
 
Cookie                Cookie
servlet中2个重要对象

ServletConfig配置对象

ServletContext全局对象

都是获取web.xml中的参数问题。

编码的问题

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
如何在serlvet中获取到当前项目的绝对路径

这里的绝对路径指的是基于项目的根目录而不是基于磁盘。

String path = this.getServletConfig().getServletContext().getContextPath();
 
/项目名称
path+"/index.jsp"

jsp内置对象    servlet中java对象    获取
request    HttpServletRequest    service方法中的req参数
response     HttpServletResponse    service方法中的resp参数
session     HttpSession     req.getSession()
exception    Throwable     
page     this     this
pageContext     PageContext     
application    ServletContext    getServletContext()
config    ServletConfig    getServletConfig()
out     JspWriter    resp.getWriter()
  

二,Servlet概述
1.1 什么是servlet?
servlet是JavaEE的规范(接口)

Server Applet;servlet是javaweb的三大组件之一,它属于动态资源。servlet的作用是处理请求,服务器会把接收到的请求交给servlet来处理,在servlet通常需要:

接收请求数据

处理请求

完成响应

例如客户端发出登录请求,或者输出注册请求,这些请求都应该有servlet来完成处理!servlet需要我们自己来编写,每个servlet必须实现javax.servlet.Servlet接口。
servlet执行原理

(1)当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
(2)查找web.xml文件,是否有对应的<url-pattern>标签体内容。
(3)如果有,则在找到对应的<servlet-class>全类名
(4)tomcat会将字节码文件加载进内存,并且创建其对象
(5)调用其方法
1.2 实现servlet的方式
实现servlet有三种方式:

实现javax.servlet.Servlet接口;

继承javax.servlet.GenericServlet类;

继承javax.servlet.http.HttpServlet类;

通常会继承HttpServlet类来完成我们的Servlet。
   

Servlet接口详解

public interface Servlet{
    public void init(servletConfig config) throws ServletException;
    public ServletConfig getServletConfig();
    public void service(ServletRequest req, ServletResponse resp) throws ServletException,IOException;
    public String getServletInfo();
    public void destory();

}
 

1.3 servlet的生命周期
问题:当servlet被编写完成后,如何让浏览器访问servlet呢?

给servlet指定一个servlet路径!(让servlet与一个路径绑定在一起)

浏览器访问servlet路径

给servlet配置servlet路径,需要在web.xml中对servlet进行配置。

<servlet>
    <servlet-name>xxx</servlet-name>
    <servlet-class>com.zking.AServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>xxx</servlet-name>
    <url-pattern>/xxx.do</url-pattern>
</servlet-mapping>
生命周期方法

void init(ServletConfig):出生之后(1次)
void service(ServletRequest request,ServletResponse response):每次处理请求时都会被调用
void destory():临时之前调用(1次)
【总结】servlet由我们编写,但对象由服务器来创建,并且由服务器来调用相应的方法。

1.4 HttpServlet
HttpServlet是Servlet接口的一个实现类,并且它是一个抽象类,servlet.http包中定义了采用HTTP通信协议(一个无状态协议)的HttpServlet类。

创建HttpServlet步骤

继承HttpServlet抽象类

重写HttpServlet的部分方法,如doGet()或doPost()方法

获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串

生成HTTP响应结果。通过HttpServletResponse对象生成响应结果

HttpServlet的实现由两种方式

实现方式一:.xml配置实现
A.配置xml文件(实现方式同Servlet接口的.xml配置相同,此处不再重复)
B.继承HttpServlet抽象类
C.重写get()、post()方法
实现方式二:注解实现
直接在Package包下新建Servlet
1.5 ServletConfig
1.5.1 快速入门

概述

ServletConfig是Servlet的配置参数对象,在Servlet的规范中,允许为每一个Servlet都提供一些初始化的配置,所以每一个Servlet都有一个ServletConfig。

作用

当Servlet容器初始化Servlet时,Servlet容器会给Servlet的init()方法传入一个ServletConfig对象,即传入一些配置信息给Servlet。

生命周期

应用一加载则创建,应用停止则被销毁;

创建时间

创建完Servlet对象时,接着创建。Servletconfig对象

常用方法

返回值    方法名    说明
String    getInitParameter(String name)    根据参数名称获取参数的值
Enumeratin<String>    getInitParameterNames()    根据所有参数名称的枚举
String    getSevletName()    获取servlet的名称
ServletContext    getServletContext()    获取servletContext对象
1.5.2 ServletConfig的配置方式

在<servlet>标签种,通过<init-param>标签来配置。有两个子标签: <param-name>:代表初始化参数的key。 <param-value>: 代表初始化参数的value

1.6 ServletContext
1.6.1 ServletConText介绍

概述:ServletContext对象是一个应用上下文对象,也是一个域对象。表示Servlet应用程序,每个web应用程序都只有一个ServletContext对象。

ServletContext对象的作用

有了ServletContext对象,就可以共享从应用程序中的所有资源访问到的数据信息,并且可以动态注册web对象。

可以获得应用域的全局初始化参数,以及达到Servlet之间的数据共享;

可以作为域对象在整个应用中共享数据;域对象即在一定的作用范围内实现资源共享;

可以用来获取应用中的资源在服务器上的绝对路径;

获取文件的mime类型: 在网络传输中,并不是以扩展名来区分文件的类型,都是以mime类型;如:text/html;表示一个html文件。

生命周期: 应用一加载则创建,应用被停止则销毁

创建时间: 加载web应用时,创建ServletContext对象。

域对象

域对象指的是对象有作用域,即有作用范围。域对象可以实现数据的共享,不同作用范围对象,共享数据的范围能力也不同。

在Servlet规范中,一共有4个域对象。其他三个是:request请求域,PageContext页面域,session会话域。ServletContext就是其中的一个。是web应用中最大的作用域,也叫application应用域,可以实现整个应用之间的数据共享!

常用方法

返回值    方法名    说明
void    setAttribute(String name,Object value)    向域对象中存储数据
Object    getAttribute(String name)    通过名称获取域对象中的数据
void    removeAttribute(String name)    通过名称移除域对象中的数据
Enumeration<String>    getAttributeNames()    获取域对象中所有数据的名称
String    getSevletContextName()    获取servletContext的名称
String    getContextPath()    获取当前应用的访问虚拟目录
String    getServletInfo()    获取服务器名称和版本信息
String    getInitParameter(String name)    根据名称获取全局配置的值
Enumeration<String>    getInitParameters()    获取全局配置的所有名称
String    getRealPath(String path)    根据虚拟目录获取应用部署额磁盘绝对路径
1.6.2 ServletContext配置方式

ServletContext不像ServletConfig接口在Servlet标签里配置,而是针对于整个应用的配置,也叫全局的初始化参数;

在<web-APP>标签中,通过<context-param>标签来配置,有两个子标签: <param-name>: 代表全局初始化参数的key。 <param-value>: 代表全局初始化参数的value。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值