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的常用方法

 import javax.servlet.*;
import java.io.IOException; /**
* Created by Administrator on 2015/6/2.
*/ /*
*查看Servlet接口中的方法
*/
public class AServlet implements Servlet { @Override
public void destroy() {
System.out.println("destroy()....");
} @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig()....");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo()....");
return null;
} @Override
public void init(ServletConfig servletConfig) throws ServletException{
System.out.println("init()....");
} @Override
public void service(ServletRequest request,ServletResponse response)
throws ServletException,IOException {
System.out.println("service()....");
}
}

注意:Servlet的生命周期方法

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

配置<servlet>

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

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"> <servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>AServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>yyy</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>yyy</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
</web-app>

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

 <init-param>
<param-name>message</param-name>
<param-value>Welcome to FirstServlet</param-value>
</init-param>
<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

JavaWeb学习总结第四篇--Servlet开发的更多相关文章

  1. javaweb学习总结二十二(servlet开发中常见的问题汇总)

    一:web应用的映射问题 通常我们从别人那里拷贝来的代码,自己会修改应用的名称,但是web映射的访问路径并没有修改,还是原来的映射. 解决方法: 工程右键--properties--myeclipse ...

  2. RabbitMQ学习总结 第四篇:发布/订阅 Publish/Subscribe

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  3. JavaWeb学习总结(四):Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  4. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  5. JavaWeb学习总结第三篇--走进JSP页面元素

    JavaWeb学习(三)—走进JSP页面元素 JSP:Java Server Pages,译为Java服务器页面.其脚本采用Java语言,继承了Java所有优点.JSP元素可以分为指令元素.脚本元素和 ...

  6. JavaWeb学习笔记(三)—— Servlet

    一.Servlet概述 1.1 什么是Servlet Servlet是是sun公司提供一套规范(接口),是JavaWeb的三大组件之一(Servlet.Filter.Listener),它属于动态资源 ...

  7. Egret入门学习日记 --- 第四篇

    第四篇(学习篇) 好了,今天继续把昨天的问题解决了. 今天见鬼了. 现在界面又出来了.唯一我动过的地方,应该就是这里: 是的,我点了一下刷新.之后,不管我怎么创建新的EXML文件,放在src目录,还是 ...

  8. javaweb回顾第四篇Servlet异常处理

    前言:很多网站为了给用户很好的用户体验性,都会提供比较友好的异常界面,现在我们在来回顾一下Servlet中如何进行异常处理的. 1:声明式异常处理 什么是声明式:就是在web.xml中声明对各种异常的 ...

  9. SpringBoot之旅第四篇-web开发

    一.引言 有了自动配置,springboot使web开发变得简单,这个在springboot之旅中的第一篇中就有体现,实际的开发中当然不会这么简单,很多时候我们都需要自己去定制一些东西.web开发的东 ...

随机推荐

  1. [MySQL] Group Commit理解

    简单的方法理解MySQL Group Commit原理 一个摆渡将乘客从A点传输到B点 MySQL 5.0 行为 在MySQL 5.0中,摆渡会在A点按顺序搭载乘客,并且传送到B点.A点和B点的来回行 ...

  2. javascript实现复选框的全选全不选

    通过复选框的id获取到复选框 元素 对复选框绑定点击事件 每个checkbox都设置相同的name checkOne 通过得到的元素获取checkbox的状态 当点击全选全不选checkbox时,检查 ...

  3. Elasticsearch搜索结果返回不一致问题

    一.背景 这周在使用Elasticsearch搜索的时候遇到一个,对于同一个搜索请求,会出现top50返回结果和排序不一致的问题.那么为什么会出现这样的问题? 后来通过百度和google,发现这是因为 ...

  4. 363. Max Sum of Rectangle No Larger Than K

    /* * 363. Max Sum of Rectangle No Larger Than K * 2016-7-15 by Mingyang */ public int maxSumSubmatri ...

  5. 全面了解Nginx主要应用场景

    http://www.raye.wang/2017/02/24/quan-mian-liao-jie-nginxdao-di-neng-zuo-shi-yao/

  6. php数据库操作代码

    数据库名为reg,表名为member,字段名为username,password,regdate <?php $link=@mysql_connect("localhost" ...

  7. EasyMvc入门教程-高级控件说明(17)对话框控件

    上一节我们说到的信息框比较简单,如果我们想简单实现用户用户交互,比如常用的锁屏界面,应该如何实现呢?首先看效果: 当用户输入"mxd",后,界面显示如下: 以上效果的实现代码为: ...

  8. openssl之EVP系列之12---EVP_Seal系列函数介绍

    openssl之EVP系列之12---EVP_Seal系列函数介绍     ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成     (作者:Dra ...

  9. ionic 调试 "死亡白屏"

    死亡白屏(White Screen of Death) 我想“死亡白屏”应该是不需要解释的,开发过ionic app的童鞋应该都有遇到过,这里解释以防读者没有听说过:“可能在浏览器中调试时一切正常,当 ...

  10. vue 父子通信过程

    1.概述 每个 Vue 实例都实现了事件接口,即: 使用 $on(eventName) 监听事件 使用 $emit(eventName, optionalPayload) 触发事件 2.示例一(未传递 ...