php和jsp简析

日期:2013-12-09点击次数:9240

       Php:超文本预处理器(Hypertext Preprocessor,递归命名),是一种运行在服务器端的脚本语言,几乎与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等),可在不同的平台上运行,如:windows、Linux、Unix,是一款免费的开源软件.
       Jsp:Java Server Pages一种动态网页技术标准,在传统的html网页中加入java程序片段和jsp标签,就构成了JSP网页,java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。支持多平台,可以几乎在所有服务器上运行,所有程序操作都在服务器端执行,大大降低了对浏览器的要求.

PHP介绍:
Php文件通常包含html标签,就像一个html文件+php脚本代码,如下一段简单的php脚本:
<html>
 <body>
<?php echo=”Hello World”; ?>
 </body>
</html>
Php特点:
(1) PHP 的脚本块以 <?php 开始,以 ?> 结束,可以把 PHP 的脚本块放置在文档中的任何位置;
(2) PHP 中的每个代码行都必须以分号结束. 分号是一种分隔符,用于把指令集区分开来;
(3) 输入文本的基础指令包含两种:echo和print,(jsp使用out.pint())

Php脚本可以包含变量、字符串、运算符、if判断、循环、数组等,使用方法和java原理基本相同(写法有一定差别),不再一一列举,主要介绍一下php的cookie和session的使用(jsp的相关使用见下面)
(1)Php cookie常用于识别用户,cookie 是服务器留在用户计算机中的小文件,每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
       1. setcookie() 函数用于设置 cookie
          Eg:
          <?php
          setcookie("user", "Alex Porter", time()+3600);
          ?>
      2. 取回cookie的值使用$_COOKIE
         <?php 
         echo $_COOKIE["user"];
         print_r($_COOKIE);
         ?>
         在下面的例子中,我们使用 isset() 函数来确认是否已设置了 cookie
        <html >
        <body>
        <?php 
        if (isset($_COOKIE["user"]))
        echo “Welcome” . $_COOKIE["user"] . "!<br />";
        else
        echo "Welcome guest!<br />";
        ?>
        </body>
        </html>
    3. 删除cookie:当删除 cookie 时,您应当使过期日期变更为过去的时间点
       <?php
       setcookie ("user", "", time()-3600);
       ?>

(2) php session
 用户存储有关用户回话的信息,或更改用户回话的设置。Session变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用
    1. 开启session
       <?php session_start(); ?>
       <html>
       <body>
       </body>
       </html>
       session_start() 函数必须位于 <html> 标签之前
      上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID

   2. 存储session
      存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量
     <?php
     session_start();
     $_ SESSION[‘views’]=1;
     ?>

     <html>
     <body>
     <?php
     Echo “Pageviews=”.$_ SESSION[‘view’];
     ?>
     </body>
     </html>

   3. 关闭session:可以使用 unset() 或 session_destroy() 函数
      unset($_SESSION['views']);
      session_destroy();


JSP介绍:
一个Jsp页面大概可以分为五部分:静态数据html、jsp指令、jsp脚本元素和变量、jsp动作和用户自定义标签
(1) 静态数据:静态数据再输入文件中的内容和输入给http相应的内容完全一致,该jsp此时没有内嵌java代码,客户端每次请求都会得到相同的相应内容。
(2) Jsp指令:
     1. 包含指令include –包含指令通知JSP编译器把另外一个文件完全包含入当前文件中
         Eg: <%@ include file=”common.jsp” %>
     2. 页面指令page

        import 使一个JAVA导入声明被插入到最终页面文件。
        contentType 规定了生成内容的类型。当生成非HTML内容或者当前字符集character set并非默认字符集时使用。
        errorPage 处理HTTP请求时,如果出现异常则显示该错误提示信息页面。
        isErrorPage 如果设置为TRUE,则表示当前文件是一个错误提示页面。
        isThreadSafe 表示最终生成的servlet是否安全线程(threadsafe)。

       Eg:  <%@page  import=”java.util.*”%>
              <
%@page  contentType=”text/html”%>
              <
%@page  errorPage=”true” %>
              <
%@page  iserrorPage=”false” %>
              <
%@page  isThreadSafe
=”true” %>
    3. 标签库指令taglib –描述要使用的标签库
       <%@ taglib  prefix=”myprefix” uri=” taglib/mytag.tld”%>


(3) 脚本变量:
  Out -- JSPWriter用来写入响应流的数据
  Page – servlet自身
  pageContext -- 一个PageContext实例包括和整个页面相联系的数据,一个给定的HTML页面可以在多个JSP之间传递
  request – http  request 对象
  response – Http response 对象
  session  -- session对象
  脚本元素有三种基本的脚本元素:声明标签、脚本标签和表达式标签
(4) Jsp动作:
是一系列可以调用内建于网络服务中的功能的xml标签

Jsp的内置对象包含8个:

Request 
request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求

response
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效

session
1. 什么是session:从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象
2. session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象
3. session对象存在一定时间过期问题,所以存在session中的名值对会在一定时间后失去,可以通过更改session有效时间来避免这种情况。同时编程时尽量避免将大量有效信息存储在session中,request是一个不错的替代对象

application
1. 什么是application
服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
2. application对象常用方法
public void setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字;
public Object getAttribute(String key): 获取application对象中含有关键字的对象。

out
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

page
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

config
config 对象的主要作用是取得服务器的配置信息。通过 pageContext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

exception
java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。

pageContext
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。


综上所属,php和jsp的异同点总结如下:
相同点:
1. 支持多平台,可以运行在UNIX、Linux或Windows操作系统下, 可以在几乎所有的服务器系统上运行;
2. 都嵌套在html静态页面中使用,再加上自己的规范脚本可以给网页增加许多动态效果,使用户使用起来更为方便,功能更加完善,效果更加绚烂;
3. Php中的变量、循环、数组等和java中的变量、循环、数组使用原理一样,jsp也采用java技术,而JAVA作为一个成熟的跨平台的程序设计语言,几乎可以实现任何想要实现的功能;

不同点:
1. 工作原理不同:
       Jsp程序是html代码中嵌入java代码,因此具有java“一次编写,各处运行”的特点。当服务器端第一次接收到jsp程序的请求时,会把jsp程序转换成servlet类,然后把jsp程序编译成相应的class文件,再创建servlet的一个实例(符合servlet生命周期特点),不同的请求会创建不同的线程,因此大大降低了对系统资源的需求,提高了系统的并发量和相应时间,但第一次调用时由于需要转换和编译相应会有一些时间上的延迟;php是一种跨平台的服务器端嵌入式脚本语言,当浏览器把php页面发送给web服务器,服务器会把接收到的请求发给php解释模块进行解释,此时产生相应的html文件,服务器会把html文件返回给浏览器显示相应的结果,由于php运行在服务器端,所以程序再大,结构再复杂,都不会影响客户端的运行速度。
2. 对mysql的数据连接比较:
       Jsp利用jdbc来支持大量的数据库类型,完成与数据库数据的交互。Jsp要实现与数据的连接必须加载Driver类,然后使用jdbc的驱动程序管理器(DriverManager)类建立数据库和驱动程序之间的连接,再通过connect接口实现和数据的连接;php是内置对mysql数据库的支持的,通过两个接口函数(分别是connect和pconnect)实现与数据库建立连接,然后进行一系列操作,所以php程序访问mysql数据库的速度相对比较快。




 

软件部         王荣荣

姓名:
性别:
电话:
E-mail
问题:
问题描述: