31、JAVA_WEB开发基础之servlet(2)

使用servlet需要依赖jar包:servlet-api.jar,下边介绍一下关于servlet的一些api

Servlet接口

package javax.servlet;

import java.io.IOException;

public interface Servlet {

    //在servlet被载入后和实施服务前由servlet引擎调用。如果init()
    //产生溢出UnavailableException,则servle退出服务。
    public void init(ServletConfig config) throws ServletException;

    //返回传递到servlet的init()方法的ServletConfig对象  
    public ServletConfig getServletConfig();
	
    // 处理request对象中描述的请求,使用response对象返回请求结果 
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException;

    //返回描述servlet的一个字符串 
    public String getServletInfo();

    //当servlet将要卸载时由servlet引擎调用      
    public void destroy();
}

下边介绍一下一些与servlet相关的其他对象:

请求对象:javax.servlet.ServletRequeset,封装了客户端的请求信息,与协议无关,可用于获取请求中的属性、参数,获取

请求的流对象、获取编码格式、获取客户端地址等功能。可通过getParameter方法获取请求中封装的参数。

响应对象:javax.servlet.ServletResponse,用于将处理的结果返回给发出请求的客户端,可用于作为输出流及其内容类型和长

度的包容器。可以以流的方式将返回信息写出到客户端。

配置参数对象:javax.servlet.ServletConfig,通过调用getServletConfig()方法来获取ServletConfig对象,通过此对象可以获取

到servlet的一些初始化配置参数。

web应用对象:javax.servlet.ServletContext,通过ServletConfig对象来获取ServletContext,它代表了当前的web应用,通过

它可以获取到当前web应用的各方面信息。

下边介绍针对Http协议开发的一些事项

在代码层面说,Servlet并没有遵从任何网络传输协议,而我们平时开发时请求信息需遵循Http协议,所以Servlet针对Http协议扩

展了一些专门针对Http协议开发的API,它们在java.servlet.http包下,下边详细介绍。

针对Http协议开发时,直接继承HttpServlet类即可,需根据自己的业务来对doPost、doGet方法进行重写,使用的都是http包下类

中的方法,开发比较容易,这是需要用到的请求对象则是HttpServletRequest,响应对象是HttpServletResponse,等等。这里需

要介绍一下遵循Http协议开发时一些特殊的地方:HttpSession、get和post请求、转发和重定向。

会话对象:javax.servlet.http.HttpSession,因为http协议是无状态的协议,为了保证数据的一致性,HttpSession接口被

Servlet引擎用来实现HTTP客户端和HTTP会话两者的关联,用来在无状态的HTTP协议下越过多个请求页面来维护状态和识别用

户。此会话对象通过HttpServletRequest对象获取。

GET和POST请求:

GET方式请求:超链接中的请求、直接在地址栏中使用?的方式连接参数的请求、表单设置成get方式时的请求。

POST方式请求:ajax中设置成post方式的请求、表单中设置成post方式的请求。

两者的不同点如下:

1、提交形式不同:GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),POST提交:把提交的数据放

置在是HTTP包的包体中。因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。也因此GET方式的

请求不安全。

2、传输数据的大小不同: HTTP协议并没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。对于get

请求特定浏览器和服务器对URL长度有限制;而对POST请求理论上数据不受限。但实际各个WEB服务器会规定对post提交数据

大小进行限制get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。

3、 服务器端获取数据的方式不同:对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用

Request.Form获取提交的数据。

转发和重定向:请求的两种处理方式。

转发的实现:先通过request的getRequestDispatcher得到RequestDispatcher对象,然后用RequestDispatcher的forward方法进

行转发

重定向的实现:直接调用 response的 sendRedirect 方法完成重定向

两种方式的区别:

1、本质区别:请求的转发只发送了一次请求,而重定向发送了两次请求

2、地址栏的地址的变化:转发仍然是第一次发送请求的地址,而重定向是第二次发送请求的地址

3、request对象的变化:转发中,最终servlet中的requeset对象和第一次请求的那个request是同一个对象;重定向中,最终的

servlet中的request对象和第一次请求的那个request对象不是同一个对象

4、转发只能转发给当前web资源(另一个servlet),而重定向可以到任何资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值