Servlet和JSP学习指导与实践(一)

前言:

  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

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7
 8     <servlet>
 9         <servlet-name>myServlet</servlet-name>
10         <servlet-class>app01a.MyServlet</servlet-class>
11     </servlet>
12
13     <servlet-mapping>
14         <servlet-name>myServlet</servlet-name>
15         <url-pattern>/My</url-pattern>
16     </servlet-mapping>
17 </web-app>

项目文件布局:

测试结果:

方式二:继承GenericServlet类

Code

 1 package app01a;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5
 6 import javax.servlet.GenericServlet;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10 import javax.servlet.annotation.WebServlet;
11
12 @WebServlet(name="MyServletWithGeneric",urlPatterns={"/MyGeneric"})
13 public class MyServletWithGeneric extends GenericServlet {
14
15     @Override
16     public void service(ServletRequest request, ServletResponse response)
17             throws ServletException, IOException {
18
19         PrintWriter out = response.getWriter();
20         out.print("<html><head></head><body>" + "Servlet extends GenericServlet! "
21                  + "</body></html>");
22
23     }
24
25 }

测试结果:

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

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

时间: 2024-10-13 10:41:07

Servlet和JSP学习指导与实践(一)的相关文章

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

前言: JSP(Java Server Page)虽然作为一门服务端的语言,但它并没有创新新的语言标准.有些人一接触jsp之后发现易学易懂.实际上,jsp的内部原理仍然是基于Servlet,它是Servlet的补充,而并不是要取代Servlet.本文对JSP的一些概念及基础内容进行了不详尽的总结,希望感兴趣的博友凑合着看~ ------------- Part I: jsp指令,脚本元素,动作 1.常见指令 (1)page指令: <%@ page language="java"

servlet和jsp学习指南(一)servlet

近期接触了些纯servlet与jsp的编程项目,顺便把<servlet和jsp学习指南>这本书拿出来看看,感悟良多.记下随笔,以便会议. 要编写一个servlet首先要实现Servlet或者继承HttpServlet package test.com.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet

Servlet和JSP学习总结

目录 Jsp会被编译成servlet,在页面被第一次访问的时候 Jsp中可以在html页面中嵌入java代码或者引入jsp标签 可以在html中引入自定义标签 Web工程的目录结构 Jsp的注释 Jsp声明部分 Jsp输出表达式 Jsp脚本 Jsp的三个编译命令 B/S结构 九大内置对象 Servlet的缺点 servlet的编写步骤 Servlet与Jsp的区别 Servlet与Jsp的生命周期 自定义标签 Filter的使用 Listener的使用 1. Jsp会被编译成servlet,在页

servlet和jsp学习指南(三)监听器

监听器是为了能够在servlet/jsp应用程序中进行事件驱动编程(Event-Driven Programming),所有事件类源自java.util.Event,并且监听器在以下三个不同级别中均可用:ServletContext.HttpSession及ServletRequest. 我选择性的学习ServletContextListener.主要是其他的在项目中没有看到使用.有用到再来补充学习. javax.servlet.ServletContextListener.这是对Servlet

servlet和jsp学习指南(四)jsp页面

jsp其实就是servlet,当访问这个页面时,服务器会先把jsp页面编译为一个xxx_jsp.class和xxx_jsp.java,存在work中 使用eclipse的同学可以在你的eclipse的workspace的workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work下找到 举例:一个最简单hello页面 访问后可得到2个文件 <%@ page language="java" contentTyp

servlet和jsp学习指南(五)EL表达式

EL表达式的具体用法我暂时先不说了 这里就简单说说注意点 package test.com.servlet.jstl; public class Book { private String isbn; private String title; private Double price; public Book(String isbn,String title,double price) { this.isbn = isbn; this.title = title; this.price = p

servlet和jsp学习指南(二)Session管理

Web语言HTTP是无状态的,默认情况下,Web服务器不知道一个HTTP请求是来自初次用户,还是来自之前已经访问过的用户.但正常应用程序需要记住用户身份的,换句说,它必须能够管理用户session. 用于保持状态的常用方法有4种:网址重写.隐藏域.cookie已经HttpSession. (一)网址重写 网址重写是一种Session追踪技术,需要将一个或多个token作为一个查询字符串添加到一个URL钟.注意URL和token之间要用一个问号(?)隔开,两个token之间则是用一个&符号隔开.

Servlet&JSP学习笔记

Servlet&JSP学习笔记 */--> Servlet&JSP学习笔记 Table of Contents 1 Web容器 2 内置对象 2.1 内置对象分类 2.1.1 out 2.1.2 request 2.1.3 application 2.1.4 response 2.1.5 session 2.1.6 其他 3 JavaBean 3.1 JSP动作元素 3.2 javabean的四个作用於范围 4 JSP状态管理 4.1 Cookie 4.2 include 指令与动作

Servlet&amp;Jsp学习笔记归纳图(一)

转载请注明出处!!!版权必究!! 以下是Servlet&Jsp的学笔记归纳图,详细内容以及相关代码会在后面整理完成 后给出 使用的是思维导图工具:MindManager 6 最新版本是2013,有兴趣的自己百度下载,功能更多,安装有点麻烦 以下提供版本6绿色版免安装版下载: http://pan.baidu.com/s/1jGqlnXc 本节思维导图文件下载:http://pan.baidu.com/s/1eQGbMSU Servlet&Jsp学习笔记归纳图(一),布布扣,bubuko.c