Servlet复习1: 一个简单的Servlet的使用

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();
       
    }

}

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

效果是:

在启动之后

显示

后台输出信息为:

点击连接之后:

控制台输出信息是

时间: 2025-01-02 09:25:01

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

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

由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存在”错误的方法: 1. 搜索servlet-api.jar 所在文件夹:E:\TomcatSetup\lib 2. 将环境变量CLASSPATH的值设置为: .;E:\TomcatSetup\lib\servlet-api.jar 3. 除了设置classpath以及servlet-api.jar外

一个简单的servlet的demo

javaweb  的应用我们需要参考javaee  api 查找servlet接口 javax.servletInterface Servlet All Known Subinterfaces: HttpJspPage, JspPage All Known Implementing Classes: FacesServlet, GenericServlet, HttpServlet public interface Servlet Implemented by: FacesServlet, Ge

写一个简单的servlet

昨天写完hibernate的小demo后,想写一个简单structs2,但是发现好像自己连servlet都忘了怎么写了,所以一切从头开始,先写一个简单servlet把 第一步 肯定是建立项目了,打开自己eclipse(myeclipse,sts,idea).然后file->new->java project.这里肯定会有疑问,为啥不建立一个web project呢.呃,原因很简单,因为要从头来,一切都从头来呗,web project里 web方面的属性都给配置好了,就起不到学习的作用了. 名字

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

app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/article/details/39378157) 回顾我们上一章,我们开发了一个最最简单的web服务器,它可以使用户访问服务器内的静态资源.当然这是远远不够的,在这一节里,我们就试着让服务器在能相应静态资源的基础上继续支持servlet. servlet接口 javax.servlet.Servlet接口

Servlet学习教程(三)---- 一个简单的Servlet例子

我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置Default output folder 为Servlet/WebContent/WEB-INF/classes 第二,创建一个包,包名为Servlet,然后创建一个类名为WelcomeServlet类.(Servlet类当然缺少不了Servlet容器,请注意你的开发软件是否已经集成Servlet容

一个简单的Servlet容器实现[一]

上篇写了一个简单的Java web服务器实现,只能处理一些静态资源的请求,本篇文章实现的Servlet容器基于前面的服务器做了个小改造,增加了Servlet请求的处理. 程序执行步骤 创建一个ServerSocket对象: 调用ServerSocket对象的accept方法,等待连接,连接成功会返回一个Socket对象,否则一直阻塞等待: 从Socket对象中获取InputStream和OutputStream字节流,这两个流分别对应request请求和response响应: 处理请求:读取In

一个简单的Servlet

1.Servlet开发选项: 为了创建Servlet,需要访问Servlet容器(服务器).两个常用的服务器分别是 Glassfish 和 Tomcat .这里的Servlet开发和部署都是基于Tomcat ,并且只使用命令行工具. 2.使用Tomcat: Tomcat包含了创建和测试Servlet所需要的类库.文档以及运行时支持.Tomcat有多个不同版本,从官网下载合适的版本即可http://tomcat.apache.org/.下载后解压,配置环境变量(64位Windows环境为例): 2

2.一个简单的Servlet容器

很显然Http服务器会按照Http协议对获取的请求进行分析并返回规定的信息,通过对Http的理解,java大叔将其返回的信息封装成一个类,称为Servlet,至此,Http服务器在Java中就变成了按照Http协议对获取的请求进行分析并返Servlet,很明显,Http服务器在这里也就变为了Servlet容器...    注:服务器是什么?理解万岁...

Tomcat学习笔记(二)—— 一个简单的Servlet容器

1.简介:Servlet编程是通过javax.Servlet和javax.servlet.http这两个包的类和接口实现的,其中javax.servlet.Servlet接口至关重要,所有的Servlet必须实现该接口或者继承实现了该接口的类. 2.Servlet接口有5个方法: public void init(ServletConfig config) throws ServletException; public void service(ServletRequest request, S