Servlet
所有的Servlet必须实现Servlet接口
Servlet是在任何服务器端运行的小程序,除了可以在IE上运行外,还可以在Email,FTP等服务器端运行。
Web Application 网络应用程序
目录结构:
●Web Application
●WEB-INF
●Web.xml 存放着改web app的配置文件
●lib 该web app用到的库文件
●classes 存放编译好的servlet
●META-INF
●存放该web app的上下文信息
HttpServlet
开发servlet的三种方法:
1、实现servlet接口
2、继承GenericServlet
3、继承HttpServlet
实现servlet接口:如果一个类实现了servlet接口,那么它就是一个servlet
继承GenericServlet类:继承GenericServlet这种开发方式,只需要重写service方法
继承HttpServlet类:最常用的servlet开发方式,我们一般重写它的doGet()和doPost()方法
doGet()和doPost()的区别
1、从安全性看,get<post 。get提交的数据会在浏览器的地址栏上显示
2、从内容大小看,get<post。get提交的内容不能大于2K,而post理论没有限制,实际不超过64K
3、从请求/响应速度看,get>post。get要求服务器立即处理请求,而post请求可能形成一个队列请求。
在web.xml中部署servlet
<web-app>
<servlet>
<servlet-name>hello</servlet-name>//可以任意的给servlet取名
<servlet-classs>cn.wyd.Servlet</servlet-classs>//指明servlet的路径,(包名+类名)
<servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/URL</url-pattern>//这里输入在IE中访问该servlet时的URL地址
</servlet-mapping>
</web-app>
Servlet的生命周期
加载类 classloader
实例化对象 new对象,调用构造方法constructor()
初始化对象 init() 只执行一次,第一次初始化Servlet的时候
处理请求 service() doGet() doPost()
退出服务 destroy()
Http协议的7种请求处理
doGet() get请求
doPost() post请求
doPut() 向服务器上传东西
doDelete() 删除服务器上的东西
doHead() 请求Http协议的头信息
doOptions() 对web service进行配置
doTrace() 进行跟踪,调试时使用
实例的个数
在非分布式的情况下,通常一个Servlet在服务器中只有一个实例,J2EE的标准不允许一个servlet中new出俩对象
Cookie
cookie记录在客户端
cookie分为两种:
一种是属于窗口的(包括其派生的子窗口)
另一种是属于文本的,记录在客户端的硬盘上
一个servlet/jsp设置的cookies能够被同一路径下面或者子路径下面的servlet/jsp读取到
Session
session记录在服务器端
session的两种实现方式:
1、通过cookie实现
●如果浏览器支持cookie,创建session时,会把sessionID保存在cookie里面
2、通过url重写实现
●如果浏览器不支持cookie,必须自己编程,使用url重写的方式实现session
●原代码out.println("<br><a href="+"index.jsp"+">刷新</a>");
●out.println("<br><a href="+response.encodeURL("index.jsp")+"">刷新</a>");
Application
用于保存整个web application的生命周期内部都可以访问的数据
在API中表现为ServletContext
通过HttpServlet的getServletContext()方法可以拿到
通过ServletContext的get/setAttribute()方法取/设属性