第一个Servlet程序及分析

简介: 第一个Servlet程序: 1 package cc.openhome; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.

第一个Servlet程序:

 1 package cc.openhome;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 /**
13  * Servlet implementation class HelloServlet
14  */
15 @WebServlet("/hello.view")
16 public class HelloServlet extends HttpServlet {
17 
18     /**
19      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
20      */
21     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
22         // TODO Auto-generated method stub
23         response.setContentType("text/html;charst=UTF8");//设置响应内容类型其
24         PrintWriter out=response.getWriter();//取得响应输出对象
25         String name=request.getParameter("name");//获得"请求参数"
26         out.println("<html>");
27         out.println("<head>");
28         out.println("<title>Hello Servlet</title>");
29         out.println("</head>");
30         out.println("<body>");
31         out.println("<h1> Hello! "+name+" !</h1>");
32         out.println("</body>");
33         out.println("</html>");
34         out.close();
35     }
36 
37     /**
38      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
39      */
40     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
41         // TODO Auto-generated method stub
42     }
43 
44 }
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最深层的源码读懂servlet如何实现
64 0
|
6月前
|
前端开发 JavaScript Java
七个步骤, 编写一个 Servlet 的 HelloWorld 程序
七个步骤, 编写一个 Servlet 的 HelloWorld 程序
54 0
|
关系型数据库 MySQL 应用服务中间件
tomcat与servlet程序出现乱码的解决方法(已解决)
tomcat与servlet程序出现乱码的解决方法(已解决)
108 0
|
6月前
|
Java 应用服务中间件 数据库连接
Spring5源码(51)-Servlet知识点回顾以及SpringMVC分析入口
Spring5源码(51)-Servlet知识点回顾以及SpringMVC分析入口
65 0
|
6月前
|
Java 编译器 应用服务中间件
5:Servlet程序-Java Web
5:Servlet程序-Java Web
38 1
|
Java 应用服务中间件
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
2132 0
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
|
小程序 Java 应用服务中间件
动态 WEB 开发核心-Servlet详细分析
动态 WEB 开发核心-Servlet详细分析
52 0
|
Java 应用服务中间件
java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.http不存在 java: 程序包javax.servlet.annotation不存在
java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.http不存在 java: 程序包javax.servlet.annotation不存在
984 0
|
Java 应用服务中间件 Android开发
【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序
【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序
Servlet学习(八):请求转发(两个servlet程序的交互)
Servlet学习(八):请求转发(两个servlet程序的交互)
140 0
Servlet学习(八):请求转发(两个servlet程序的交互)