Servlet编程入门

Servlet基础:

1.什么是Servlet:

Java Servlet是用Java编写的服务器端程序,运行在Web服务器或应用服务器上。它是来自Web浏览器或其他HTTP客户端的请求与HTTP服务器上的数据库或应用程序之间的中间层。

2.Servlet的工作流程:

 1.客户端发送请求至服务器
 2.服务器启动并调用Servlet
 3.Servlet根据客户端请求生成响应内容并将其传给服务器
 4.服务器把响应返回客户端

3.Servlet与JSP:

JSP是Servlet的扩展,JSP使用HTML的书写格式,在适当的地方加入Java代码片段。JSP首次被访问的时候被应用服务器转换为Servlet,在以后的运行中,容器直接调用这个Servlet,而不再访问JSP页面。JSP实质上仍然是Servlet

4.Servlet的生命周期:

Servlet 运行于应用服务器上的Web容器中。应用服务器中用于管理Java组件的部分被称为容器。Servlet一旦被加载,一般不会从容器中删除,直至应用服务器关闭或重新启动。所以第一次访问Servlet所用的时间要多于以后访问Servlet所用的时间。当容器做内存回收的动作时,Servlet有可能被删除。

*Servlet生命周期可被定义为从创建直到销毁的整个过程:

(1)加载Servlet类,创建该类的实例
(2)Servlet通过调用init()方法进行初始化
(3)Servlet通过调用service()方法来处理客户端请求
(4)Servlet通过调用的dstory()方法终止(结束)
(5)最后,Servlet有JVM的垃圾回收器进行垃圾回收

Servlet在被用户第一次调用时创建,但是也可以被指定在服务器第一次启动时加载。init() 方法加载默认数据或者链接数据库,以用于Servlet的整个生命周期。init()方法只在第一次创建Servlet是被调用,在后续用户请求是不再调用

service()方法是执行实际任务的主要方法。容器调用该方法处理来自客户端(浏览器)的 请求,并把格式化的响应写回给客户端。

destory()方法只在Servlet生命周期结束时被调用一次。当服务器关闭,或者Servlet空闲超过一定时间后,调用destory()方法退出。可以再destory()方法中关闭数据库连接、停止后台线程、把cookie列表或点击计数器写入磁盘,并执行其他类似的清理活动。然后,Servlet对象被标记为垃圾回收。但要注意的是,当服务器因为出现意外而被关闭时,不能保证destory()方法被调用。

doGet()、doPost():

这两个方法是响应HTTP标准请求的常用方法,我们需要重写这两个方法,以实现对HTTP请求的动态响应。它们都是有service()方法调用的。如果Servlet对GET 和POST 两种请求采用相同的处理方式,可以直接覆盖service()方法。但不推荐这样做,以免带来意想不到的问题。Servlet也可以重写init()方法和destory()方法以分别实现初始化和析构。

doGet()和doPost()方法都包含了两个参数:HttpServletRequest和HttpSrevletResponse,前者提供访问客户端请求信息的方法,如表单数据、HTTP请求头等。后者提供了用于指定HTTP应答状态、应答头的方法,还提供了用于向客户端发送数据的printWriter对象。该对象的println方法可用于生成发送客户端的页面。

处理客户端输入:

GET方法把当前请求中的参数加到页面URL中,页面和已编码的信息中间用“?”字符分隔,产生一个字符串,出现在浏览器的地址栏中。如果要向服务器发送的信息是敏感信息,切勿使用GET方式提交,应用POST方式提交。

POST方法打包信息的方式与GET方法相同,但是POST会把用户输入的信息作为一个单独的消息,以标准输出形式传递到服务器,Servlet用doPost()方法处理这种类型的请求。
request.getParameter()获取表单参数值
request.getParameterValues()得到一个字符串数组(针对多选框、复选框等控件使用)
request.getParameterNames()得到当前请求中所有参数的完整列表

获取Servlet参数配置:

为了提高Servlet的可移植性,可以把有些信息放在Servlet的配置文件中,而不是Servlet的代码中,以避免不必要的程序编译和部署。通过配置文件中的信息来初始化Servlet可以有效避免硬编码,提高可移植性。
Servlet配置参数由ServletConfig对象表示,在Servlet被实例化后,可以在init(ServletConfig config)方法中(init()的重载形式)获取ServletConfig对象,或者通过getServletConfig()方法直接获取

猜你喜欢

转载自blog.csdn.net/deskDopa/article/details/80649123
今日推荐