javaweb开发之servlet初始

servlet概述

  1. Servlet是sun公司提供的一门用于开发动态web资源的技术。
  2. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),须要完成如下2个步骤:html

    (1)编写一个Java类,实现servlet接口。
    (2)把开发好的Java类部署到web服务器中。
    (3)按照一种约定俗成的称呼习惯,一般咱们也把实现了servlet接口的java程序,称之为Servlet
  3. servlet运行过程:java

    (1)Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
          ①Web服务器首先检查是否已经装载并建立了该Servlet的实例对象。若是是,则直接执行第④步,不然,执行第②步。
          ②装载并建立该Servlet的一个实例对象。
          ③调用Servlet实例对象的init()方法。
          ④建立一个用于封装HTTP请求消息的HttpServletRequest对象和一个表明HTTP响应消息的HttpServletResponse对象,而后调用Servlet的service()方法并将请求和响应对象做为参数传递进去。
          ⑤WEB应用程序被中止或从新启动以前,Servlet引擎将卸载Servlet,并在卸载以前调用Servlet的destroy()方法。

IDEA建立第一个servlet程序

  1. 选中本身的project,打开Project Structure界面》》选中Libraries》》点击"+"并选择java》》选择并选中本身的tomcat/lib/servlet-api.jar》》Apply》》OK
    图片描述
  2. 经过idea建立servlet,选中项目的src目录,右键选择new
    图片描述
  3. 建立一个servlet,命名为testServlet
  4. 建立成功后testServlet.java文件中有一行关键的代码:web

    @WebServlet(name = "TestServlet")
    备注:能够加上具体的urlPattern参数来定义servlet的具体的请求的URL,以下
       @WebServlet(name = "TestServlet",urlPatterns = "/test")
  5. 示例代码:

    clipboard.png

示例代码分享:

  1. 关于servlet之http请求的request与response对象:api

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Enumeration;
    import java.util.Arrays;
    
    @WebServlet(name = "testServlet",urlPatterns = "/test")
    public class testServlet extends HttpServlet {
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
       }
    
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           //请求头,请求行,请求体
           System.out.println("请求行:");
           System.out.println("url:"+request.getRequestURL());
           System.out.println("uri"+request.getRequestURI());
           System.out.println("methord:"+request.getMethod());
           System.out.println("querystring:"+request.getQueryString());
           System.out.println("addr:"+request.getRemoteAddr());
           System.out.println("host:"+request.getRemoteHost());
           System.out.println("--------------------");
           System.out.println("请求头:");
           Enumeration<String> headerNames = request.getHeaderNames();
           while(headerNames.hasMoreElements()){
               String key = headerNames.nextElement();
               String value = request.getHeader(key);
               System.out.println(key+"="+value);
           }
           System.out.println("--------------------");
           System.out.println("请求体:");
           Enumeration<String> params = request.getParameterNames();
           while (params.hasMoreElements()){
               String key = params.nextElement();
               //接收的参数中通常有中文,注意编码
               String value = request.getParameter(key);
               value = new String(value.getBytes("iso-8859-1"),"UTF-8");
               System.out.println(key+"="+value);
           }
           System.out.println("--------------------");
           //开始response
           //1.二进制流方式输出
           response.setContentType("text/html;charset=UTF-8");//必定要作编码的设置,不然浏览器可能输出乱码
           //response.getOutputStream().write("中国".getBytes("UTF-8"));
           //2.字符流方式输出
           response.getWriter().write("字符流");
       }
    
    
    }
相关文章
相关标签/搜索