java_web 复习 2 jsp 与 servlet (2)

jsp JavaServer Pages

• 在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页

•Java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。

• 所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。 
JSP文件的基本结构
<%@ page contentType="text/html;charset=gb2312" %> 
<%@ page import="java.util.*“ %> 
... 
<HTML> 
  <BODY> 
其他 HTML 语言 
<% 
  符合JAVA 语法的 JAVA 语句 
%> 
 
  其他 HTML 语言 
 
  </BODY> 
</HTML>

 jsp servlet 对比

jsp
<%@ page import="java.util.*" %>
<%@ page contentType="text/htm
                  charset=gb2312" %> 
<HTML> 
  <BODY> 
    你好,今天是 
  <% 
    Date today=new Date(); 
  %> 
    <%=today.getDate()%>号, 
    星期<%=today.getDay()%> 
  </BODY> 
</HTML>
servlet
import java.util.*; 
 
response.setContentType("text/html; 
               charset=gb2312"); 
out = pageContext.getOut(); 
out.write(“\r\n\r\n<HTML>\r\n   
         <BODY>\r\n你好,今天是\r\n");  
Date today=new Date(); 
out.print(today.getDate()); 
out.write("号,星期"); 
out.print(today.getDay()); 
out.write(" \r\n  </BODY>\r\n</HTML>\r\n ")

JSP原始代码中包含了JSP元素和Template(模板)data两类  Template data指的是JSP引擎不处理的部分,即标记<%……%>以外的部分,例如代码中的HTML的内容等 ,这些数据会直接传送到客户端的浏览器 JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JAVA语法,否则会导致编译错误。

JSP语法分为三种不同的类型 

编译器指令(DIRECTIVE) 例如: <%@ page import=“java.io.*” %> 脚本语法(SCRIPTING) – “HTML注释”:<!— comments -->

“隐藏注释”:<%-- comments --%>

“声明”:<%! 声明; [声明; ] ... %> “表达式”: <%= 表达式 %>  后面不许加分号

“脚本段”:<% 代码 %>           后面要加分号动作语法(ACTION) 例如: <jsp:forward>,<jsp:getProperty>,<jsp:include>

编译器指令包括“包含指令”, “页指令”和“taglib指令”  它们包含在“<%@  %>”卷标里。两个主要的指令是page与include。 

include指令:向当前页中插入一个静态文件的内容。 JSP 语法格式如下:  <%@ include file="relativeURL" %> 或 <%@ include file="相对位置" %>

<html>  
  <head> 
  <title>test</title> 
  </head> 
  <body bgcolor="white">  
  <font color="blue">  
  The current date and time are  
<%@ include file=“peixun2.6.1.jsp" %>  
  </font> 
  </body> 
</html>
<%@ page import="java.util.*" %>  
<%=(new java.util.Date() ).toLocaleString() %>

<%@page  language="java" import="java.util.*,java.io.*" pageencoding="utf-8"%>表示当前页面的指 令,当前的页面所使用的语言为java 导入了java.util包 使用的编码格式是utf-8;

使用声明定义变量的时候<%! int a = 1;%> 转化为servlet的时候 转化为 成员变量 使用脚本段<% int a = 1;%>定义变量的时候转化为的是局部变量,一般都使用脚本段 不使用声明主要是因为servlet并发问题

对于servlet是单实例的,当被加载到内存中的时候就不会再生产同一个servlet对象了

JSP声明的格式: <%! int a = 3;%>,脚本段的形式: <% int b = 3;%>,当服务器将 JSP 转换为 Servlet 时,会将 JSP 中的声明转换为类的成员变量,而将脚本段转换为方法中的局部变量,Servlet 是单实例的,这样成员变量的值就只有一个,每个用户都会访问到它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。

转义符: 双引号  \“ ,单引号\’,反斜杠\\,回车\r,换行\n,制表符\t,退格 \b

动作语法包括<jsp:forward>,<jsp:include>,<jsp:getProperty>,<jsp:setProperty>和<jsp:useBean>。

<jsp:forward page={"relativeURL" | "<%= expression %>"} />

这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL。这个文件可以是JSP,或程序段

 <jsp:param  name="parameterName" value="{parameterValue  |  <%= expression %>}" />

向一个动态文件发送一个或多个参数,这个文件必须是动态文件。如果想传递多个参数,可以在一个JSP文件中使用多个“<jsp:param>”;“name”指定参数名,“value”指定参数值。

“<jsp:forward>”标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象。“<jsp:forward>”标签以后的代码,将不能执行。 

<%@ page contentType="text/html;charset=gb2312" %> 
<html> 
  <head> 
    <title>test</title> 
  </head> 
  <body> 
    <jsp:forward page="forwardTo.jsp"> 
      <jsp:param name="userName" value="riso"/> 
    </jsp:forward> 
  </body> 
</html>
<%@ page 
contentType="text/html;charset=gb2312" %> 
<!--forwardTo.jsp--> 
<% 
  String 
useName=request.getParameter("userName"); 
  String outStr= "谢谢光临!"; 
  outStr+=useName; 
  out.println(outStr);   
%>

 <jsp:include page="{relativeURL | <%=expression%>}"   flush="true" />

page="{relativeURL | <%=expression %>}"  参数为一相对路径,或者是代表相对路径的表达式。

“<jsp:param>”用来传递一个或多个参数到指定的动态文件,能在一个页面中使用多个“<jsp:param>”来传递多个参数,

<html> 
  <head> 
    <title>peixun.2.10.jsp</title> 
  </head> 
  <body>   
  <jsp:include page="peixun2.10.1.jsp" > 
  <jsp:param name="User" value="HiFi King" /> 
  </jsp:include>  
  </body> 
</html>

 peixun2.10.1.jsp

<% 
  String username; 
  username=request.getParameter("User"); 
  out.println("Username is "+username+"<br>"); 
%>

相关推荐