Servlet学习

1. Servlet与JSP的关系

2. Servlet的声明周期

3. 一个简单的Servlet的使用方法

什么是Servlet? 什么又是JSP?

继承了javax.servlet的一些类的程序 , 已经具有了Servlet的特征

但是Servlet的可视性不是太好, JSP可以弥补这一点 , jsp是Java Server Pagers , 是一种使用java作为脚本的语言, 在web服务器中可以转化为Servlet , 在传统的HTML网页中使用<% java语言 %> 就可以嵌入java代码了

Servlet是服务器端的小程序 , 可以用来通过多种方法扩充一个Web服务器.

PS:这句话告诉我们:

1. Servlet 是一个java写的程序

2. Servlet是运行在服务器端的 , 而不是Client

3. 写Servlet的最终目的是为了让服务器帮我们做事情

Servlet与JSP的关系:
相同点: JSP最终会转化为一个Servlet

不同点:

1 Servlet是持久的 , 仅需要Web服务器加载一次

2 Servlet是可扩展的 , 因为java是面向对象的

3 JSP是为了解决Servlet中的编程困难为开发的技术 , jsp是脚本语言 , Servlet是java语言

4 Servlet必须在编译之后才可以进行

5 第一次运行时 , JSP需要转化为Servlet然后在编译 , 才可以运行 . 而Servlet直接就编译了 .(所谓的第一次就是web容器中没有存在一模一样的文件)

6 servel写业务逻辑十分强大 . jsp写视图层效果很好

Servlet生命周期:

Servlet是javax.Servlet.httpServlet的子类.

1 装载Servlet

2 调用构造函数 实例化一个Serlet对象 , 这个对象的名字有<servelt-name/>指定

3 调用init()方法

4 服务Service()

5卸载destoory()

Demo:

目录结构:

Web.xml

----------------------------Test1.java----------------------------------------------------------

package com.controller;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class Test1

*测试声明周期

*/

@WebServlet("/Test1")

public class Test1 extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public Test1() {

super();

System.out.println("----------------construction----------------");

// TODO Auto-generated constructor stub

}

/**

* @see Servlet#init(ServletConfig)

*/

public void init(ServletConfig config) throws ServletException {

// TODO Auto-generated method stub

System.out.println("---------init------------");

System.out.println(this.getClass());

}

/**

* @see Servlet#destroy()

*/

public void destroy() {

super.destroy();

System.out.println("----------------destroy-----------");

// TODO Auto-generated method stub

}

/**

* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)

*/

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

System.out.println("------service---------------");

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doPost(request, response);

System.out.println("---------------默认调用doget()------------");

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

PrintWriter out = response.getWriter();

out.println("-------------------书写内容-------------------------") ;

out.flush();

out.close();

}

}

index.jsp

效果图:

PS: 请注意地址栏的变化

这个时候发现没有调用doget()方法

原因是: 于是这样写了一下:

发现还是没有>>>>>>>>>>>>>>>这时你发现你写的这个类上的Service方法是这样写的:

对! 就是覆盖了了父类的方法了 ,如此一来,Servlet的Service()只会运行Syso了

为此应该改成:

这是这个类成了这样的:

package com.controller;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class Test1
*测试声明周期
*/
@WebServlet("/Test1")
public class Test1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Test1() {
       
        super();
      
        System.out.println("----------------construction----------------");
        // TODO Auto-generated constructor stub
    }

/**
     * @see Servlet#init(ServletConfig)
     */
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("---------init------------");
        System.out.println(this.getClass());
    }

/**
     * @see Servlet#destroy()
     */
    public void destroy() {
        super.destroy();
        System.out.println("----------------destroy-----------");
        // TODO Auto-generated method stub
    }

/**
     * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
     */
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.service(request, response);
        System.out.println("------service---------------");
    }

/**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request, response);
       
        System.out.println("---------------doget()------------");
    }

/**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter out  = response.getWriter();
       
        out.println("-------------------content-------------------------") ;
       
        out.flush();
        out.close();
       
    }

}

---------------------------------------------------

效果是:

在启动之后

显示

后台输出信息为:

点击连接之后:

控制台输出信息是

Servlet复习1: 一个简单的Servlet的使用的更多相关文章

  1. 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在

    由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存 ...

  2. 开发部署一个简单的Servlet

    Servlet是一个执行在服务器端的Java Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet Engline路径下.Servlet ...

  3. Tomcat剖析(二):一个简单的Servlet服务器

    Tomcat剖析(二):一个简单的Servlet服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三) ...

  4. 一个简单的servlet容器

    [0]README 0.1)本文部分文字转自 “深入剖析Tomcat”,旨在学习  一个简单的servlet容器  的基础知识: 0.2)for complete source code, pleas ...

  5. 一个简单的servlet的demo

    javaweb  的应用我们需要参考javaee  api 查找servlet接口 javax.servletInterface Servlet All Known Subinterfaces: Ht ...

  6. 一个简单的Servlet容器实现

    上篇写了一个简单的Java web服务器实现,只能处理一些静态资源的请求,本篇文章实现的Servlet容器基于前面的服务器做了个小改造,增加了Servlet请求的处理. 程序执行步骤 创建一个Serv ...

  7. 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...

  8. how tomcat works 札记(两)----------一个简单的servlet集装箱

    app1 (看着眼前这章建议读者,看how tomcat works 札记(一个)----------一个简单的webserver http://blog.csdn.net/dlf123321/art ...

  9. how tomcat works 读书笔记(二)----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

随机推荐

  1. Excel2003命令栏操作

    Excel2003个人觉得应该把它抛掉不管了,但还是没忍住想看下它里面的东东. 一.先列出一些重要对象 Commandbars:命令栏集合                                ...

  2. jenkins远程命令执行利用工具

    昨天看小飞侠写的py的jenkins的脚本,昨天晚上在微信里评论今天写一个JAVA的GUI的tools. 早上花了点时间写一下: code: package com.tools; import jav ...

  3. 数据词典与ABAP类型映射

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 未能加载文件或程序集xxx或它的某一个依赖项 试图加载格式不正确的程序

    解决方案:IIS——应用程序池——高级设置——启用32位应用程序 :true.

  5. Jquery基本、层次选择器

    基本选择器: $("#none").css("background","#bbffaa"); 改变id为none的所有元素的背景色 $(&q ...

  6. MyEclipse中文乱码解决方法

    在Myeclipse导入一个项目,有中文乱码问题,解决方法如下: 一.将整个project设置编码UTF-8(UTF-8可以最大的支持国际化) windows->Preferences-> ...

  7. QQServer_update

    import java.awt.*; import javax.swing.*; import java.net.*; import java.io.*; import java.awt.event. ...

  8. GCC编译器和GDB调试器常用选项

    http://blog.csdn.net/u014328976/article/details/46745349 GCC编译器 gcc hello.c -o hello                 ...

  9. ajax发布评论 、显示评论

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...

  10. 转:关于C++14:你需要知道的新特性

    关于C++14:你需要知道的新特性 遇见C++ Lambda C++14 lambda 教程 C++11 lambda表达式 C++标准库:使用 std::for_each std::generate ...