分享人:深圳-常雷雷
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
Servlet(Server Applet)是Java Servlet的简称,一般称为小服务程序或服务连接器, 是一个用Java编写的服务器端程序。
主要功能在于处理请求和发送响应、交互式地浏览和修改数据,生成动态Web内容, 甚至可以说Servlet是为了解决实现动态页面而衍生的程序。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。
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不存在,则创建它。 若存在,则将自动进行更新。结果返回给客户端浏览器。
1. servlet的生命周期是怎么样的?
2. Servlet与JSP的异同
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语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。
让我们来看看这个例子的代码。
注意事项: -scope>provided-/scope ,有一些jar包是在编译的时候不需要,但是在具体发布的时候却需要的jar包,只需要在所添加的依赖之下,添加scope属性,并定义为provided即可。 如果不这么做的话,Tomcat或者是Jetty就会编译报错,导致项目无法运行。
这时候我们需要在页面进行设置,添加下列代码使得页面的编码方式变成utf-8.
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
就可以将页面的获取内容改为UTF8,显示正常的数据。 但是在我们向服务器提交信息的时候,返回的信息依然会是iso8859-1, 这就需要我们在后台进行处理。这里就不仔细讲了,也不是什么很麻烦的事情。
1、为什么创建的servlet是继承自httpServlet,而不是直接实现Servlet接口?
2、servlet的生命周期中,可以看出,执行的是service方法,为什么我们就只需要写doGet和doPost方法呢?
链接:http://www.cnblogs.com/whgk/p/6399262.html
作者:一杯凉茶
链接:https://baike.baidu.com/item/Response%E5%AF%B9%E8%B1%A1/7465134?fr=aladdin
作者:百度百科
感谢观看,如有出错,恳请指正.
BY:深圳分院 常雷雷