一、前言

  Java Servlet是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet实际上就是按照Servlet规范编写一个Java类。

  Servlet运行需要一个运行环境,即需要一个Servlet容器,这里我们使用Tomacat。Tomcat作为一个Web服务器,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器。

二、Tomcat的安装与配置

  安装Tomcat之前要先下载JDK并配置好环境变量,然后访问http://tomcat.apache.org/,下载最新版Tomcat压缩包,解压缩后目录结构为如下图所示

  

  进入目录/bin,双击startup.bat文件,即可启动Tomcat。启动成功后,在浏览器中访问http://localhost:8080/,出现如下页面。

  

三、使用Eclipse开发Servlet

  在使用Eclipse开发Servlet之前,要先将Tomcat源文件导入Eclipse中,步骤如下:

  在Eclipse界面,点击窗口菜单->首选项,选择服务器->运行时环境,再点击添加按钮,将下载的Tomcat源文件导入Eclipse中去。

  

  

  导入后,将Eclipse切换到JavaEE模式,新建一个动态Web工程,整个工程的目录如下:

  

  实现一个helloWord例子。

  方式一:通过实现Servlet接口来编写Servlet类,需要实现接口中定义的5个方法,代码如下:

 package day_052102;
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;
/*
这里通过实现Servlet接口来编写一个简单的Servlet
*/
public class ServletDemo implements Servlet
{
public void init(ServletConfig config) throws ServletException
{
}
public ServletConfig getServletConfig()
{ return null;
}
public String getServletInfo()
{
return null;
}
public void destroy()
{
}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException
{
PrintWriter out=res.getWriter();
out.print("hello World!");
out.close();
}
}

  然后进行web.xml的配置,代码如下:

<servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>day_052102.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/ServletDemo</url-pattern>
</servlet-mapping>

  点击运行按钮,启动tomacat服务器,然后在浏览器中输入http://localhost:8080/day_052102/ServletDemo,即可进行实现页面显示hello World的示例。结果如下。

  

  方式二:继承抽象类GenericServlet,该类定义了一个通用的Servlet。

public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable

  代码示例实现hellWord如下:

public class GenericServletDemo extends GenericServlet
{ @Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException
{
PrintWriter out=res.getWriter();
out.println("hello World!");
out.close(); } }

  方式三:通过继承抽象的HttpServlet类,此类继承于GenericServlet类。

  PS:HttpServlet类中没有抽象的方法。这个类重写了service方法,它会根据请求的方式调用doGet或者doGet方法,部分源码如下:

protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String method = req.getMethod();
if (method.equals(METHOD_GET)) //当请求方式为GET时,调用doGet方法
{
long lastModified = getLastModified(req);
if (lastModified == -1)
{
// servlet doesn't support if-modified-since, no reason
// to go through further expensive logic
doGet(req, resp);
}
else
{
long ifModifiedSince;
try
{
ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
}
catch (IllegalArgumentException iae)
{
// Invalid date header - proceed as if none was set
ifModifiedSince = -1;
}
if (ifModifiedSince < (lastModified / 1000 * 1000))
{
// If the servlet mod time is later, call doGet()
// Round down to the nearest second for a proper compare
// A ifModifiedSince of -1 will always be less
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
}
else
{
resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
}
}
}

  如果在自己写的类中重写了service方法,那么Servlet容器就会把请求交给你重写的service方法处理。

public class HttpServletDemo extends HttpServlet
{
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
PrintWriter out=resp.getWriter();
out.println("hello!");
out.close();
}
}

Servlet基本用法(一)基本配置的更多相关文章

  1. 初学servlet之使用web.xml配置

    先写两个servlet,之后展示web.xml配置 package app01c;import java.io.IOException;import java.io.PrintWriter;impor ...

  2. 【Javaweb】Servlet的xml和注解配置

    1.xml <%@ page language="java" contentType="text/html;" %> <!DOCTYPE ht ...

  3. Servlet+JSP 对外访问路径配置

    servlet类似 servlet配置为: <servlet>    <servlet-name>Demo01_OutWrite</servlet-name>    ...

  4. 【转】Servlet与web.xml的配置

    Web.xml常用元素<web-app><display-name></display-name>定义了WEB应用的名字<description>< ...

  5. Servlet中Web.xml的配置详解

    1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用 ...

  6. Java Servlet的配置文件web.xml配置内容和具体含义

    文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...

  7. Servlet程序开发--取得初始化配置信息

    代码: 两个初始化init方法,一起出现的话,有参的才起作用 package org.lxh.servletdemo ; import java.io.* ; import javax.servlet ...

  8. Servlet 3.0 使用注解配置URl提示404错误

    我的环境是  Eclipse oxygen + Servlet 3.0 因为3.0已经开始使用注解了 之前我都是配置listenner 还有Servlet mapping  在 web.xml 中 就 ...

  9. Servlet生命周期和注解配置

    Servlet的生命周期和注解配置问题 /* Servlet? 运行在服务器上的小程序 定义浏览器访问到Tomcat的规则 一.生命周期? 1.创建 2.提供服务 3.被销毁 二.servlet3.0 ...

随机推荐

  1. Oracle system表空间满的暂定解决方法

    Oracle system表空间满的暂定解决方法 数据库用的是Oracle Express 10.2版本的.利用Oracle Text做全文检索应用,创建用户yxl时没有初始化默认表空间,在系统开发过 ...

  2. 成功安装vscode中go的相关插件

    让你成功安装vscode中go的相关插件 注意:该演示环境是windows环境,linux和mac环境操作思路一样 vscode中有很多go的相关插件,非常好用如下:gocodegopkgsgo-ou ...

  3. 第三百二十四节,web爬虫,scrapy模块介绍与使用

    第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...

  4. VUE系列三:实现跨域请求(fetch/axios/proxytable)

    1. 在 config/index.js 配置文件中配置proxyTable 'use strict' // Template version: 1.3.1 // see http://vuejs-t ...

  5. 图解DHCP的4步租约过程

    图解DHCP的4步租约过程   DHCP租约过程就是DHCP客户机动态获取IP地址的过程. DHCP租约过程分为4步: ①客户机请求IP(客户机发DHCPDISCOVER广播包): ②server响应 ...

  6. 在Android平台下搭建PhoneGap开发环境--用HTML5开发游戏

    一.在Android平台下搭建PhoneGap开发环境具体怎么搭建我这里就不详细说了,如有需要我后面再讲 . PhoneGap 官方地址有详细说明:http://www.phonegap.com. 在 ...

  7. cordova ios and ios8

    ios8发布后,一些用cordova编写的app会碰到问题,总的来说,cordova官方称是完全支持ios8的,而且由于ios8推出的WKWebView存在问题并没能很好的解决(看原文),仍旧用了UI ...

  8. 性能分析Linux服务器CPU利用率

    CPU度量 1.  指标范围 1.1  User mode CPU utilization+ System mode CPU utilization 合理值:60-85%,如果在一个多用户系统中us+ ...

  9. MathType让矩阵中的小数以小数点对齐的教程

    用MathType编辑公式时,有很多模板都可以应用,并且这些模板并不是只有一种用途,比如矩阵.矩阵模板可以用来编辑矩阵也可是用来编辑一些需要排列组合的数据等等.在用MathType编辑矩阵时,如果里面 ...

  10. What's new in JDK 8

    (1)http://docs.oracle.com/javase/8/docs/technotes/guides/language/enhancements.html#javase8 (2)https ...