1,开发一个servlet大致需要的步骤:
(1),编写servlet源码并编译。
(2),在web.xml进行相应的配置。
(3),将包含该servlet的web应用程序部署到web容器里,并启动web容器。
(4),通过浏览器访问该servlet。
2,servlet 的四个周期: 加载,初始化(init()),提供服务(service()),销毁(detory())
3,get的请求方式会把请求的参数追加到请求的url后面,首先在url的后面加一个?,然后使用"参数名=参数值",的形式追加参数。
post请求方式则是把请求的参数放在请求的正文里,不能直接通过url看到。,
4,获取客户端参数的两种方式:getParament()(只有一哥 参数)和getParamentValues()(用于多值的参数)
例子:
String username= request.getParament("username")
String[] hobbies=request.getParamentValues("hobby");
5,cookie:记录在客户端浏览器的数据,它的格式是“名-值”对,一般可以通过cookie保存一些用户的数据,如,登录名,密码等。
java web容器会在用户第一次请求的时候在浏览器的cookie里加入 一条名为“jsessionid”的数据,同样web容器也有。以后的每次请求浏览器都会把cookie的值传回到服务器端,所以服务器就会根据‘jsessionid’的值跟踪一个用户了。浏览器关闭,跟踪结束。(回话的时间是有限制的)
6,servlet转发一个http请求分为直接转发和间接转发。
间接转发本质是两次http请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个url发送,从而达到转发的目的。
直接转发是浏览器只发出一次请求,servlet把请求转发给servlet,Html,jsp或其他信息资源,有第二个信息资源响应该请求,在请求对象request中保存的对象对于每个信息资源都是共享的。
web应用程序大多会有一个控制器,由控制器来控制请求应该转发给那个信息资源,然后有信息资源处理请求,处理我完后还可能转发给另外的信息资源返回给用户,这个过程既是经典的MVC模式。
7,过滤器:就是在目标资源和源头资源之间起到过滤作用的一个东西。对于web应用程序来说,过滤器是处于服务器端的,队请求消息和响应消息进行过滤的一中组件。
过滤器是一种重要的设计模式,不仅引用在javaweb开发中,其他开发领域也会应用到过滤器模式,他可以在不侵入原有代码的基础上为他们提供一些功能。
8,java web 应用程序的范围模型。
request:请求 代表了一次http请求,他的生命周期从请求开始知道请求的响应结束。中间可能会穿插多个信息资源,如过滤器, servlet,jsp。
Session 会话,代表了一次会话,也可认为代表了一个用户,一个会话里可以包含多次的请求。如果用户长时间不发出请求,可能导致会话超时而过期,超时时长可以设置。因为它代表一个用户,所以一般使用session保存用户的数据,如购物车。
application :应用 他的生命周期从web 容器启动或部署该应用开始,一web 容器停止,或取消部署而结束。他的作用范围最大,一般用于存放应用标题,或其他外部资源连接器等。
9,监听器体现了一种监听事件模型。
三种事件监听:1,request事件监听实现接口(ServltRequestListener)
2,session事件监听接口(HttpSessionListener)
3,application事件监听接口(ServletContextListener)
10,forward和redirect的区别:
forward是直接转发,通过request调用
redirect是间接转发,通过response调用
forward在服务端的内部发生,对于客户端来说是不可见的,即使请求在服务器端的各个资源间转发过多次,客户端浏览器的地址栏的地址依然是最初的请求地址,redirect则相反,他的请求转发实质是向客户端发送一条请求另一个地址的结果,浏览器会修改地址栏的地址,再重新发一次新的请求,对于客户端来说是可见的。
11,
Servlet体系结构和层次结构
1,Servlet体系结构
------请求 ---> -------> ------->
客户端 HTTP服务器 Servlet容器 Servlet
<----- 响应 ---- <--------- <-------
2,Servlet层次结构
Servlet是实现javax.servlet.Servlet接口的对象,大多数Servlet通过GenericServlet或HttpServlet进行扩展. Servlet API 由两个程序包组成
javax.servlet 包
类:
ServletInputStream类:从客户端读取二进制数据;
ServletOutputStream类;向客户端发送二进制数据;
GenericServlet类:抽象类,定义了一个通用的,独立于底层协议的Servlet。
接口:
Servlet接口:管理Sevlet。定义实现Servlet的必须方法。一个Servlet必须实现Servlet接口或Servlet接口的扩展。
ServletConfig接口:Servlet初始化时,向Servlet传递配置信息。
ServletContext接口;Servlet上下文,使Servlet与其他的Servlet容器进行交互通信。
ServletRequest接口:向Servlet客户端提供请求信息
ServletResponse接口;Servlet向客户端提供响应信息。
javax.servlet.http 包
类:
Cookie类
HttpServlet类:抽象类,继承自GenericServlet。应用于HTTP协议的请求和响应的Servlet。
接口:
HttpSession接口:
HttpAttributeListener接口:会话的属性监听接口;
HttpServletRequest接口;扩展ServletRequest接口,向Servlet客户端提供HTTP请求信息。
HttpServletResponse接口;扩展ServletResponse接口,Servlet向客户端提供HTTP响应信息。
总体可以分为:
Servlet类: 实现具体协议的业务类,其目的是一个业务实现的WEB组件类;
Servlet接口: 该接口独立于协议实现,其目的是为了定义服务器的组件标准;
GenericServlet抽象类: 该类提供了一个独立于协议的实现,其目的是为了满足服务器;
HttpServlet: 该类实现了HTTP协议,其目的是为了让客户程序扩展;