java servlet 和jsp_Java Servlet和jsp

本文详细介绍了Servlet与JSP这两种服务器端技术的区别与联系。包括Servlet的生命周期、JSP的工作原理及其内置对象等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet,通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端的请求。

Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

Servlet是一种比JSP更早的动态网页编程技术。在没有JSP之前,Servlet也可同时充当视图层、业务逻辑层及持久层角色。

JSP(Java Server Pages):是一种实现普通静态HTML和动态HTML混合编码的技术。

在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容,并且将结果以HTML(或者XML)页面的形式发送回浏览器。

一个JSP文件其实也是一个Servlet,当一个JSP文件第一次被请求时,JSP引擎把该JSP文件解释转换为Servlet。

JSP并没有增加任何本质上不能用Servlet实现的功能。在JSP中编写静态HTML更加方便,不必再用 println语句来输出每一行HTML代码。

主要区别:

1> JSP以文件名称为请求地址,而Servlet需要配置映射地址。

2> Servlet中没有内置对象,JSP中友内置对象。

3> JSP更偏向于页面展示,而Servlet更偏向于业务处理。

JSP九大内置对象:

1> page对象

页面对象,页面上下文对象,在当前页面有效。

2> request对象

一个请求有效。该对象封装了表单提交的信息和get传递的信息,通过调用该对象相应的方法可以获取封装的信息。

3> session对象

一个会话有效。可以完成会话期的管理。

4> appliaction对象

服务器启动后就产生了这个application对象。

5>response对象

对客户的请求做出动态的响应,向客户端发送数据。

6> cookie对象

cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户电脑上保存信息并且随后再取回它。

7>out对象

out对象时一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。

8> config对象

配置对象。

9> exception对象

在处理异常的网页中可以直接访问exception隐式对象。

Servlet的生命周期:

1> 初始化

当web应用启动时,servlet容器会调用servlet的init()方法。servlet中有俩个init()方法,一个带有参数,一个不带有参数。原因是:带参数的init()方法,需要调用父类的init()方法,否则就报错,设计者为了程序员的疏忽,而扩展了一个不带参数的init()方法。

根据启动级别的不同初始化的阶段也不相同,配置了启动级别,在服务器启动时,就初始化;如果没有配置,当第一个请求时,进行初始化。

初始化时,可以加载该servlet配置的参数,即使用标签init-param配置的参数。

servlet只初始化一次,也就是说是单例的。

2> 运行

当客户端相应请求时,调用servlet中相应的方法。

doGet()方法,处理get请求。

doPost()方法,处理post请求。

其他doDelete()、doHead()、doOptions()、doPut()和doTrace()方法,还没有应用,为扩展而预留出来的。

3> 销毁

当web应用终止时,servlet容器会调用destory()方法。然后销毁servlet对象。

package com.nice;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class NiceServlet extends HttpServlet {

private static final long serialVersionUID = -2725864234106838841L;

@Override

public void init(ServletConfig config) throws ServletException {

super.init(config);

}

@Override

public void init() throws ServletException {

super.init();

}

@Override

public void destroy() {

super.destroy();

}

@Override

protected void doDelete(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doDelete(req, resp);

}

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doGet(req, resp);

}

@Override

protected void doHead(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doHead(req, resp);

}

@Override

protected void doOptions(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doOptions(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doPost(req, resp);

}

@Override

protected void doPut(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doPut(req, resp);

}

@Override

protected void doTrace(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.doTrace(req, resp);

}

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

super.service(req, resp);

}

@Override

public void service(ServletRequest sreq, ServletResponse sresp)

throws ServletException, IOException {

super.service(sreq, sresp);

}

}

配置Servlet(web.xml):

NiceServlet

com.nice.NiceServlet

init_name

init_value

1

NiceServlet

/servlet

init-param: 初始化参数。

load-on-startup:启动级别。当值大于等于0,时,表示启动时,初始化该servlet。

url-pattern:servlet的请求地址,可以配置*号。如: *.do,可以匹配:前边是任何字符+"."+do的请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值