Servlet详解

java 分享会

分享人:深圳-常雷雷

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

Servlet(Server Applet)是Java Servlet的简称,一般称为小服务程序或服务连接器, 是一个用Java编写的服务器端程序。

主要功能在于处理请求和发送响应、交互式地浏览和修改数据,生成动态Web内容, 甚至可以说Servlet是为了解决实现动态页面而衍生的程序。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。

2.知识剖析

Servlet的四个主要对象

ServletConfig对象

ServletContext对象

request对象

response对象

ServletConfig:

代表当前Servlet在web.xml中的配置信息(用的不多)

String getServletName()

-- 获取当前Servlet在web.xml中配置的名字

String getInitParameter(String name)

-- 获取当前Servlet指定名称的初始化参数的值

Enumeration getInitParameterNames()

-- 获取当前Servlet所有初始化参数的名字组成的枚举

ServletContext getServletContext()

-- 获取代表当前web应用的ServletContext对象

Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。

request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。 同时也会向服务器或者浏览器定义自己需要的返回的东西。

Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。

Response对象只提供了一个数据集合cookie,它用于在客户端写入cookie值。若指定的cookie不存在,则创建它。 若存在,则将自动进行更新。结果返回给客户端浏览器。

3.常见问题

1. servlet的生命周期是怎么样的?

2. Servlet与JSP的异同

4.解决方案

1. servlet的生命周期是怎么样的?

Servlet生命周期分为三个阶段:

1,初始化阶段 调用init()方法

2,响应客户请求阶段  调用service()方法

3,终止阶段  调用destroy()方法

初始化阶段

1,Servlet容器启动时自动装载某些Servlet -loadon-startup-1-loadon-startup-

2,在Servlet容器启动后,客户首次向Servlet发送请求的时候

3,Servlet类文件被更新后,重新装载Servlet

2. Servlet与JSP的比较

Servlet与JSP有许多相似之处,都可以生成动态网页。

背景

Servlet体系是基于B/S架构开发web应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种web应用方案的。 当大量的B/S架构程序开发出来以后出现了很多问题:首先servlet类有大量冗余代码,其次是开发Servlet的没法做到有精美的页面效果。 所以sun提出将服务端代码添加在已经设计好的静态页面上,经过JSP容器对JSP文件进行自动解析并转换成Servlet类来交给web服务器运行。

创建方式: Servlet都是由JAVA程序代码构成,用于流程控制和事务处理,通过Servlet来生成动态网页很不直观。

而JSP由HTML代码和JSP标签构成,可以方便地编写动态网页.

编译: JSP修改后可以立即看到结果,不需要编译;

而Servelt缺需要编译。

转换: JSP是动态网页开发技术,是运行在服务器端的脚本语言,而Servlet是web服务器端编程技术。

所以JSP运行时就是转换为Servlet,也就是java程序来执行。

总结

JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。

Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。

5.编码实战

让我们来看看这个例子的代码。

注意事项: -scope>provided-/scope ,有一些jar包是在编译的时候不需要,但是在具体发布的时候却需要的jar包,只需要在所添加的依赖之下,添加scope属性,并定义为provided即可。 如果不这么做的话,Tomcat或者是Jetty就会编译报错,导致项目无法运行。

这是因为Tomcat7以及之前的编码方式都是iso8859-1 ,tomcat8以后默认编码格式开始改为utf-8;

这时候我们需要在页面进行设置,添加下列代码使得页面的编码方式变成utf-8.

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>

就可以将页面的获取内容改为UTF8,显示正常的数据。 但是在我们向服务器提交信息的时候,返回的信息依然会是iso8859-1, 这就需要我们在后台进行处理。这里就不仔细讲了,也不是什么很麻烦的事情。

6.扩展思考

1、为什么创建的servlet是继承自httpServlet,而不是直接实现Servlet接口?

2、servlet的生命周期中,可以看出,执行的是service方法,为什么我们就只需要写doGet和doPost方法呢?

7.参考文献

链接:http://www.cnblogs.com/whgk/p/6399262.html

作者:一杯凉茶

链接:https://baike.baidu.com/item/Response%E5%AF%B9%E8%B1%A1/7465134?fr=aladdin

作者:百度百科

8.更多讨论

感谢观看,如有出错,恳请指正.

BY:深圳分院 常雷雷