第一个Servlet程序:

 package cc.openhome;

 import java.io.IOException;
import java.io.PrintWriter; 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 HelloServlet
*/
@WebServlet("/hello.view")
public class HelloServlet extends HttpServlet { /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charst=UTF8");//设置响应内容类型其
PrintWriter out=response.getWriter();//取得响应输出对象
String name=request.getParameter("name");//获得"请求参数"
out.println("<html>");
out.println("<head>");
out.println("<title>Hello Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> Hello! "+name+" !</h1>");
out.println("</body>");
out.println("</html>");
out.close();
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} }

HelloServlet

  范例中继承了HttpServlet,并重新定义了doGet()方法,当浏览器GET方法发送请求时,会调用此方法。

  由于HttpServletResponse对象代表对客户端的响应,因此可以通过setContentType()设置内容类型。告知浏览器,要以text/html解析,采用字符编码是UTF-8。接着再调用getWriter()方法取得代表响应输出的PrintWriter对象,通过PrintWriter的println()方法输出响应的文字。

运行结果:

    

小结:

  1、要编写Servlet类,必须继承HttpServlet类,并重新定义doGet(),doPost()等对应的HTTP请求方法,容器会分别建立代表请求、响应的HttpServletRequest和HttpServletResponse,可以从前者取得所有关于该次请求的相关信息,从后者对客户端进行各种响应。

  2、在Servlet的API定义中,Servlet是一个接口,其中定义了与Servlet生命周期相关的init()、destroy()方法,以及提供服务的service()方法等。GenericServlet实现了Servlet接口,不过它直接将service()标识为abstract,GenericServlet还实现了ServletConfig接口,将容器初始化Servlet调用init()时传入的ServletConfig封装起来。真正在service()方法中定义了HTTP请求基本处理流程是HttpServlet,而doGet()doPost()传入的参数是HttpServletRequest和HttpServletResponse,不是通用的ServletRequest、ServletResponse。

  3、可以使用@WebServlet标注来告知容器哪些Servlet会提供服务以及额外信息,也可以定义在web.xml中。一个Servlet至少会有三个名称,类名称、注册的Servlet名称、URL模式名称。

  4、一个请求的URI实际上是由三部分组成. requestURI = contextPath+servletPath+pathInfo

    requestURI可以通过HttpServletRequest.getRequestURI()得到。如:/FirstServlet/servlet/path.view

    contextPath(环境路径)可以通过HttpServletRequest.getContextPath()得到如:/FirstServlet

    servletPath(servlet路径)可以通过HttpServletRequest.getServletPath()得到如:/servlet

    pathInfo(路径信息)可以可以通过HttpServletRequest.getPathInfo()得到如:/path.view

第一个Servlet程序及分析的更多相关文章

  1. 动手学servlet(一) 第一个servlet程序

    1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...

  2. 【转】MyEclipse第一个Servlet程序

    转自:http://blog.csdn.net/wangdingqiaoit/article/details/7674367 前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统 ...

  3. 配置一个servlet程序

    <!-- 配置一个servlet程序 --> <servlet> <!-- servlet的内部名称 ,可以自定义--> <servlet-name>H ...

  4. MyEclipse第一个Servlet程序 --解决Win7系统下MyEclipse与Tomcat连接问题

    前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统下运行自己的第一个Servlet程序,因为有时候配置不当或系统原因可能会运行不成功,这给初学者带来了一定烦恼,我也是为此烦恼过 ...

  5. 创建第一个servlet程序--HelloServlet

    这篇文章是用来纪念我第一次创建一个Servlet程序,步骤我会写得详细点,也可以参考一下,后续我会将SpringMVC 跟ssh的搭建分别更新(ps:不忙的话我会更新) 工具:java jdk 1.6 ...

  6. Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中

    以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...

  7. servlet(1) - 手写第一个servlet程序 - 小易Java笔记

    声明:如tomcat的安装目录为D:\Java\tomcat6,下面要根据tomcat的安装目录而定 1. 建立程序的文件结构 ==>找到tomcat的安装目录,在webapps目录下新建一个名 ...

  8. Servlet快速入门:第一个Servlet程序

    Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口.用于处理客户端发来的请求并作出响应.通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息 ...

  9. Servlet_001 我的第一个servlet程序

    今天开启servlet学习 一.第一个Servlet程序 首先写我们的第一个servlet程序 第一步:新建我们的servlet程序(Web Project),命名为Servlet_001 第二步 : ...

随机推荐

  1. 填写信息的文章区域text_area

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...

  2. PAT (Advanced Level) 1072. Gas Station (30)

    枚举一下选的位置,每次算一下就可以了. #include<cstdio> #include<cstring> #include<cmath> #include< ...

  3. 谈谈java的BlockingQueue

    http://www.cnblogs.com/archy_yu/archive/2013/04/19/3018479.html 博客园 首页 新随笔 联系 管理 随笔- 92  文章- 0  评论- ...

  4. Android音频系统之AudioFlinger(一)

    1.1 AudioFlinger 在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点.作为Android系统中的音频中枢,它同时也是一个系统服务,启到承上 ...

  5. 关于NIOS ii烧写的几种方式

    1. 方法一:.sof和.elf全部保存在FPGA内,程序加载和运行也是在FPGA内部. 把FPGA的配置文件.sof通过JTAG方式下载(其实是在线运行)进入FPGA本身,此时在NIOS II的界面 ...

  6. Mybatis 示例之 Association - 偶尔记一下 - 博客频道 - CSDN.NET

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  7. VC#2010 视图设计器无法打开 问题的正解

    继上次VC#2010中视图设计器无法打开的问题的讨论后,我感觉每次都重新安装一次安装包未免也太麻烦了,程序员的时间都灰常宝贵. 所以在这次人工智能作业的时候,找到了一个简单的途径: 打开VC#2010 ...

  8. (简单) POJ 3414 Pots,BFS+记录路径。

    Description You are given two pots, having the volume of A and B liters respectively. The following ...

  9. jquery.mustache.js使用

    作者:zccst jquery.mustache是用jQuery做了一层封装,提供了以下几个方法,让模板使用更便捷. 1,添加模板,使用异步的方式 var viewData = { name: 'Jo ...

  10. HDU 4008 Parent and son

    树形DP+LCA+思路.这题可真是有点难度......所以准备详细写一下题解. 题意:给一颗无根树,有Q次询问,每次询问指定一个根节点X,然后让你计算Y节点的儿子和子孙中,编号最小的节点是多少. 我们 ...