zoukankan      html  css  js  c++  java
  • JavaWeb学习总结第四篇--Servlet开发

    Servlet开发

    用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求。服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应。浏览器收到回应,再把回应的内容显示出来。这种请求—响应模式就是典型的Web应用程序访问过程。

    JavaWeb应用程序中所有的请求—响应都是由Servlet完成的。Servlet是JavaWeb的核心程序,所有的网址最终都交给Servlet处理。Servlet并没有main之类的执行方法。当用户访问服务器的时候,Tomcat是通过调用Servlet的某些方法来完成整个处理过程的。

    Servlet是什么

    一个Servlet程序就是一个实现了特殊接口的Java类,它由支持Servlet的Web服务器调用和启动运行。一个Servlet程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息和产生响应内容。

    Servlet程序可以完成普通Java程序所能完成的大多数任务:

    • 获取客户端通过HTML的FORM表单提交的数据和URL后面的参数信息
    • 创建对客户端的响应信息内容
    • 访问服务器端的文件系统
    • 连接数据库并开发基于数据库的应用
    • 调用其它的Java类

    Servlet工作流程

    浏览器提交的请求是遵循HTTP协议的文本。这段文本由服务器也就是Tomcat接收并解析,封装成了HttpServletRequest类型的request对象。所有的HTTP头数据都可以通过request相应的方法查询到。Tomcat同时把输出流封装成为HttpServletResponse类型的response对象,通过设置response对象可以控制输出的内容。在请求—响应的这个过程中,Tomcat把request对象、response对象作为参数,调用Servlet的相应方法,例如doPost(request,response)、doGet(request,response)等。

    Servlet接口

    Servlet是一种实现了javax.servlet.Servlet接口的类。Servlet接口规定了特定的方法来处理特定的请求。Servlet规范是建立在HTTP规范基础上的。HTTP 1.1 规范支持OPTIONS、GET、POST、HEAD、PUT、DELETE、TRACE等7中访问方式,其中最常用的就是GET和POST了。

    GET:表示查询信息,URL中可以附带少量的参数信息,但是URL总长度不能超过255个字符,并且参数会显示在浏览器地址栏。

    POST:表示提交信息,一般用于提交大数据信息或者文件,提交的内容不受长度限制,并且不会显示在浏览器地址栏中。

     FirstServlet

    在了解了Servlet基础知识之后,我们可以试着编写Servlet程序了。首先我们得认识一下Servlet的常用方法

     1 import javax.servlet.*;
     2 import java.io.IOException;
     3 
     4 /**
     5  * Created by Administrator on 2015/6/2.
     6  */
     7 
     8 /*
     9  *查看Servlet接口中的方法
    10  */
    11 public class AServlet implements Servlet {
    12 
    13     @Override
    14     public void destroy() {
    15         System.out.println("destroy()....");
    16     }
    17 
    18     @Override
    19     public ServletConfig getServletConfig() {
    20         System.out.println("getServletConfig()....");
    21         return null;
    22     }
    23 
    24     @Override
    25     public String getServletInfo() {
    26         System.out.println("getServletInfo()....");
    27         return null;
    28     }
    29 
    30     @Override
    31     public void init(ServletConfig servletConfig) throws ServletException{
    32         System.out.println("init()....");
    33     }
    34 
    35     @Override
    36     public void service(ServletRequest request,ServletResponse response)
    37             throws ServletException,IOException {
    38         System.out.println("service()....");
    39     }
    40 }

    注意Servlet的生命周期方法

    接下来,我们写一个简单的Servlet程序,并试着编译运行。
     1 import javax.servlet.ServletException;
     2 import javax.servlet.http.HttpServlet;
     3 import javax.servlet.http.HttpServletRequest;
     4 import javax.servlet.http.HttpServletResponse;
     5 import java.io.IOException;
     6 import java.io.PrintWriter;
     7 
     8 /**
     9  * Created by Administrator on 2015/6/2.
    10  */
    11 public class FirstServlet extends HttpServlet{
    12 
    13     public void service(HttpServletRequest request,HttpServletResponse response)
    14         throws ServletException,IOException{
    15 
    16         PrintWriter out = response.getWriter();
    17         out.println("<html>");
    18         out.println("<font size=30 color=red>www.baidu.com</font><br/>");
    19         out.println("<marquee>" + new java.util.Date() + "</marquee>");
    20         out.println("</html>");
    21     }
    22 }

    配置<servlet>

    我们只有servlet类文件还不行,因为要让Web服务器知道浏览器怎么访问这个Servlet,也就是说需要配置Servlet的类文件与访问方式。这个配置在Web应用程序的描述文件web.xml里完成,配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     5          version="3.1">
     6 
     7     <servlet>
     8         <servlet-name>xxx</servlet-name>
     9         <servlet-class>AServlet</servlet-class>
    10     </servlet>
    11 
    12     <servlet-mapping>
    13         <servlet-name>xxx</servlet-name>
    14         <url-pattern>/HelloServlet</url-pattern>
    15     </servlet-mapping>
    16 
    17     <servlet>
    18         <servlet-name>yyy</servlet-name>
    19         <servlet-class>FirstServlet</servlet-class>
    20     </servlet>
    21 
    22     <servlet-mapping>
    23         <servlet-name>yyy</servlet-name>
    24         <url-pattern>/FirstServlet</url-pattern>
    25     </servlet-mapping>
    26 </web-app>

    <servlet>和</servlet>分别为Servlet配置的开始标签和结束标签。中间的部分就是一个Servlet的配置信息。其中<servlet-name>与<servlet-class>属性分别为Servlet的名称和类名,都是必须配置的。<servlet-name>可以是任意的字符串,但是必须保证该名称在web.xml里唯一。

    1 <init-param>
    2        <param-name>message</param-name>
    3        <param-value>Welcome to FirstServlet</param-value>
    4 </init-param>
    5 <load-on-startup>1</load-on-startup>

    使用<init-param>标签可以配置一个初始化参数,包括一个参数名称和一个参数值。一个Servlet可以配置多个初始化参数。Servlet中可以使用方法getServletContext().getInitParam(String paramName)来取得配置的初始化参数值。

    标签<load-on-startup>配置该Servlet的加载方式,可选值为0和1,。如果配置为1,Tomcat在启动的时候就加载该Servlet,否则,Tomcat会在第一次请求该Servlet的时候才加载。

    编译运行Servlet

  • 相关阅读:
    C语言I作业12—学期总结
    # 第一周作业
    C语言Ⅰ博客作业11
    C语言Ⅰ博客作业10
    C语言Ⅰ博客作业09
    C语言Ⅰ博客作业08
    C语言||作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
  • 原文地址:https://www.cnblogs.com/BaiYiShaoNian/p/4548118.html
Copyright © 2011-2022 走看看