JSP(java服务器页面)

来源:互联网 发布:淘宝怎么搜发票 编辑:程序博客网 时间:2024/06/02 02:01

语言标准编辑

句法
一个JSP页面可以被分为以下几部份:
  • 静态数据,如HTML
  • JSP指令,如include指令
  • JSP脚本元素和变量
  • JSP动作
  • 用户自定义标签
静态数据
静态数据在输入文件中的内容和输出给HTTP响应的内容完全一致。此时,该JSP输入文件会是一个没有内嵌JAVA或动作的HTML页面。而且,客户端每次请求都会得到相同的响应内容。
JSP指令
JSP指令控制JSP编译器如何去生成servlet,以下是可用的指令:
  • 包含指令include –包含指令通知JSP编译器把另外一个文件完全包含入当前文件中。效果就好像被包含文件的内容直接被粘贴到当前文件中一样。这个功能和C预处理器所提供的很类似。被包含文件的扩展名一般都是"jspf"(即JSPFragment,JSP碎片):
<%@ include file="somefile.jsp" %>
  • 页面指令page –页面指令有以下几个选项:
import
使一个JAVA导入声明被插入到最终页面文件。
contentType
规定了生成内容的类型。当生成非HTML内容或者当前字符集character set并非默认字符集时使用。
errorPage
处理HTTP请求时,如果出现异常则显示该错误提示信息页面。
isErrorPage
如果设置为TRUE,则表示当前文件是一个错误提示页面。
isThreadSafe
表示最终生成的servlet是否安全线程(threadsafe)。
<%@ page import="java.util.*" %> //example import导入样例<%@ page contentType="text/html" %> //example contentType页面类型样例<%@ page isErrorPage=false %> //example for non error page无错页面样例<%@ page isThreadSafe=true %> //example for a thread safe JSP安全线程JSP样例
注意:在同一个JSP文件中只有"import"导入页面指令可以被多次使用。
  • 标签库指令taglib –标签库指令描述了要使用的JSP标签库。该指令需要指定一个前缀prefix(和C++的命名空间很类似)和标签库的描述URI:
<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>
JSP脚本
标准脚本变量
以下是永远可用的脚本变量:
  • out – JSPWriter用来写入响应流的数据
  • page – servlet自身
  • pageContext –一个PageContext实例包括和整个页面相联系的数据,一个给定的HTML页面可以在多个JSP之间传递。
  • request –HTTP request对象
  • response –HTTP response对象
  • session –
脚本元素
有三个基本的脚本元素,作用是使JAVA代码可以直接插入servlet.
  • 一种是声明标签,在JAVA SERVLET的类体中放入一个变量的定义。静态的数据成员也可以如此定义。
    • <%! int serverInstanceVariable = 1; %>
  • 一种是脚本标签,在JAVA SERVLET的类的_jspService()方法中放入所包含的语句。
    • <% int localStackBasedVariable = 1; out.println(localStackBasedVariable); %>
  • 一种是表达式标签,在JAVA SERVLET的类中放入待赋值的表达式,表达式注意不能以分号结尾。
    • <%= "expanded inline data " + 1 %>
JSP动作
JSP动作是一系列可以调用内建于网络服务器中的功能的XML标签。JSP提供了以下动作:

jsp:include
和子过程类似,JAVA SERVLET暂时接管对其它指定的JSP页的请求和响应。当处理完该JSP页后就马上把控制权交还当前JSP页。这样JSP代码就可以在多个JSP页中共享而不用复制。
jsp:param
可以在jsp:include, jsp:forward或jsp:params块之间使用。指定一个将加入请求的当前参数组中的参数。
jsp:forward
用于处理对另一个JSP或SERVLET的请求和响应。控制权永远不会交还给当前JSP页。
jsp:plugin
Netscape Navigator的老版本和Internet Explorer使用不同的标签以嵌入一个applet。这个动作产生为嵌入一个APPLET所需要的指定浏览器标签。
jsp:fallback
如果浏览器不支持APPLETS则会显示的内容。
jsp:getProperty
从指定的JavaBean中获取一个属性值。
jsp:setProperty
在指定的JavaBean中设置一个属性值。
jsp:useBean
创建或者复用一个JavaBean变量到JSP页。




HTTP Status 500 - /JavaServerPage.jsp(2,18) quote symbol expected 


TTP Status 500 - org.apache.jasper.JasperException: Unable to load class for JSP


2015-3-28 17:48:59 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: 


An error occurred at line: 75 in the jsp file: /JavaServerPage.jsp
The method getDate() is undefined for the type JavaServerPage_jsp


2015-3-28 17:50:47 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: org.apache.jsp.JavaServerPage_jsp
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)




JSP  代码body 部分

  info : <br>
 
 localip:<%=request.getRemoteAddr() %><br>
 
 hostname:<%=request.getRemoteHost() %><br>
 
 requestport:<%=request.getRemotePort() %><br>
 
 server address:<%=request.getServerName() %><br>


 serverport:<%=request.getServerPort() %><br>
 
 request method:<%=request.getMethod() %><br>
 
 requst url:<%=request.getRequestURI() %><br>
 
 request protocol:<%=request.getProtocol() %><br>
 receive custome info url:<%=request.getServletPath() %><br>
 
 request info length:<%=request.getContentLength()%><br>
 
 request query string:<%=request.getQueryString()%><br>
 
 
 <div align="center">
<table>
<tr>
<th>姓名</td>
<td>id</td>
</tr>
                <%
int i;
String color1="9cf";
String color2="8c3";
for(i=1;i<=10;i++)
{

String color="";
if(i%2==0) color=color1;
else color=color2;
out.println("<tr bgcolor="+color+">");
out.println("<td>姓名"+i+"</td>");
out.println("<td>"+i+"</td>");
out.println("</tr>");
}
%>
</table>

</div>


 <div  align="left">
     <p><%=new Date() %></p>
 </div>
 
 <div>
   <!-- for loops-->
 <%


 for(i=1;i<10;i++)
 {
out.println(i*i);
 } 
 %>
 


 



0 0
原创粉丝点击