• 第一个Servlet程序及分析


    第一个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

  • 相关阅读:
    js中取整数的方法
    js中原型和原型链
    js中获取class封装
    Cocos2dx打包成apk包时在手机上闪退
    计算两个日期间相差的天数
    Stealing a Cake [函数方程符合凸性 三分]
    插件式架构设计(转)
    转:Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数
    后台web请求代码(含https,json提交)
    sitecore 缓存管理器
  • 原文地址:https://www.cnblogs.com/liuzhongfeng/p/6105255.html
Copyright © 2020-2023  润新知