Servlet应用

 

,Servlet的应用

•         Servlet是一种独立于平台和协议服务器端的Java应用程序,可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。

•         本章主要内容:理解HTTP协议、Web应用程序开发过程、Servlet的运行原理、Servlet的生命周期等。

•         当今越来越多的应用程序迁移到Web平台上。由于没有平台的限制和安装的要求,所以Web应用程序对用户非常有吸引力,并且可以让用户花更少的精力和时间去完成事情。

•         Web应用程序简介

•         应用程序:指允许用户执行特定任务的软件程序,主要分为桌面应用程序和Web应用程序两种类型。

•         桌面应用程序(Desktop Application):一般是指采用客户机/服务器结构(Client/Server)的应用程序。

二,Web应用程序简介

–       Web应用程序(Web Application)

•         Web应用程序一般是指采用浏览器和服务器结构(Browser/Server,简称B/S结构)的应用程序。

•         Web应用程序由Web服务器和Web客户端组成。

三,HTTP 协议

•         Web客户端和Web服务器之间的通信依赖于HTTP协议,该协议支持简单的请求和响应会话。客户发送一个HTTP请求,服务器会用一个HTTP响应做出应答。

•         Web浏览器除了可以从本地硬盘上打开网页文档外,还可以使用HTTP网络协议从网络上的Web服务器上获取网页文档的内容。

•         当用户在浏览器地址栏中输入网址或通过超链接访问目的网站时,都向目标主机(web服务器)发送一个http请求。http定义的信息交互处理由以下4步组成:

•         浏览器与Web服务器建立连接

•         浏览器向服务器提出请求

•         如果请求被接受,则服务器送回响应,响应信息中包括状态码和所需要的文件。

•         浏览器和web服务器断开连接。

•         HTTP请求

•         GET请求

•         在Google的搜索栏中搜索“java”关键字的相关内容时,浏览器发送的就是HTTP GET请求。

•         用GET发送的参数数据会追加到URL后面,在浏览器地址栏中显示出来,所以发送的数据会完全暴露(不能把口令或其他敏感数据用GET请求来发送)。

•         GET请求中查询字符串的长度限制在240~255个字符

•         POST请求

•         打开“www.javaeye.com”网站进行用户登录

•         POST请求数据在地址栏内不可见,相对比较安全

•         POST请求提交的数据在理论上没有长度的限制

注意:在我们编程时,出于对数据安全性考虑,在没有明确要求用GET方法提交数据的时候,尽可能使用POST方法。

四,重定向和请求分派

•         重定向

–       HttpServletRequest接口提供的sendRedirect()方法用于生成302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的URL,其完整的定义语法如下:

•         public void sendRedirect(String location) throws IOException;

–       其中的location参数指定了重定向的URL,它可以使用绝对URL和相对URL,Servlet容器会自动将相对URL转换成绝对URL后,再生成location头字段。

•         示例:重定向的应用--客户端发出URL为“http://localhost:8080 /jsp_04_servlet/servlet1?name=test”的请求,服务器用“Servlet1”来处理这个请求,在处理方法中通过sendRedirect重定向到第二个Servlet,即“Servlet2”上。

•         把这个Web应用程序部署到Web容器Tomcat中,启动Tomcat。然后按如图4.13所示在浏览器地址栏中输入:http://localhost:8080/jsp_04_servlet/servlet1?name=test

•         请求之后,服务器返回响应给客户端浏览器。

•         请求分派

–       Servlet API中定义了一个RequestDispatcher接口,俗称请求分派器。它定义了如下两个方法:

•         public void forward(ServletRequest request, ServletResponse response)

•              throws ServletException,IOException;

•         public void include(ServletRequest request, ServletResponse response)

•              throws ServletException,IOException;

–       获取RequestDispatcher实例的方式主要有两种:

•         调用ServletContext接口提供的getRequestDispatcher(String url)方法。

•         调用ServletRequest接口提供的getRequestDispatcher(String url)方法。

•         RequestDispatcher接口的forward()方法用于将请求转发到RequestDispatcher实例封装的资源,由新的资源对客户端作出响应,它的原理可以用图4.16来表示。

•         同样使用“http://localhost:8080/jsp_04_servlet/servlet1?name=test”路径访问这个Servlet1,客户端浏览器将得到如图4.17所示的效果。

•         重定向和请求分派的比较
HttpServletResponse的sendRedirect()方法实现的重定向和RequestDispatcher的forward()方法实现的请求转发的比较:

–       请求分派只能将请求转发给同一个Web应用中的其他组件;而重定向不仅可以定向到当前应用程序中的其他资源,也可以重定向到其他站点的资源上。

–       重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

五,ServletConfig和ServletContext

•         ServletConfig

–       如何给Servlet类配置初始化参数

–       如何在Servlet类中获取它的初始化参数值

•         ServletContext

–       如何配置Web应用上下文初始化参数

–       如何在Servlet类中获取Web应用上下文的初始化参数值

•         ServletContext的其他用途

–       public void setAttribute(String name, Object obj):根据指定名name把对象obj存放到应用上下文范围中。

–       public Object getAttribute(String name):根据指定名从应用上下文范围中获取到该属性对象。

–       public void removeAttribut(String name):根据指定名从应用上下文范围中移除该属性。

•         ServletConfig和ServletContext的区别

–       整个Web应用只有一个ServletContext,在部署Web应用的时候,容器会建立这一个ServletContext对象,这个上下文对Web应用中的每个Servlet和JSP都可用。

–       Web应用中的各个Servlet都有自己的ServletConfig,它只对当前Servlet有效。

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭