本文共 4170 字,大约阅读时间需要 13 分钟。
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
public class ServletDemo1 implements Servlet
demo1 cn.itcast.web.servlet.ServletDemo1 demo1 /demo1
//Servlet的生命周期:从Servlet被创建到Servlet被销毁的过程//一次创建,到处服务//一个Servlet只会有一个对象,服务所有的请求/* * 1.实例化(使用构造方法创建对象) * 2.初始化 执行init方法 * 3.服务 执行service方法 * 4.销毁 执行destroy方法 */public class ServletDemo1 implements Servlet { //生命周期方法:当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次 public void init(ServletConfig arg0) throws ServletException { } //生命周期方法:对客户端响应的方法,该方法会被执行多次,每次请求该servlet都会执行该方法 public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { } //生命周期方法:当Servlet被销毁时执行该方法 public void destroy() { } //当停止tomcat时也就销毁的servlet。 public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; }}
* Servlet中的生命周期方法: 1. 被创建:执行init方法,只执行一次 * Servlet什么时候被创建? * 默认情况下,第一次被访问时,Servlet被创建 * 可以配置执行Servlet的创建时机。 * 在标签下配置 1. 第一次被访问时,创建 * 的值为负数 2. 在服务器启动时,创建 * 的值为0或正整数 * Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的 * 多个用户同时访问时,可能存在线程安全问题。 * 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值 2. 提供服务:执行service方法,执行多次 * 每次访问Servlet时,Service方法都会被调用一次。 3. 被销毁:执行destroy方法,只执行一次 * Servlet被销毁时执行。服务器关闭时,Servlet被销毁 * 只有服务器正常关闭时,才会执行destroy方法。 * destroy方法在Servlet被销毁之前执行,一般用于释放资源
Servlet3.0:
步骤:
@WebServlet(“资源路径”)
@Target({ ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface WebServlet { String name() default "";//相当于String[] value() default { };//代表urlPatterns()属性配置 String[] urlPatterns() default { };//相当于 int loadOnStartup() default -1;//相当于 WebInitParam[] initParams() default { }; boolean asyncSupported() default false; String smallIcon() default ""; String largeIcon() default ""; String description() default ""; String displayName() default "";}
IDEA会为每一个tomcat部署的项目单独建立一份配置文件
工作空间项目 和 tomcat部署的web项目
断点调试:使用"小虫子"启动 dubug 启动
Servlet -- 接口 |GenericServlet -- 抽象类 |HttpServlet -- 抽象类* GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象 * 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可* HttpServlet:对http协议的一种封装,简化操作 1. 定义类继承HttpServlet 2. 复写doGet/doPost方法
1. urlpartten:Servlet访问路径 1. 一个Servlet可以定义多个访问路径 : @WebServlet({ "/d4","/dd4","/ddd4"}) 2. 路径定义规则: 1. /xxx:路径匹配 2. /xxx/xxx:多层路径,目录结构 3. *.do:扩展名匹配
转载地址:http://fpyof.baihongyu.com/