`
ye_haiqiang
  • 浏览: 88801 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Servlet 基础(1)

    博客分类:
  • J2EE
阅读更多

一、什么是servlet:

servlet是一个java程序,是在服务器端运行以处理客户端请求并做出响应的程序!

二、servlet常见代码(解析):

//创建servlet要导入的包
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//必须继承自HttpServlet
public class HelloServlet extends HttpServlet {
 
 /**
  * 实现doGet()或者doPost() 方法,以处理客户端请求
  * */
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out
    .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>Hello Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
  out.print("    This is ");
  out.print(this.getClass());
  out.println(", using the GET method");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request,response);
 }
}

三、JSP与Servlet之间的关系

大家都知道servlet与jsp都可以在页面上动态显示数据,那么他们之间到底存在什么样的关系呢?

我们新建下jsp页面:MyJsp.jsp

eg:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <head>
    <title>MyJsp.jsp</title>
  </head>
  <body>
    This is my JSP page. <br>
  </body>
</html>

接下来我们部署下我们的项目!并运行MyJsp.jsp

http://localhost:8089/Test/MyJsp.jsp

然后我们打开我们tomact安装目录找到jsp页面生成的java文件的路径:

C:\Program Files\Apache Software Foundation\Tomcat 6.0\work\Catalina\localhost\Test\org\apache\jsp

我们就会找到MyJsp_jsp.java文件,内容如下

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;

//继承了org.apache.jasper.runtime.HttpJspBase类

public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

  private static java.util.List _jspx_dependants;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.AnnotationProcessor _jsp_annotationprocessor;

  public Object getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }

  public void _jspDestroy() {
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html;charset=utf-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
         null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("  <head>\r\n");
      out.write("    <title>MyJsp.jsp</title>\r\n");
      out.write("  </head>\r\n");
      out.write("  <body>\r\n");
      out.write("    This is my JSP page. <br>\r\n");
      out.write("  </body>\r\n");
      out.write("</html>\r\n");
    } catch (Throwable t) {
      if (!(t instanceof SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try { out.clearBuffer(); } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

解析:

HttpJspBase类继承了HttpServlet,如下:
public abstract class HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage

下面跟清楚的看清了他们之间的一些关系:

java.lang.Object
  javax.servlet.GenericServlet
      javax.servlet.http.HttpServlet
          org.apache.jasper.runtime.HttpJspBase

由上可见:Servlet是JSP的基础(即,JSP在运行前首先将编译为一个servlet)

 

每天一点点希望对大家有利!

分享到:
评论

相关推荐

    Servlet基础知识总结

    ### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...

    servlet基础与高级技术

    ### Servlet基础 1. **Servlet概念**:Servlet是一个Java类,它扩展了服务器的功能,允许开发者创建能够处理HTTP请求的应用程序。Servlet生命周期包括加载、实例化、初始化、服务、销毁五个阶段。 2. **Servlet...

    jsp Servlet基础入门学习教程

    这个压缩包中的"jsp Servlet基础入门学习教程"可能包含了关于这两个主题的详细讲解,包括理论知识、示例代码和实践指导。建议按照教程步骤逐步学习,同时结合实际项目练习,加深理解。 总之,理解和掌握JSP与...

    Servlet基础 Servlet基础 Servlet基础 Servlet基础 Servlet基础

    在Servlet编程中,`GenericServlet`是最基础的抽象类,它实现了Servlet接口,而大多数HTTP相关的Servlet会继承`HttpServlet`。`HttpServlet`提供了针对HTTP请求方法的抽象方法,如`doGet`和`doPost`。开发者通常需要...

    jsp,servlet基础

    jsp 与servlet基础 1:jsp概述 2:jsp基础 3:jsp隐含对象 4:jsp中使用数据库 5:jsp与javabean ...

    servlet基础与servlet容器模型

    总的来说,Servlet基础知识和Servlet容器模型构成了Java Web开发的核心部分。掌握这些概念有助于理解Web应用的工作原理,以及如何在实际项目中有效地使用Servlet和容器提供的功能。通过深入学习和实践,开发者可以...

    jsp/servlet基础课件

    **学习JSP和Servlet基础,你需要理解它们的基本概念、生命周期、API使用以及如何协作处理Web请求。此外,熟悉EL和JSTL,以及如何在实际项目中应用MVC模式,对于提升开发效率和代码质量至关重要。本课件将逐步引导你...

    Servlet基础补充案例 习题.doc

    Servlet 基础补充案例习题 在本节中,我们将探讨 Servlet 基础补充案例习题,旨在掌握实际开发中 Servlet 程序的基本实现和使用。我们将通过两个案例,分别演示如何编写基于 HTTP 协议的 Servlet 程序,并掌握 ...

    北大青鸟 Servlet 基础 PPT

    因此,可以说Servlet是JSP技术的基础,因为JSP最终也是通过Servlet来实现其功能的。 处理HTTP请求的方法主要有两种:GET和POST。GET请求通常用于获取资源,其参数会显示在URL中,而POST请求则常用于向服务器提交...

    servlet简介(入门必备)

    一、Servlet基础 1. Servlet API:Servlet的核心是Java的Servlet API,它定义了Servlet的接口和类,如`GenericServlet`、`HttpServlet`等。开发者通过实现这些接口来创建自己的Servlet。 2. 生命周期:Servlet在...

    Servlet Demo

    一、Servlet基础 1. **Servlet接口**:Servlet的核心接口,定义了Servlet的基本方法,如`service()`,`init()`,`destroy()`等。实现Servlet接口的类必须由Servlet容器(如Tomcat)加载并实例化。 2. **...

    Servlet基础Demo

    在本教程"Servlet基础Demo"中,我们将深入理解Servlet的工作原理,以及如何创建和运行一个简单的Servlet应用。 首先,Servlet是一个Java类,它实现了Servlet接口或者HttpServlet类,后者是Servlet接口的一个实现,...

    基于Servlet的网上花店系统.zip

    一、Servlet基础 1. Servlet生命周期:Servlet在Web容器中经历初始化、服务和销毁三个阶段。初始化通过`init()`方法完成,服务由`service()`方法处理请求,销毁时调用`destroy()`方法。 2. HttpServlet类:Servlet ...

    servlet

    一、Servlet基础 1. Servlet接口:Servlet的开发需要实现`javax.servlet.Servlet`或其子接口,如`javax.servlet.http.HttpServlet`。`HttpServlet`是Servlet的扩展,专门为处理HTTP协议而设计。 2. Servlet生命...

    servlet基础笔记

    在本文中,我们将深入探讨Servlet的基础知识,包括其基本概念、生命周期、部署以及如何进行实际开发。 一、Servlet基本概念 Servlet是一种Java类,它扩展了服务器的功能,可以处理来自客户端(通常是浏览器)的请求...

    servlet d的使用用必要看看那

    3.1 Servlet基础 1. Servlet的角色:Servlet是一个能够接收客户端(通常是Web浏览器)发送的HTTP请求,并根据请求内容生成相应的HTTP响应的Java类。它能够与服务器端的其他组件,如数据库或Web服务进行交互,从而...

    servlet基础入门教程

    Servlet基础入门教程 Servlet是Java Web开发中的一个关键组件,它是服务器端的程序,用于处理来自客户端(如浏览器)的请求并返回响应。本教程旨在为初学者提供一个全面的Servlet入门指南,涵盖其基本概念、方法及...

    servlet基础教程

    ### servlet基础教程知识点详解 #### 一、Servlet简介与特点 **Servlet** 是服务器端的一种小型程序,主要用于处理客户端发送的HTTP请求,并返回相应的HTTP响应。它与客户端的小程序 **Applet** 相对应,主要区别...

    达内教学课件SERVLET

    一、Servlet基础 1. Servlet生命周期:Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。每个阶段都有相应的回调方法,如`init()`、`service()`、`destroy()`。 2. Servlet配置:在`web.xml`中通过`&lt;servlet...

Global site tag (gtag.js) - Google Analytics