第一个Servlet程序及分析
第一个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程序及分析的更多相关文章
- 动手学servlet(一) 第一个servlet程序
1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...
- 【转】MyEclipse第一个Servlet程序
转自:http://blog.csdn.net/wangdingqiaoit/article/details/7674367 前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统 ...
- 配置一个servlet程序
<!-- 配置一个servlet程序 --> <servlet> <!-- servlet的内部名称 ,可以自定义--> <servlet-name>H ...
- MyEclipse第一个Servlet程序 --解决Win7系统下MyEclipse与Tomcat连接问题
前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统下运行自己的第一个Servlet程序,因为有时候配置不当或系统原因可能会运行不成功,这给初学者带来了一定烦恼,我也是为此烦恼过 ...
- 创建第一个servlet程序--HelloServlet
这篇文章是用来纪念我第一次创建一个Servlet程序,步骤我会写得详细点,也可以参考一下,后续我会将SpringMVC 跟ssh的搭建分别更新(ps:不忙的话我会更新) 工具:java jdk 1.6 ...
- Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中
以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...
- servlet(1) - 手写第一个servlet程序 - 小易Java笔记
声明:如tomcat的安装目录为D:\Java\tomcat6,下面要根据tomcat的安装目录而定 1. 建立程序的文件结构 ==>找到tomcat的安装目录,在webapps目录下新建一个名 ...
- Servlet快速入门:第一个Servlet程序
Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口.用于处理客户端发来的请求并作出响应.通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息 ...
- Servlet_001 我的第一个servlet程序
今天开启servlet学习 一.第一个Servlet程序 首先写我们的第一个servlet程序 第一步:新建我们的servlet程序(Web Project),命名为Servlet_001 第二步 : ...
随机推荐
- Chapter 1 First Sight——4
Charlie gave me an awkward, one-armed hug when I stumbled my way off the plane. 当我让我蹒跚的从飞机上下来,查理斯单手给 ...
- Android网络开发之OkHttp--基本用法GET
1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...
- springMVC 多方法controller
1. 新建web project 2. 加入jar包 3. 写web.xml <?xml version="1.0" encoding="UTF-8"?& ...
- [Unity Shader]ShaderForge制作Shader
什么是ShaderForge ShaderForge的目标是推动统一的视觉质量提升到了新的高度, 给你自由的材质创建在一个视觉和直观的方式——不需要代码! ShaderForge的特性 •实时着色器预 ...
- 使用USBASP给Arduino烧写bootloader教程
源:使用UsbAsp给UNO烧写bootloader ATMEGA16U2.ATMEGA328P固件烧写教程 arduino板由于操作不发导致固件损坏,或者想更新固件怎么办?今天给大家介绍一下如何使用 ...
- arduino pro mini不能下载
刚毕业时就知道arduino,但当时崇拜技术极致,喜欢把单片机的性能用到尽,觉得操作寄存器运行效率高,对arduino 这种高效模式贬为投机取巧,不过其中也一直对arduino 有关注. 随着芯片技术 ...
- EHCache分布式缓存集群环境配置
EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms.同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群 ...
- FZU 2087 统计树边
这题第一直觉就是和CF第三次教育场的E题是一样的, http://codeforces.com/contest/609/problem/E 然后直接拉过来代码改了改,提交返回MLE.FZU内存开的小, ...
- iOS 添加手机密码、指纹进行安全验证
为APP添加安全验证 1.导入头文件 #import <LocalAuthentication/LocalAuthentication.h> 2.添加手机密码验证 //创建安全验证对象 L ...
- sqlserver 笔记:常用字符串函数
select tid,tid+ coalesce(tid0,'101') from article where id=1 ---如果tid为null 则 返回101 select LEN('你 ...