大家好,我是IT修真院深圳分院的学员,一枚正直善良的JAVA程序员。
1.背景介绍
Servlet(ServerApplet)是JavaServlet的简称,一般称为小服务程序或服务连接器,是一个用Java编写的服务器端程序。
主要功能在于处理请求和发送响应、交互式地浏览和修改数据,生成动态Web内容,甚至可以说Servlet是为了解决实现动态页面而衍生的程序。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,
人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。
2.知识剖析
Servlet的四个主要内置对象
ServletConfig对象
ServletContext对象
request对象
Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。
request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。同时也会向服务器或者浏览器定义自己需要的返回的东西。
response对象
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.编码实战
这是因为Tomcat7以及之前的编码方式都是iso8859-1,tomcat8以后默认编码格式开始改为utf-8;
这时候我们需要在页面进行设置,添加下列代码使得页面的编码方式变成utf-8.
<%@ pagecontentType="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.更多讨论
jsp中的内置对象在servlet中对应的是什么?
servlet有九大内置对象,其中对应的关系如下:
1、out 来源于Java.io.Writer类,它用于发送输出流到客户端。
2、request 来源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。
3、response 来源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端。
4、pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
5、session 来源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。
6、application 来源于javax.servlet.ServletContext。
7、config 来源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。
8、page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。
9、exception 用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。
2.关于程序Servlet的乱码关系?
spring早就已经做好了对应的处理,只需要在程序中加入z:
3.Tomcat与Servlet
PPT链接:戳这里看PPT
腾讯视频:腾讯视频
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧
网友评论