前言:

  JavaSE如何跨度到JavaEE?原本java语言只是专门用于application桌面小应用程序的开发,但自从其追随CGI进入服务器端的开发之后便一发不可收拾。先是Servlet1.0,再是2.0,然后又3.0 ... 之后,各种基于Web的框架发展迅猛,Spring,Struts,Struts2等等。从事Java的人不少都是从jsp开始,甚至从框架开始,但却不知Servlet为何物?本系列将专门讲述Java Web的始祖---“Servlet”(会讲述JSP相关内容,但其实JSP也是Servlet)。

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

Part1:Servlet主要API介绍:

  讲述Servlet,让我们从javax.servlet,javax.servlet.http两个package中的接口和类开始。请看下面的UML简图:

图1

  图2

  其中,“Servlet”接口是任何Servlet必须直接或间接实现的接口!其常见的有init(),service(),destroy()三个方法,还有不是很常用的方法getServletInfo()和getServletConfig()。一般而言,service()是我们自定义Servlet是执行重点的业务操作,而init()和destroy()一个发生在Servlet初始时调用,一个发生在Servlet销毁时调用!

  request,response可以说是Web应用中最常见的2个变量。通过追根溯源我们从上面的UML可以知道它们源自ServletRequest和ServletResponse接口。只不过很多时候我们见到的request已经被不少中间类经过不只一层的包装。比如:HttpServletRequest,或者struts中的Map<String,Object> request等。

  作为入门篇,我们暂时不往内深究,就此打住。下面通过一个小实例,让我们熟悉一下实现一个基本的Servlet需要哪些步骤。

  • Step1:

  新建"Web Project",必须含有JavaEE相关jar包;

  • Step2:

  新建Java类,并实现Servlet接口或者继承GenericServlet类。

  重写service()方法,打印html语句。

  • Step3:

  通过注解方式部署或者通过部署文件“web.xml”部署。

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

Part2: 实例app01a

方式一:实现Servlet接口

Code:

package app01a;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet; //@WebServlet(name = "myServlet", urlPatterns = { "/My", "/Your" })
public class MyServlet implements Servlet { @Override
public void destroy() {
System.out.println("--destroy--");
} @Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
} @Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub } @Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException { PrintWriter out = response.getWriter();
out.print("<html><head></head><body>" + "Hello servlet! "
+ "</body></html>"); } }

部署文件:web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>app01a.MyServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/My</url-pattern>
</servlet-mapping>
</web-app>

项目文件布局:

测试结果:

方式二:继承GenericServlet类

Code

 package app01a;

 import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet; @WebServlet(name="MyServletWithGeneric",urlPatterns={"/MyGeneric"})
public class MyServletWithGeneric extends GenericServlet { @Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException { PrintWriter out = response.getWriter();
out.print("<html><head></head><body>" + "Servlet extends GenericServlet! "
+ "</body></html>"); } }

测试结果:

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

注意:实现本文例子的前提是已经安装好tomcat!若没有tomcat环境,下载地址 http://tomcat.apache.org

Servlet和JSP学习指导与实践(一):Servlet API初探的更多相关文章

  1. Servlet和JSP学习指导与实践(三):JSP助阵

    前言: JSP(Java Server Page)虽然作为一门服务端的语言,但它并没有创新新的语言标准.有些人一接触jsp之后发现易学易懂.实际上,jsp的内部原理仍然是基于Servlet,它是Ser ...

  2. Servlet和JSP学习指导与实践(二):Session追踪

    前言: web应用中经常需要对某些有用的信息进行存储或者附加一些信息.本文主要介绍session,即“会话”跟踪的几种不同方式~ ----------------------------4种管理ses ...

  3. Servlet和JSP学习总结

    目录 Jsp会被编译成servlet,在页面被第一次访问的时候 Jsp中可以在html页面中嵌入java代码或者引入jsp标签 可以在html中引入自定义标签 Web工程的目录结构 Jsp的注释 Js ...

  4. JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍

    MVC模式 在讲解Servlet前,先介绍一下MVC模式. M:model 模型,相当于数据层,用于存放数据,如一个Java中的一个bean类 V:view 视图,相当于页面层,用于显示数据,如一个网 ...

  5. 《Servlet和jsp学习指南》 笔记1

    chapter 1 Servlet 4个java 包: 对于每一个http请求,Servlet请求都会创建一个ServletRequest实例,并将它传给Servlet的service方法.Servl ...

  6. 《Servlet和jsp学习指南》 笔记2

    chapter 13 请求和响应的装饰 初步了解Decorator模式: 在不修改一个对象的类的源码的情况下,装饰这个对象的行为. chapter 14 异步处理 异步Servlet和Filter,只 ...

  7. JSP源码、改写Servlet为JSP、查看转译成为Servlet的文件、JSP字符编码设置

    概述 在Servlet中编写HTML太麻烦了,应该使用JSP.JSP中可以直接编写HTML,使用指示.声明.脚本(scriptlet)等元素来堆砌各种功能,但JSP最后还是会被容器转译为Servlet ...

  8. Servlet和JSP读书笔记(二)

    一. GenericServlet 1. 前面写的 Servlet和JSP学习笔记(一) 中的实例都是通过实现Servlet接口编写的,这样存在的问题就是:你必须实现Servlet中的所有方法,而不管 ...

  9. JSP 学习笔记1

    JSP 学习笔记   JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例--JSP页面有系统编译成Servlet,Servlet再负责响应用户请求. 1.JSP注释 < ...

随机推荐

  1. Android Activity生命周期与启动模式

    Activity的完整生命周期如下图: Activity的加载模式有四种: standard: 标准模式,默认的加载模式,每次通过这种模式启动目标Acitivity,都创建一个新的实例,并将该Acti ...

  2. 错误解决:error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

    执行以下代码,生成唯一的UID $fp = popen("/xxx/bin/tools/uuidgen system", "r");// $uid = frea ...

  3. 使用 Async 和 Await 的异步编程(C# 和 Visual Basic)[msdn.microsoft.com]

    看到Microsoft官方一篇关于异步编程的文章,感觉挺好,不敢独享,分享给大家. 原文地址:https://msdn.microsoft.com/zh-cn/library/hh191443.asp ...

  4. Linux平台卸载MySQL总结

    如何在Linux下卸载MySQL数据库呢? 下面总结.整理了一下Linux平台下卸载MySQL的方法. MySQL的安装主要有三种方式:二进制包安装(Using Generic Binaries).R ...

  5. ORACLE Linux以及 Unbreakable Enterprise Kernel

    Oracle Linux,全称为Oracle Enterprise Linux,简称OEL,Linux发行版本之一.Oracle公司在2006年初发布第一个版本,以对Oracle软件和硬件支持较好见长 ...

  6. 如何转换SQL Server 2008数据库到SQL Server 2005

        背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...

  7. Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain

    一服务器上的数据库全部被置于紧急模式(EMERGENCY),在错误日志里面能看到大量下面的错误 Failed to create AppDomain "YourSQLDba.dbo[runt ...

  8. SQLServer中修改字段为空

    ALTER 表名 table1 ALTER COLUMN [字段] 类型 NULL; 例如: ) COLLATE Chinese_PRC_CI_AS NULL;

  9. ARM汇编程序结构

    ARM汇编程序结构 一个ARM程序可以被划分为多个代码段和数据段,在汇编的时候这些段会被形成一个可执行文件 .text ;正文段,包含程序的指令代码 .data ;数据段,包含固定的数据,如常量,字符 ...

  10. WPF -Enum的三种绑定方法

    一.使用ObjectDataProvider <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentat ...